Добавление в firewall-cmd цепочки пользовательских правил для Docker в Сentos 7

Устанавливаем пакеты и включаем службу

    yum install firewalld -y

    sudo systemctl start firewalld
    sudo systemctl enable firewalld 
    sudo systemctl status firewalld

Удаляем цепочку DOCKER-USER

firewall-cmd --permanent --direct --remove-chain ipv4 filter DOCKER-USER

Удаляем правила DOCKER-USER

firewall-cmd --permanent --direct --remove-rules ipv4 filter DOCKER-USER

Добавляем DOCKER-USER цепочку в firewalld

firewall-cmd --permanent --direct --add-chain ipv4 filter DOCKER-USER

Добавляем правила (замените xxx.xxx.xxx.xxx/xx на свою сеть докера во втором правиле и ваш внешний ip и порт в третьем правиле )

firewall-cmd --permanent --direct --add-rule ipv4 filter DOCKER-USER 0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -m comment --comment "This allows docker containers to connect to the outside world"
firewall-cmd --permanent --direct --add-rule ipv4 filter DOCKER-USER 0 -j RETURN -s xxx.xxx.xxx.xxx/xx -m comment --comment "allow internal docker communication"
firewall-cmd --permanent --direct --add-rule ipv4 filter DOCKER-USER 0 -p tcp -m multiport --dports xxxxx -s xxx.xxx.xxx.xxx/xx -j ACCEPT -m comment --comment "my allowed ip address to xxxxx ports"

Добавьте все сети, а затем запустите эту команду, чтобы заблокировать весь другой трафик

firewall-cmd --permanent --direct --add-rule ipv4 filter DOCKER-USER 0 -j REJECT -m comment --comment "reject all other traffic"

Перезапуск служб

    systemctl stop docker
    systemctl stop firewalld
    systemctl start firewalld
    systemctl start docker