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

2018-07-12 21:46:56 +08:00
 cy97cool

有时候需要进行 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/

2289 次点击
所在节点    Docker
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/470373

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX