Q&A
1回答
2192閲覧
総合スコア0
Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。
Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです
0グッド
1クリップ
投稿2022/11/26 16:31
0
1
質問の通りです.
docker run -rm .... といった形で停止したときに削除はできいますが,一定時間で自動停止する方法が見つからず困っています.
docker run -rm ....
最終手段としてDocker Engine APIとゴールーチンで
go(コンテナを起動) go(sleep <時間> docker stop... )
という感じに並列でsleepを使って一定時間で停止することはできますが,言語を使わずにDockerだけで一定時間後に停止するのを実装する方法はありますか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
質問へのコメント
回答1件
GNUツールにはtimeoutコマンドというものがあり、それを使うと一定時間後にプロセスを終了させることができます。 macOSならbrew install coreutilsでgtimeoutコマンドですね。
コンテナには外部からのシグナルには反応しないみたいでやり方は以下のほうがよさそう。
例えば3秒後に「docker kill $(docker ps -ql)」を実行するみたいなプロセスをバックグラウンドで起動してから dockerのコンテナプロセスを起こすというのでうまく止めることができます。
shell1> sh -c "sleep 3;docker kill \$(docker ps -ql)" & docker run -it --rm alpine sleep 10
shell
1> sh -c "sleep 3;docker kill \$(docker ps -ql)" & docker run -it --rm alpine sleep 10
「$(docker ps -ql)」を後で評価させるために先頭にバックスラッシュをつけるのがキモです。
投稿2022/11/29 23:01
総合スコア3367
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
まだベストアンサーが選ばれていません
アカウントをお持ちの方はログイン
15分調べてもわからないことはteratailで質問しよう!
ただいまの回答率85.25%
質問をまとめることで思考を整理して素早く解決
テンプレート機能で簡単に質問をまとめる
コンテナを一定時間後に自動で停止する方法ってありますか?