Docker, Menambahkan Port Forwarding pada Iptables

Terkadang saat kita menjalankan container docker, kita tidak menyertakan port yang akan dibuka. Solusi tanpa harus melakuan stop dan start ulang container adalah dengan menambahkan routing ip forwarding pada iptables (kebetulan saya menggunakan linux).

Berikut ini adalah contoh cara menambahkan port forwarding di iptables

iptables -t nat -A  DOCKER -p tcp --dport 8080 -j DNAT --to-destination 172.17.0.2:8080
iptables -t nat -A  DOCKER -p tcp --dport 8081 -j DNAT --to-destination 172.17.0.3:8080

Tampilan dari iptables

 

[mamat@docker01 ~]$ sudo iptables -t nat -A  DOCKER -p tcp --dport 8080 -j DNAT --to-destination 172.17.0.2:8080
[mamat@docker01 ~]$ sudo iptables -t nat -A  DOCKER -p tcp --dport 8081 -j DNAT --to-destination 172.17.0.3:8080
[mamat@docker01 ~]$ sudo iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DOCKER     all  --  anywhere             anywhere             ADDRTYPE match dst-type LOCAL
...
...
Chain DOCKER (2 references)
target     prot opt source               destination
DNAT       tcp  --  anywhere             anywhere             tcp dpt:webcache to:172.17.0.2:8080
DNAT       tcp  --  anywhere             anywhere             tcp dpt:tproxy to:172.17.0.3:8080

 

Docker Problem Permission denied on accessing Data Volume

Terkadang adakalanya kita lupa menambahkan parameter yang mengakibatkan data volume yang kita daftarkan pada docker tidak bisa diakses.

[root@8de184342126 ~]# ls /home/sources/
ls: cannot open directory /home/sources/: Permission denied

Salah satu Solusi agar data volume kita dapat diakses saat run docker container adalah sebagai berikut:

docker run --privileged=true -i -t -P --name centosjboss01 
-v /home/mamat/sources:/home/sources centos:java /bin/bash

[root@7cc56ce93112 /]# ls /home/sources/
jboss-bpms-6.0.1.GA-redhat-4-deployable-generic.zip
jboss-eap-6.1.0.zip
jboss-fsw-installer-6.0.0.GA-redhat-4.jar

Docker – Cara Keluar tanpa mematikan services

docker attach --sig-proxy=true CONTAINER

Perintah di atas adalah perintah untuk masuk ke container yang sedang berjalan dan agar ketika kita keluar, container yang sedang berjalan tersebut tidak ikut mati service-nya.

Setelah berada dalam container, untuk keluar tanpa mematikan service container, tekan Ctrl + P  lalu Ctrl + Q

Semoga bermanfaat. :)

Docker Problem DNS Not Set – resolv.conf

Problem Docker DNS pada container terjadi saat saya memindahkan default folder /var/lib/docker ke folder /home/docker. Ini terjadi karena issue dari SELinux security. Untuk solving problem di atas dengan cara sebagai berikut:

systemctl stop docker.service
mkdir /home/docker
chcon -v --type=docker_var_lib_t /home/docker
systemct start docker.service