Fan*_*ung 33 docker docker-compose
docker-compose run有一个标志--rm,可以在运行后自动删除容器.我想知道是否有一个与docker-compose.yml等效的配置用于特定服务,因为我在yml中获得的服务之一是一次性构建过程,它应该只输出编译文件并自行消失.
tgo*_*gos 31
我没有找到任何选项来帮助您在docker-compose.yml文件中定义此行为,我认为解释如下:
docker-compose up构建,(重新)创建,启动和附加服务的容器.
由于您images的构建和containers服务已经开始,您可以使用docker-compose stop和docker-compose start启动/停止您的服务.这不同于docker-compose down:
停止容器并删除由其创建的容器,网络,卷和图像
up.
您正在尝试做的问题:
如果你docker-compose up和你的容器之一完成其任务,并得到(自动)删除,那么你不能docker-compose stop和docker-compose start试.被移除的容器将不再存在start.
你可能想看看:
Tho*_*wig 30
只需运行 docker-compose up && docker-compose rm -fsv
https://docs.docker.com/compose/reference/rm
小智 20
自从这个问题发布以来已经有一段时间了,但我认为在 2022 年分享一些对我的案例有用的东西会提供有用的信息:)但请记住,这个解决方案仍然不会删除旧容器,正如原作者的意图实现。
docker-compose up --force-recreate -V
Run Code Online (Sandbox Code Playgroud)
就我而言,我有一个小型 Redis 集群,我希望在停止服务器后完全删除数据。仅使用并--force-recreate不能解决问题,因为匿名卷仍然被重用。这就是-V发挥作用的地方。
我对此的解决方案是创建一个小 bash 脚本,该脚本随后会自动删除容器。
如果您使用的是 macOS,则可以将此脚本放在usr/local/bin. 假设它是 named dco,然后您可以运行chmod +x usr/local/bin/dco以使其可执行。在 Windows 上,我不知道如何让它工作,但在 Linux 上应该是类似的。
#! /bin/bash
# check for -d, --detached
DETACHED=false
for (( i=1; i <= "$#"; i++ )); do
ARG="${!i}"
case "$ARG" in
-d|--detach)
DETACHED=true
break
;;
esac
done
if [[ $1 == "run" ]] && [[ $DETACHED == false ]]; then
docker-compose run --rm "${@:2}"
elif [[ $1 == "up" ]] && [[ $DETACHED == false ]]; then
docker-compose up "${@:2}"; docker-compose down
else
docker-compose "${@:1}"
fi
Run Code Online (Sandbox Code Playgroud)
编辑:更新了脚本,以便分离模式可以正常工作,添加break到 artu-hnrq 建议的循环中
| 归档时间: |
|
| 查看次数: |
22389 次 |
| 最近记录: |