3
2

More than 5 years have passed since last update.

コンテナのシェルに接続する2つの方法

Posted at

コンテナのシェルに接続するには、docker attachdocker 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で抜けてもコンテナを停止させないので、こちらのほうが安全
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2