
有时候需要进行 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 顺手求 star 咯: https://github.com/zjuchenyuan/notebook/