You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Docker容器中运行systemd以启动Docker守护进程?

在Docker容器内运行Docker的解决方案

方案一:直接启动Docker守护进程(无需依赖systemd)

这个方案跳过systemd,直接启动dockerd,适合不想折腾systemd的场景:

  • 第一步:在容器镜像中安装Docker组件
    如果你的基础镜像还没装Docker,根据系统类型执行安装命令:
    • Debian/Ubuntu系:apt-get update && apt-get install -y docker.io
    • RHEL/CentOS系:yum install -y docker
  • 第二步:修改启动脚本start.sh
    在原脚本的合适位置添加启动docker daemon的命令,比如后台启动并指定socket:
    # 启动Docker守护进程,后台运行
    dockerd --host=unix:///var/run/docker.sock --host=tcp://0.0.0.0:2375 &
    # 等待Docker daemon启动完成(可选,避免后续命令因服务未就绪报错)
    sleep 5
    
    然后继续执行原start.sh的其他业务逻辑。
  • 第三步:特权模式启动容器
    Docker daemon需要访问内核级资源,必须以特权模式启动容器:
    docker run --privileged -d [你的镜像名]
    

方案二:让systemd成为容器PID1(用systemd管理Docker)

如果一定要用systemctl start docker的方式,需要调整容器启动逻辑让systemd作为PID1:

  • 第一步:在容器镜像中安装systemd
    根据基础镜像类型安装systemd包:
    • Debian/Ubuntu系:apt-get update && apt-get install -y systemd
    • RHEL/CentOS系:大部分默认自带,若缺失执行yum install -y systemd
  • 第二步:修改Dockerfile的启动命令
    将原来的CMD ["start.sh"]替换为:
    CMD ["/sbin/init"]
    
    这样容器启动时systemd会成为PID1进程。
  • 第三步:调整容器启动参数
    启动容器时需要挂载cgroup文件系统(systemd依赖)并启用特权模式:
    docker run --privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro -d [你的镜像名]
    
  • 第四步:整合原有start.sh脚本
    因为现在systemd是PID1,原start.sh不会自动执行,需要把它加入systemd的启动流程:
    1. 创建systemd服务文件/etc/systemd/system/start-script.service:
      [Unit]
      Description=Start custom script
      After=docker.service
      
      [Service]
      ExecStart=/path/to/start.sh
      Type=simple
      Restart=on-failure
      
      [Install]
      WantedBy=multi-user.target
      
    2. 启用并启动该服务:
      systemctl enable start-script.service
      systemctl start start-script.service
      
    或者简单点,把start.sh的内容追加到/etc/rc.d/rc.local,并给该文件执行权限:
    echo "/path/to/start.sh" >> /etc/rc.d/rc.local
    chmod +x /etc/rc.d/rc.local
    
  • 第五步:启动Docker服务
    现在可以用systemd命令管理Docker了:
    # 启动Docker
    systemctl start docker
    # 设置开机自启(可选)
    systemctl enable docker
    

内容的提问来源于stack exchange,提问作者SanjeethBoddi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 08:38:26