KAEDE Hack blog

JavaScript 中心に ライブラリなどの使い方を解説する技術ブログ。

Docker 停止中 or 稼働中の Ubuntu コンテナの Bash に入る - docker start attach

why

Docker で Ubuntu をプロセス関連の学習のために動かしたかった

kei-s-lifehack.hatenablog.com

コンテナのリスト表示

docker ps または docker container ls

で起動中のコンテナのリストを表示できる。

docker container ls
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
5a8638528c62        ubuntu              "/bin/bash"              21 hours ago        Up 21 hours                                  goofy_mclaren
84a68690ab25        adminer             "entrypoint.sh docke…"   5 months ago        Up 2 weeks          0.0.0.0:8080->8080/tcp   docker-mysql_adminer_1
632563fd4842        mysql               "docker-entrypoint.s…"   5 months ago        Up 2 weeks          3306/tcp, 33060/tcp      docker-mysql_db_1

Ubuntu と adminer, mysql のコンテナが動いていることを確認

動いているコンテナの bash に入る

docker attach YourContainerID

で起動させた状態のコンテナの bash に入れる

実際に売ってみる

docker container attach 5a8638528c62
root@5a8638528c62:/#

コンテナ ID 5a8638528c62bash に入れた

コンテナを止める

exit で bash から離れるとコンテナは停止する

docker ps -a でみると止まっている。

停止しているコンテナを動かす - docker start

docker start YourContainerID で停止しているコンテナが動かせる

docker ps -a | grep ub
5a8638528c62        ubuntu                           "/bin/bash"              21 hours ago        Exited (0) 35 seconds ago                            goofy_mclaren
6063ce36303c        ubuntu                           "/bin/bash"              22 hours ago        Exited (0) 22 hours ago                              gallant_easley
10075622af77        ubuntu                           "bash"                   6 months ago        Exited (0) 6 months ago                              elegant_euler

docker ps -a で止まっているコンテナをリスト表示して

docker start 5a8638528c62
5a8638528c62

docker start で任意のコンテナを 裏で動かす

これで確認すると

docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
5a8638528c62        ubuntu              "/bin/bash"              21 hours ago        Up 7 seconds                                 goofy_mclaren
84a68690ab25        adminer             "entrypoint.sh docke…"   5 months ago        Up 2 weeks          0.0.0.0:8080->8080/tcp   docker-mysql_adminer_1
632563fd4842        mysql               "docker-entrypoint.s…"   5 months ago        Up 2 weeks          3306/tcp, 33060/tcp      docker-mysql_db_1

ID 5a8638528c62 の ubuntu が動いている

これで、先ほどのように attach で入れる

まとめ

Docker で Ubuntu Bash を使うときは

docker ps -a

で現在動いているコンテナを表示し、使いたいコンテナが動いていたら

docker attach YourContainerID

でそのコンテナの bash に入り、作業する

使いたいコンテナが動いていない場合は

docker ps 

で止まっているコンテナを表示し、使いたいコンテナがあったら

docker start YourContainerID

でそのコンテナを動いている状態にして

docker attach YourContainerID

で動いているコンテナに入り、bash で作業する

実践

docker start 5a8638528c62
5a8638528c62
RYOs-MBP:~ kaede$ docker attach 5a8638528c62
root@5a8638528c62:/# ls
bin  boot  dev  etc  home  lib  lib32  lib64  libx32  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@5a8638528c62:/# touch 0408.txt 
root@5a8638528c62:/# ls
0408.txt  bin  boot  dev  etc  home  lib  lib32  lib64  libx32  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@5a8638528c62:/# exit
exit
RYOs-MBP:~ kaede$ docker start 5a8638528c62
5a8638528c62
RYOs-MBP:~ kaede$ docker attach 5a8638528c62
root@5a8638528c62:/# ls
0408.txt  bin  boot  dev  etc  home  lib  lib32  lib64  libx32  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@5a8638528c62:/# exit

5a86 の停止しているコンテナを動かし、

インして

0408.txt を作り

出て

再び 5a86 の停止しているコンテナを動かし

インして

0408.txt が残っているのを確認した