Ubuntu

docker compose でアタッチとデタッチ

docker composeで -d を指定せずにプロセスを起動して様子を見て、問題なさそうならそのままプロセスを継続したいと前々から思っていた。



広告


コンテナを動かしているのはUbuntu 22.04で、本家のリポジトリを使ってDockerをインストールしている環境。

いつもプロセスを停止して起動し直していたんだけれど、ちょっとの時間とはいえ、コンテナを止めたくないなーと思って探してみた。
Github / docker / compose / key sequence to detach from docker-compose up #4560

最後まで読み進めていったら、[CTRL]+[4]でプロセスから抜けられるようだ。

[CTRL]+[4]について、ちょっと調べてみたのでメモ。
Unix & Linux / What does CTRL+4 (and CTRL+) do in bash?

実際にキーを押してみると、SIGQUITが送られるようだ。

^\SIGQUIT: quit
PC=0x5654bbb71c88 m=0 sigcode=128
…

コンテナは動作し続けている。

$ sudo docker-ps
NAMES     STATUS          CONTAINER ID   IMAGE                NETWORKS   SIZE
dhcp6     Up 38 minutes   154c830056a0   dhcp6:1.0.0          host       1.29MB (virtual 169MB)
dhcp4     Up 38 minutes   97f419d99e88   dhcp4:1.0.0          host       1.29MB (virtual 168MB)
samba     Up 39 minutes   066bd0f6bb27   custom/samba:1.0.0   host       4.7MB (virtual 722MB)

docker-psは表示をカスタマイズしたエイリアス

改めてアタッチするのに、以下のコマンドが使用できた。

$ sudo docker compose up
[+] Running 2/0
 ? Container dhcp6  Running                                                                                                                       0.0s
 ? Container dhcp4  Running                                                                                                                       0.0s
Attaching to dhcp4, dhcp6
dhcp4  | execute_statement argv[0] = /usr/local/bin/dhcp-dyndns.sh
dhcp4  | execute_statement argv[1] = add
dhcp4  | execute_statement argv[2] = 192.168.110.10

これはお手軽。


このイシューによれば、[CTRL]+[z]でデタッチできるそうだ。
加えて、1つコマンドを実行。

dhcp6  | Information-request message from fe80::nnnn:nnnn:nnnn:nnnn port 546, transaction ID 0xF6127E00
dhcp6  | Sending Reply to fe80::nnnn:nnnn:nnnn:nnnn port 546
^Z
[1]+  Stopped                 sudo docker compose up
$ jobs
[1]+  Stopped                 sudo docker compose up
rohhie@hoge:/opt/ddns$ pkill -sigkill -f "sudo docker compose up"
[1]+  Killed                  sudo docker compose up

※でも、よくよく確認してみると、[CTRL]+[z]がやっていることはプロセスを停止だった。

Stoppedと表示されているし、プロセスをkillしているので心配になったけれど、コンテナは動いたままだった。

$ sudo docker-ps
NAMES     STATUS         CONTAINER ID   IMAGE                NETWORKS   SIZE
dhcp6     Up 8 minutes   615cd330930d   dhcp6:1.0.0          host       1.29MB (virtual 169MB)
dhcp4     Up 8 minutes   97f419d99e88   dhcp4:1.0.0          host       1.29MB (virtual 168MB)

より自在にコンテナを扱えるようになった。

コメントはこちらから お気軽にどうぞ ~ 投稿に関するご意見・感想・他