docker-compose.yml中定义了服务范围。这些服务已经启动。我只需要重新构建其中一个,并在不启动其他服务的情况下启动它。 执行如下命令:

docker-compose up -d # run all services
docker-compose stop nginx # stop only one. but it is still running !!!
docker-compose build --no-cache nginx 
docker-compose up -d --no-deps # link nginx to other services

最后,我得到了旧的nginx容器。 Docker-compose不会杀死所有正在运行的容器!


当前回答

也许这些步骤不太正确,但我喜欢这样:

停止docker compose: $ docker-compose down

警告:以下修剪-a将删除所有图像,你可能不希望这样做,因为它可能会影响其他项目。你可以在这里阅读更多

删除容器:$ docker system prune -a

启动docker compose: $ docker-compose up -d

其他回答

只有:

$ docker-compose restart [yml_service_name]
docker-compose stop nginx # stop if running
docker-compose rm -f nginx # remove without confirmation
docker-compose build nginx # build
docker-compose up -d nginx # create and start in background

使用rm删除容器是必要的。没有删除,Docker将启动旧容器。

你可以使用:

docker-compose build

如果你正在使用docker配置文件:

docker-compose --profile profile_name build

docker-compose起来

$ docker-compose up -d --no-deps --build <service_name>

——no-deps——不要启动链接服务。

——build——在启动容器之前构建镜像。

简单地使用:

docker-compose build [yml_service_name]

在docker-compose中将[yml_service_name]替换为您的服务名。yml文件。您可以使用docker-compose restart来确保更改生效。你可以使用——no-cache来忽略缓存。