Как изменить сеть для контейнеров в Docker на Linux (Debian)?
Если решите как-то реализовать написанное, то все действия вы производите на свой страх и риск!
1. Проверяем работает ли docker
systemctl status docker
2. Смотрим список сетей
docker network list
В данном случае интересует bridge
3. Смотрим сеть для bridge
docker network inspect bridge | grep Subnet
Вывод примерно такой по умолчанию бывает:
"Subnet": "172.17.0.0/16",
4. В качестве теста у меня запущен контейнер с nginx. Через браузер проверил, что всё работает.
5. Редактируем или создаем файл daemon.json
nano /etc/docker/daemon.json
И прописываем, в качестве примера, сетевое адресное пространство 10.1.0.0/24 с IP-адресом bridge-интерфейса 10.1.0.1.
{ "bip": "10.1.0.1/24", "default-address-pools": [{ "base": "10.1.0.0/24", "size": 24 }] }
6. Смотрим запущенные контейнеры
docker ps -a
7. Удаляем все и проверяем
docker rm -f `docker ps -q -a` docker ps -a
8. Перезапускаем docker
systemctl restart docker
9. Проверяем сеть bridge
docker network inspect bridge | grep Subnet
Вывод
"Subnet": "10.1.0.0/24",
10. В качестве теста запускаю контейнер с nginx, проверяю его адрес и работоспособность через браузер
docker run -d -p 80:80 nginx
ID этого контейнера 3b2a1894c706
docker inspect 3b2a1894c706 | grep "IPAddress"
Видео на Youtube:
Видео на Rutube: