Docker Compose与Docker Run:相同配置下Compose容器异常退出
Docker Compose启动systemd容器退出码0的解决方法
问题根源:缺失cgroupns: host配置
你的docker run命令里明确指定了--cgroupns=host,但Docker Compose配置里没有对应设置——这就是容器启动后立即终止的核心原因。
debian/bookworm-systemd镜像依赖systemd作为PID 1进程,而systemd对cgroup命名空间有严格要求。如果未将cgroupns设为host,systemd完成初始化后会认为自身使命已完成,直接以退出码0正常终止容器。
修正后的Docker Compose配置
在服务节点下补上cgroupns: host,同时注意:单机使用Compose时,deploy.resources配置不生效,需将资源限制移到顶级resources节点下:
version: "3" services: debian-ssh: container_name: WebVestaCPDebian image: debian/bookworm-systemd:latest privileged: true ports: - "1-65534:1-65534" networks: WebVestaCPDebian_NET: ipv4_address: x.x.x.x restart: always mac_address: "x:x:x:x:x" # 对应docker run的--cgroupns=host参数 cgroupns: host # 单机模式下用resources配置资源限制,deploy.resources仅在Swarm集群生效 resources: limits: cpus: '6' memory: 12G storage_opt: size: 100G volumes: - /data/WebVestaCPDebian/volume/home:/home - /sys/fs/cgroup:/sys/fs/cgroup:rw networks: WebVestaCPDebian_NET: external: true
补充说明
- 退出码0并非容器崩溃,是systemd在错误的cgroup环境下正常完成初始化后主动退出。
deploy.resources仅在Docker Swarm集群模式下生效,单机部署必须使用顶级resources节点配置资源限制。
内容的提问来源于stack exchange,提问作者user20257513
相关产品推荐
相关产品推荐

