はじめに
Dockerコンテナのアタッチとデタッチについての備忘録。
コンテナのアタッチとデタッチ
アタッチとは:
コンテナと接続している状態で、フォアグラウンドでコンテナが起動する。
デタッチとは:
コンテナと切り離した状態で、バックグラウンドでコンテナが起動する。
オプション:
|オプション|省略形|説明|補足|
|---|---|---|---|---|
|--interactive|-i|Keep STDIN open even if not attached|標準入出力をコンテナに対して結びつける。つまり、入力した文字はコンテナに渡され、コンテナからの出力が画面に表示されるようになる。|
|--tty|-t|Allocate a pseudo-TTY|pseudo tty (=pty: 疑似端末/仮想端末)を有効にする設定。(疑似端末は、カーソルキーやエスケープキー、[Ctrl]キーなどで操作するためのもの。)|
|--detach|-d|Run container in background and print container ID|コンテナと端末を切り離してバックグラウンドで実行するオプション。|
補足:
- 「i」「t」「d」の3つのオプションの組み合わせて、-itdでつかうことが多し。
- コンテナのアタッチとデタッチは切り替え可能。
- [Ctrl]+[P]、[Ctrl]+[Q]の順に押下で、コンテナをデタッチできる。
-
$ docker attach CONTAINER ID
でコンテナにアタッチできる。
- コンテナにアタッチ状態で[Ctrl]+[C]押下すると、コンテナをSTATUS: Exitedになる。
実例:
アタッチモードでコンテナを起動
$ docker run -it nginx
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
アタッチモードで起動したコンテナをデタッチする
[Ctrl]+[P]、[Ctrl]+[Q]を押下でデタッチし、コンテナが起動中であることを確認。
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
51687903bc7c nginx "/docker-entrypoint.…" 2 minutes ago Up 2 minutes 80/tcp intelligent_lehmann
デタッチしたコンテナに再びアタッチする
$ docker attach 51687903bc7c
デタッチドモードでコンテナを起動
$ docker run -itd nginx
9c68f8ccd978d7071ddbb915f38a552995c069c28f97a25a97681451d3896a68
備考:
コンテナ内に入っている状態で、[Ctrl]+[P]、[Ctrl]+[Q]を押下すると、ホスト側に操作が切り替わる。(コンテナは起動状態。)
$ docker run -it nginx bash
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7fa53110f23f nginx "/docker-entrypoint.…" 22 seconds ago Up 21 seconds 80/tcp lucid_shirley