コンテナのシェルに接続するには、docker attach
とdocker exec
の2つがある
docker attach
$ docker attach <コンテナ名 or コンテナID>
- コンテナのPID1のプロセスの標準入出力に接続する
- コンテナの起動時のコマンドでシェルを指定した場合に、
docker attach
すると起動時に指定したシェルに接続できる
# bashを指定してコンテナを起動
$ docker run -itd --name alpine1 alpine /bin/bash
# bashに接続
$ docker attach alpine1
- 注意点
- 起動時にデーモンを起動していた場合は、デーモンの標準入出力に接続される
- attachで接続したあとに、exitで抜けるとPID1のプロセスが終了してしまいコンテナも停止する
- 基本的にはCtrl+p qを連続して入力するとプロセスを終了させずに抜けることができるが、起動時に
-it
をつけていない場合は抜けることができないので注意
docker exec
$ docker exec -it <コンテナ名 or コンテナID> <シェル>
$ docker exec -it alpine /bin/bash
-
docker exec
は、起動しているコンテナ内で任意のコマンドを実行するコマンド - シェルに接続するために、
-it
オプションをつけてシェルを指定しコマンドを実行する - docker attachとは違い、exitで抜けてもコンテナを停止させないので、こちらのほうが安全