😋
docker start/docker runの違い
きっかけ
dockerの学習でdocker container run
をたたくことがよくあったのですが、正直なところよくわからずたたいていました。Dockerを使用していくうちにdocker start
というコマンドもあることを知り、何が違うの?!という疑問が出てきたため記録として残すために作成しました。
実行環境
- Windows 11 Home
- git version 2.43.0
- Docker version 28.3.0
docker startとは
docker start
のコマンドは、既存のコンテナを起動するものであり、コンテナを作成するものではありません。
docker runとは
docker run
のコマンドは、新しいコンテナを作成して、実行するものであり、既に存在するコンテナに対する操作ではありません。run
はdocker create
とdocker start
の動作を1つのコマンドで実行できるものと言えます。
docker startだけだと
docker start
を使用すれば、既存のコンテナを実行するのみであるため、コンテナを何個も作成する必要はありません。ただdocker start
を使用する際注意したいのは、対象のコンテナをバックグラウンドで再起動するのみのだということです。これだとログが確認できない、指示がコンテナに対してできないなど学習や開発などの場面では少し面倒な状態になります。
そのようなときはオプションを付与またはコマンドの追加実行をしましょう。
1.コンテナが既に存在し、フォアグラウンドの対話型で起動したい場合
オプションに-a
, -i
を付与して標準入力と標準出力をするようにする。
docker start -ai <container_name_or_id>
2.コンテナが既に存在し、かつすでにdocker start
などで起動済みの場合(バックグラウンドで起動中)
exec
コマンドを使用して起動中のコンテナの中に入る
docker exec -it <container_name_or_id> bash
所感
今回2つの違いを振り返ったことで、より適切にdockerコマンドの操作ができそうです。
引用
Discussion