コンテナの一連の動作: container run
docker container run [イメージ名:タグ名]
でコンテナを作成することができます。
今回は
docker container run --name ubuntu_sample ubuntu:18.04
としてみましょう。
すると、一瞬の間をおいて実行が終了してしまいます。
これは、docker container runコマンドでは
- イメージからコンテナを作成(create)
- コンテナを起動(start)
- コンテナ上で指定されたコマンドを実行(exec)
- コンテナを終了(stop)
という流れでコマンドが実行されるからです。
コンテナの管理
では、再度 ubuntu_sample コンテナを立ち上げて作業してみましょう。
docker container run -it --name ubuntu_sample ubuntu:18.04
すると
docker: Error response from daemon: Conflict. The container name "/ubuntu_sample" is already in use by container "[コンテナID]". You have to remove (or rename) that container to be able to reuse that name.
というメッセージが表示され、コンテナの作成に失敗します。
これは、「すでにubuntu_sampleというコンテナが存在しているから、同名のコンテナは作成できないよ」というメッセージです。
そのため、
- すでに作成されたコンテナを再度起動して利用する
- 以前に作成されたコンテナを削除してから、新しく立ち上げる
上記のいずれかの対策を取る必要があります。
一見1つ目の方法が良さそうなのですが、今回は毎回新しいコンテナを使えるように2の方法を利用します。
まず、
docker container rm ubuntu_sample
として実行し、ubuntu_sampleコンテナを削除します。
続いて、
docker container run --rm --name ubuntu_sample ubuntu:18.04
上記のコマンドを実行します。
--rm のオプションがつくことで、
- イメージからコンテナを作成(create)
- コンテナを起動(start)
- コンテナ上で指定されたコマンドを実行(exec)
- コンテナを終了(stop)
- コンテナを削除(rm) ← 追加!
という流れで、コンテナの停止後自動的にコンテナの削除までを行なってくれるようになります。
コンテナの実行終了時に、自動的にコンテナが破棄されるようになるため、次回以降は手動でのコンテナ破棄は不要になります。
コンテナ上でのコマンド実行
runコマンドを利用すれば、コンテナ上でのコマンド実行も1行で簡単に行うことが可能です。
では、
docker container run --rm --name ubuntu_sample ubuntu:18.04 echo Hello
としてみましょう。作成したコンテナで、echo Helloが実行され、画面上にHelloと出力されます。
同様に
docker container run --rm --name ubuntu_sample ubuntu:18.04 cat /etc/os-release
とすると、今回ダウンロードしたイメージのOSのバージョンの詳細を確認することが可能です。
コンテナにログインする
指定したコマンドを実行するだけでなく、ターミナルを開いてコマンドを実行することも可能です。
では、名前を指定したコンテナを立ち上げ、そのままターミナルを開いてみましょう。
docker container run -it --rm --name ubuntu_sample ubuntu:18.04
すると、rootユーザーとしてコンテナにログインすることができ、
root@[ランダムなid]:/#
といった表示に変わります。
ためしに
echo Hello
などのコマンドを実行すると、echoの出力結果を確認することも可能です。(pwd, ls, cd, catなどを試してみましょう。)
終了する際には
exit
上記のコマンドでターミナルでのコマンド実行を終了できます。 コマンド実行が終了すると、自動的にコンテナの停止・削除が行われます。