56

我有一个使用 Docker for Mac 的 docker-compose 项目,它会在我启动计算机时自动启动。

我通常使用 启动项目docker-compose up -d,但即使docker-compose stop在关闭之前运行也会在启动时再次启动它。

我不知道专门启用此功能。我怎样才能禁用它?

4

5 回答 5

63

今天我遇到了同样的问题,当我启动我的开发笔记本电脑时,所有容器都启动了,就像restart: always在 .yml 文件中设置的那样。

由于我不想接触 .yml 文件,我刚刚发现(感谢 Bobby)如何通过以下方式更改此设置:

docker update --restart=no <MY-CONTAINER-ID>
于 2017-04-05T10:59:42.303 回答
17

尝试使用docker-compose down而不是docker-compose stop

停止容器并删除由 up 创建的容器、网络、卷和映像。 定义为外部的网络和卷永远不会被删除

停止

停止运行容器而不删除它们。它们可以用 重新启动docker-compose start

于 2017-10-11T03:47:22.943 回答
16

restart: no是默认模式。在您的 docker-compose 文件中有一行带有restart: noor restart: unless-stopped。这也意味着当您启动系统时,只要 docker 守护程序,它就会再次(重新)启动容器。详细信息
您需要更改restartnoor on-failure例如

version: '2.1'
services:
    backend:
        restart: on-failure
        build:
            args:
                USER_ID: ${USER_ID}
            context: codebase/namp-backend
            dockerfile: Dockerfile.dev
        ports:
          - "5001:5001"
          - "5851:5851"
        volumes:
          - ./codebase/namp-backend:/codebase
        environment:

同样docker-compose down对于大多数情况,给您相同的结果 - 在(docker)系统启动时不要启动容器,除了:容器将在此之后被删除,而不是停止。

于 2018-04-12T21:12:10.060 回答
7

如果要停止特定容器,请使用以下命令:

docker update --restart=no <MY-CONTAINER-ID>

如果要停止所有已注册的容器,这是最好的选择:

docker update --restart=no $(docker container ls -a -q)

谢谢

于 2021-05-06T12:30:40.833 回答
1

除了设置restart: unless-stopped,删除现有容器并重新创建它们。

docker-compose down
docker-compose up -d

现在,它将按预期工作:

docker-compose stop
sudo service docker restart
docker-compose ps
# should NOT HAVE containers running

docker-compose up -d
sudo service docker restart
docker-compose ps
# should HAVE containers running
于 2019-05-14T06:44:58.867 回答