2016-12-21 4 views
0

Я использую Docker Toolbox для Windows 7, я пытаюсь изменить IP-адрес интерфейса docker0, но с трудом найти точное решение, которое работает для Windows 7. Может ли кто-нибудь помочь мне в поиске решения.Как изменить ip-адрес интерфейса моста docker0 на Docker Toolbox

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 

спасибо.

ответ

0

Чтобы изменить IP-адрес Docker будет установлен на это docker0 интерфейс, вы должны использовать --bip вариант, который определяет CIDR (например. --bip=10.32.57.1/24), см "Customize the docker0 bridge" in Docker user guide.

Docker Toolbox использует Boot2Docker (работает на виртуальной машине), которая основана на операционной системе Tiny Core Linux.

Docker демон читает /var/lib/boot2docker/profile перед запуском (см "Local Customisation" in Boot2Docker's FAQ), где EXTRA_ARGS переменным готов быть заполнено с пользовательскими настройками.

Просто добавьте --bip=... в значение стоимости EXTRA_ARGS и перезапустите демон.

Следующая команда (набрать в Docker Краткое руководство терминала) остановит 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 таким образом):

Для 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 
Смежные вопросы