繁体   English   中英

如何在Docker Toolbox上更改docker0桥接口的IP地址

[英]How to change ip address of docker0 bridge interface on Docker Toolbox

我正在Windows 7上使用Docker Toolbox,试图更改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

谢谢。

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

Docker Toolbox使用基于Tiny Core Linux OS的Boot2Docker (在虚拟机中运行)。

Docker守护程序在开始之前(请参阅Boot2Docker的FAQ中的“ 本地自定义 )读取/var/lib/boot2docker/profile ,其中EXTRA_ARGS变量已准备好填充您的自定义设置。

只需在EXTRA_ARGS的value部分中添加--bip=...并重新启动守护程序即可。

以下命令(用于键入Docker Quickstart Terminal )将停止Docker守护程序,删除任何现有规则,删除接口,在/var/lib/boot2docker/profile添加--bip选项,然后重新启动守护程序:

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 ):

对于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

然后(对于Sysvinitsystemd ):

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM