Dockerコンテナからのデタッチ

表題の通り。コンテナを稼動させたままデタッチする方法を忘れがちなのでメモとして残しておく。

■ 環境

  • Docker 1.8.2

■ detach

Dockerコンテナで作業をしていて、コンテナから抜けたいが、単に`control-D`で抜けようとすると”logout“になりコンテナは終了してしまう。これを回避する方法である。

[control-P] [control-Q]

上記でコンテナからデタッチすることができる。

以降、下記で起動したコンテナにて実験する。

$ docker run -ti --rm centos:6 /bin/bash

別のターミナルから確認する。

$ docker ps -a
CONTAINER ID  IMAGE     COMMAND      CREATED        STATUS        PORTS  NAMES
18efb83c9f93  centos:6  "/bin/bash"  7 seconds ago  Up 7 seconds         backstabbing_cori
$

コンテナから`control-D`で抜けてみる。

$ docker run -ti --rm centos:6 /bin/bash
[root@18efb83c9f93 /]# exit

`docker ps`で確認すると下記のようにコンテナは停止される。既に削除されているのは、起動時の`–rm`オプションを付与しているからである。

$ docker ps -a
CONTAINER ID  IMAGE   COMMAND   CREATED   STATUS   PORTS   NAMES
$

再度、コンテナを起動し、次はデタッチしてみる。

$ docker run -ti --rm centos:6 /bin/bash
[root@4977948e8cbc /]# [control-P] [control-Q]$

この状態でコンテナ一覧を確認する。

$ docker ps -a
CONTAINER ID  IMAGE     COMMAND      CREATED        STATUS        PORTS  NAMES
4977948e8cbc  centos:6  "/bin/bash"  3 minutes ago  Up 3 minutes         suspicious_khorana
$

デタッチが正常にでき、コンテナは停止&削除されていない。このコンテナに戻るにはアタッチすれば良い。

$ docker attach [ContainerID or ContainerName]

以上。

■ 関連