(요약)
- 컨테이너 네트워크 사용하기
- 컨테이너 포트 외부로 노출하기
- User-Defined Network 구성하기
- 컨테이너 간 통신 wordpress, mysql 컨테이너 서비스 구축하기
1. 컨테이너 네트워크 사용하기
- docker0 bridge Network
ip addr
brctl show
docker run --name c1 -it busybox
docker inspect c1
docker run --name c2 -it busy box
docker inspect c2
- sandbox : c1의 container의 network 환경을 만들어준 것.
- Endpoint : Veth, 컨테이너 안에 있는 네트워크 인터페이스.
- IP, Gateway, Mac 정보 등을 확인 가능.
docker bridge0 은 IP:172.17.0.1 을 가지며, RUN 된 컨테이너들은 순차적으로 IP:172.17.0.2 ~ 가 할당되는 것을 확인할 수 있다.
docker run -d -p 80:80 --name web1 nginx:latest
curl 172.17.0.4
※ NAT Table 확인
iptables -t nat -L -v
- 172.0.0.0 IP대역에 대하여 anywhere 로 나갈 때 MASQUERADE 해주겠다. (Host의 IP로 바꿔서 송출해주겠다.)
※ IP MASQUERADE (=MASQ, IPMASQ)
리눅스의 NAT(Network Address Translation) 기능으로써 내부 컴퓨터들이 리눅스 서버를 통해서 인터넷 등 다른 네트워크에 접속할 수 있도록 해주는 기능이다.
외부에서는 HOST의 IP 만 알 수 있다. 이는 높은 보안성이라는 장점을 제공하지만, 반면에 외부에서 먼저 내부로 통신을 시도할 수 없지만, 이는 iptable의 포워딩을 통해서 해소할 수 있다. 즉, 외부에서 특정 포트나 프로토콜로 Host에 요청할 경우 지정한 내부 Container로 연결하도록 규칙을 지정할 수 있다.
※ Alias를 생성하여 docker container들 삭제
alias crm='docker rm -f $(docker ps -aq)'
alias
crm
sudo docker ps
2. 컨테이너 포트 외부로 노출하기
- port-forwarding
container port를 외부로 노출시켜 외부 연결 허용
iptables rule을 통한 포트 노출
-p hostPort:containerPort
-p containerPort
-P
docker run --name web1 -d -p 80:80 nginx:latest
docker run --name web2 -d -p 80 nginx:latest
docker run --name web -d -P nginx:latest
3. User-Defined bridge Network 생성
docker network create --driver bridge \
--subnet 192.168.100.0/24 \
--gateway 192.168.100.254 \
mynet
docker network ls
docker run -d --name web -p 80:80 nginx:1.14
curl localhost
sudo docker login
sudo docker run -d --name app.js \
--net mynet --ip 192.168.100.100 \
-p 8080:8080 \
smlinux/appjs
curl localhost:8080
※ docker network 명령어
4. Container Service Operation
- 컨테이너를 이용한 server & client 서비스 운영
sudo docker run -d --name mysql -v /dbdata:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=wordpress \
-e MYSQL_PASSWORD=wordpress mysql:5.7
sudo docker run -d --name wordpress --link mysql:mysql \
-e WORDPRESS_DB_PASSWORD=wordpress -p 80:80 wordpress:4
Reference
- https://www.youtube.com/watch?v=CXrrkl4Zamc
- http://www.ibiblio.org/pub/linux/docs/howto/other-formats/html_single/IP-Masquerade-HOWTO.html#IPMASQ-INTRO1.1
'Docker > 실습' 카테고리의 다른 글
Ubuntu 에 Docker 설치 (1) | 2023.04.20 |
---|---|
[Docker-실습] 8.Container Storage (0) | 2021.10.13 |
[Docker-실습] 7.Container 리소스 관리 (0) | 2021.09.09 |
[Docker-실습] 6.Container 운영 (0) | 2021.08.27 |
[Docker-실습] 5.Container Registry (0) | 2021.08.23 |