LoginSignup
10
5

More than 3 years have passed since last update.

Dockerコンテナのアタッチとデタッチについて

Last updated at Posted at 2021-03-06

はじめに

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
10
5
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
10
5