V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cy97cool
V2EX  ›  Docker

在另一块硬盘上启动另一个 Docker Daemon 进程

  •  
  •   cy97cool · 2018-07-12 21:46:56 +08:00 · 2261 次点击
    这是一个创建于 2085 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有时候需要进行 build 操作,发现根目录剩余空间不够了(Docker 目录默认在 /var/lib 下),但另外一块硬盘还有空间(如 /home 目录),不想影响当前正在运行的容器,所以整体迁移 /var/lib/docker 或合并两个硬盘为 lvm 并不现实。

    这时就可以开启一个新的 Docker Daemon,把 Docker 使用的目录设置为另一块硬盘

    参考: http://blog.alpaca.ai/run-multiple-docker-daemons-with-net-container/

    假设 docker 工作目录 为/home/cy/docker

    首先需要创建网桥和 iptables 规则:

    OFFSET=0
    u="cy"
    BRIDGE_NAME=br_${u}
    DOCKER_ROOT=/home/${u}/docker
    mkdir -p ${DOCKER_ROOT}
    brctl addbr ${BRIDGE_NAME}
    SUBNET=$(expr 52 + ${OFFSET})
    ip addr add 172.18.${SUBNET}.1/24 dev ${BRIDGE_NAME}
    ip link set dev ${BRIDGE_NAME} up
    iptables -t nat -A POSTROUTING -j MASQUERADE -s 172.18.${SUBNET}.0/24 -d 0.0.0.0/0
    

    运行 dockerd,建议在 screen 或 tmux 中执行:

    u="cy"
    BRIDGE_NAME=br_${u}
    DOCKER_ROOT=/home/${u}/docker
    dockerd -D \
            -g ${DOCKER_ROOT}/g \
            --exec-root=${DOCKER_ROOT}/e \
            -b ${BRIDGE_NAME} \
            --dns=8.8.8.8 \
            --iptables=true \
            -H unix://${DOCKER_ROOT}/docker.sock \
            -p ${DOCKER_ROOT}/docker.pid
    

    然后使用时需要加上-H 参数,你可以创建 alias 方便使用,例如

    alias cydocker='docker -H unix:///home/cy/docker/docker.sock '
    cydocker ps
    

    https://py3.io/Docker/

    顺手求 star 咯: https://github.com/zjuchenyuan/notebook/

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3160 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 12:31 · PVG 20:31 · LAX 05:31 · JFK 08:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.