Docker Container’a erişim için Host’un Nic portu üzerinden erişim izni – Firewalld port açma / Docker Container’ın İnternete Yönlendirme işlemi

  • How to configure firewalld to allow docker containers free access to the host’s network ports.?

Burada dikkat etmeniz gereken container için host’ta match ettiğiniz portu güvenlik duvarı rule’sinde belirtmelisiniz. Ben 8080 portunu host’ta eşleştirdiğim için onu rule’de tanımlayacağım. Yani tarayıcıdan 8080 üzerinden contaniner’a erişeceğim.

Sırasıyla aşağıdaki komutları çalıştırmanız yeterlidir.

firewall-cmd –permanent –zone=trusted –change-interface=docker0
firewall-cmd –permanent –zone=trusted –add-port=8080/tcp
firewall-cmd –reload

  • Enable forwarding from docker containers to the outside world.?

Docker Container’ınızın internete çıkabilmesi için aşağıdaki işlemleri yapmanız yeterlidir.

systctl komutu ile net.ipv4.conf.all.forwarding değerini 1 yapmalısınız. Ardından iptables yada firewalld forward rule’sini tanımlamanız yeterli.

sysctl net.ipv4.conf.all.forwarding=1
sudo iptables -P FORWARD ACCEPT

ya da

firewall-cmd –direct –add-rule ipv4 filter FORWARD 0 -i docker0 -o ens3 -j ACCEPT
firewall-cmd –reload

Docker Compose Kurulum/Kaldırma ve Custom Bridge ile Çalıştırma İşlemleri

İlgili sunucuda Docker kurulumunun yapıldığını var sayarak konuya giriş yapalım. Docker Compose up edildiğinde kendisi için farklı bir bridge oluşturup network yapılandırmalarını o bridge üzerinden yapmaktadır. Fakat biz Docker kururken varsayılan olarak gelen ya da custom olarak bizim oluşturuduğumuz subnet‘teki network bridge‘yi kullanarak Docker Compose uygulamalarını up yapmak istiyoruz. Bunun için aşağıdaki yönergeleri takip etmeniz yeterlidir.

İlk önce aşağıdaki komut ile Docker Network çıktımıza bakalım(biz bridge sanal aygıtını kullanacağız).

  • sudo docker network ls

Docker Compose kurulum işlemi için aşağıdaki komutları sırasıyla çalıştırmanız yeterlidir;

  • sudo curl -L “https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)” -o /usr/local/bin/docker-compose
  • sudo chmod +x /usr/local/bin/docker-compose
  • sudo docker-compose –version

Custom bridge ile Docker Compese yml çalıştırma(örnek wordpress yml dosyası – docker-compose up -d);

version: ‘3.3’
services:
db:
image: mysql:5.7
restart: always
volumes:
– db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: wordpress
network_mode: bridge

wordpress:
image: wordpress
restart: always
volumes:
– ./wp_data:/var/www/html
ports:
– “8080:80”
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: password
network_mode: bridge
depends_on:
– db

volumes:
db_data:
wp_data:

networks:
default:
external:
name: bridge

Docker Compose kaldırma işlemi;

  • sudo rm /usr/local/bin/docker-compose