Чтобы изменить 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