docker-コンテナの自動再起動を無効にするにはどうすればよいですか?


156

で自動再起動を有効にできますが--restart=always、コンテナを停止した後、その属性をオフにするにはどうすればよいですか?

私は通常、ウェブサーバーを実行しており、通常はポート80をマッピングします。

docker run -d --restart=always -p 80:80 -i -t myuser/myproj /bin/bash

しかし、新しいバージョンのイメージを実行したい場合がありますが、古いコンテナーをそのままにしておく必要があります。問題は、のコンテナが複数ある場合--restart=always、すべてがホストのポート80で競合しているため、そのうちの1つ(ランダム?)だけが起動することです。

回答:


326

--restart=unless-stopped@Shibashisが述べたように、このオプションを使用するか、再起動ポリシーを更新できます(これにはdocker 1.11以降が必要です)。

およびDocker再起動ポリシーのドキュメントをdocker update参照してください。

docker update --restart=no my-container

既存のコンテナの再起動ポリシーを更新する(my-container


69
docker update --restart=no $(docker ps -a -q)すべてのコンテナを更新するために使用します:-)
Mark Mooibroek、2018年


22

以下を使用して、すべての自動再起動(デーモン)コンテナーを無効にします。

docker update --restart=no $(docker ps -a -q)

以下を使用して、SINGLEコンテナの再起動を無効にします。

docker update --restart=no the-container-you-want-to-disable-restart

合理的

Dockerには再起動ポリシーが用意されており、コンテナーが終了したとき、またはDockerが再起動したときにコンテナーが自動的に起動するかどうかを制御します。これは多くの場合、Dockerがキーサービスを実行しているときに非常に役立ちます。

ノート

docker-composeを使用している場合は、知っておくと便利です。

restart noはデフォルトの再起動ポリシーであり、どのような状況でもコンテナーを再起動しません。alwaysを指定すると、コンテナは常に再起動します。失敗時ポリシーは、終了コードが失敗時エラーを示している場合にコンテナを再起動します。

restart: "no"
restart: always
restart: on-failure
restart: unless-stopped

restart: always

12

コンテナを再起動するswarmがある場合、swarmは、再起動オプションに関係なく、停止またはrmしたコンテナを再起動します。これはバグではなく機能です。

忘れていたサービスを実行していないことを確認してください:

docker service ls

その後、サービスを停止できます

docker service rm <service id discovered with previous command>

1
lsエラーになりますError response from daemon: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again.
naXa
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.