如何更改Docker0桥接接口的IP地址



我正在使用Windows 7的Docker工具箱,我正在尝试更改Docker0接口的IP地址,但是很难找到适用于Windows 7的精确解决方案。请帮助我找到解决方案。

Client:
 Version:      1.12.5
 API version:  1.24
 Go version:   go1.6.4
 Git commit:   7392c3b
 Built:        Fri Dec 16 06:14:34 2016
 OS/Arch:      linux/amd64
Server:
 Version:      1.12.5
 API version:  1.24
 Go version:   go1.6.4
 Git commit:   7392c3b
 Built:        Fri Dec 16 06:14:34 2016
 OS/Arch:      linux/amd64

谢谢。

更改IP地址 Docker 将在其docker0接口上设置,您必须使用定义CIDR的--bip选项(例如--bip=10.32.57.1/24),请参阅"请参阅",请参阅"请参阅"请参阅"自定义docker0桥" docker 用户指南。

Docker Toolbox 使用 boot2docker (在虚拟机中运行),该 tiny Core Linux os。os。

docker 守护程序读取 /var/lib/boot2docker/profile启动之前(请参阅 boot2docker 的faq中的" local自定义"),其中 EXTRA_ARGS变量已准备就绪充满您的自定义设置。

只需在EXTRA_ARGS的值零件中添加您的--bip=...并重新启动守护程序。

以下命令(在 docker quickstart终端中输入)将停止 docker 守护程序,删除任何现有规则,删除接口,将--bip添加到/var/lib/boot2docker/profile中并重新启动守护程序:

docker-machine ssh default "
    sudo /etc/init.d/docker stop ; 
    sudo iptables -t nat -F POSTROUTING ; 
    sudo ip link del docker0 ; 
    sudo sed -i "/^EXTRA_ARGS='\$/a --bip=10.32.57.1/24" /var/lib/boot2docker/profile ; 
    sudo /etc/init.d/docker start 
    "

/var/lib/boot2docker的内容在 boot2docker vm之间持续存在

您可以检查:

docker-machine ssh default "ip a show dev docker0"

如果有人需要对Debian进行相同的操作(没有 boot2docker 因此):

for sysvinit

cat >> /etc/default/docker <<EOT
# Change Docker network bridge:
DOCKER_OPTS="--bip=10.32.57.1/24" # "3257" = "dckr" on a phone keyboard
EOT

对于 systemd

cat > /etc/systemd/system/docker.service <<'EOT'
[Service]
EnvironmentFile=-/etc/sysconfig/docker
EnvironmentFile=-/etc/sysconfig/docker-storage
EnvironmentFile=-/etc/sysconfig/docker-network
ExecStart=
ExecStart=/usr/bin/docker daemon -H fd:// $OPTIONS 
          $DOCKER_STORAGE_OPTIONS 
          $DOCKER_NETWORK_OPTIONS 
          $BLOCK_REGISTRY 
          $INSECURE_REGISTRY
EOT
mkdir /etc/sysconfig
cat > /etc/sysconfig/docker <<EOT
OPTIONS="--bip=10.32.57.1/24"
EOT
systemctl daemon-reload

然后(对于 sysvinit systemd ):

service docker stop
iptables -t nat -F POSTROUTING
ip link del docker0
service docker start
iptables -t nat -L -n # Check if POSTROUTING table is OK

最新更新