Перед прочтением настоящей статьи рекомендуется ознакомиться со статьей Инструкция для работы с редактором nano.
|
При использовании docker совместно с включенной службе межсетевого экрана firewalld после переключения службы docker в изолированный режим нарушается работа службы docker с сетью. Признаки: служба docker не запускается, в журнале /var/log/syslog фиксируется ошибка вида "Error initializing network controller".
Такое поведение службы docker, работающей в изолированном режиме, следует из выполнения требования безопасности: изолированная служба не может вмешиваться в работу высокоцелостных служб, одной из которых является служба firewalld. Для преодоления этого ограничения необходимо выполнить действия от имени администратора (при включенном МКЦ — от имени администратора с высоким уровнем целостности), определив для изолированной службы разрешенные действия.
Если требуется одновременно использовать межсетевой экран firewall и службу docker, работающую в изолированном режиме, то необходимо выполнить следующие действия:
| sudo systemctl edit docker |
[Service]
ExecStart=
ExecStart=/usr/sbin/dockerd -H fd:// \
--iptables=false \
--containerd=/var/run/containerd/containerd.sock \
--pidfile /var/run/docker/docker.pid \
$DOCKER_OPTS --exec-opt native.cgroupdriver=cgroupfs |
ExecStart= (присваивающая пустое значение) необходима.| sudo systemctl restart docker |
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default |
| sudo systemctl edit docker |
ExecStartPost=sysctl -w net.ipv4.ip_forward=1 ExecStartPost=iptables -t nat -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE ExecStartPost=iptables -A FORWARD -i docker0 -o eth0 -j ACCEPT ExecStartPost=iptables -A FORWARD -i eth0 -o docker0 -m state --state RELATED,ESTABLISHED -j ACCEPT ExecStartPost=iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 172.17.0.2:80 |
### Editing /etc/systemd/system/docker.service.d/override.conf
### Anything between here and the comment below will become the new contents of the file
[Service]
ExecStart=
ExecStart=/usr/sbin/dockerd -H fd:// \
--containerd=/var/run/containerd/containerd.sock \
--iptables=false \
--pidfile /var/run/docker/docker.pid \
$DOCKER_OPTS --exec-opt native.cgroupdriver=cgroupfs
ExecStartPost=sysctl -w net.ipv4.ip_forward=1
ExecStartPost=iptables -t nat -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
ExecStartPost=iptables -A FORWARD -i docker0 -o eth0 -j ACCEPT
ExecStartPost=iptables -A FORWARD -i eth0 -o docker0 -m state --state RELATED,ESTABLISHED -j ACCEPT
ExecStartPost=iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 172.17.0.2:80
### Lines below this comment will be discarded.... |
| sudo systemctl restart docker |