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)
改めてアタッチするのに、以下のコマンドが使用できた。
$ 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)
より自在にコンテナを扱えるようになった。
コメントはこちらから お気軽にどうぞ ~ 投稿に関するご意見・感想・他