Q1. 컨테이너는 어떻게 통신하나요?
모든 컨테이너는 외부 통신을 docker0 를 통해 진행
docker0 bridge interface
Q2. 컨테이너 포트를 외부로 노출할 수 있어요 ?
port-forwarding
-container port를 외부로 노출시켜 외부 연결 허용
iptables rule을 통한 포트 노출
-p hostPort:caontainerPort
-p conatainerPort
-P:대문자는 expose 한 포트와 매칭을 시키고 랜덤으로 포트를 만들어 주게된다.
docker run --name web -d -p 80:80 nginx:1.14
iptables -t nat -L -n -v
Q3. 컨테이너 네트워크를 추가할수 있나요?
user-defined bridge network 생성
docker network create --driver bridge
--subnet 192.168.100.0/24
--gateway 192.168.100.254
mynet
만들어진 네트워크를 확인하기 위해서 사용하는 명령어
docker network ls
gateway 할당 안할 시 192.168.100.1이 할당되게 된다.
docker run -d --name web -p 80:80 nginx:1.14
curl localhost
docker run -d --name appjs
--net mynet --ip 192.168.100.100
-p 8080:8080
smlinux/appjs
curl localhost:8080
Q4. 컨테이너끼리 통신은 어떻게 하나요?
docker run -d --name mysql -v/dbdata:/var/lib/ysql -e
MYSQL_ROOT_PASSWORD=wordpress -e
MYSQL_PASSWORD=wordpress mysql:5.7
docker run -d --name wordpress --link mysql:mysql -e
WORDPRESS_DB_PASSWORD=wordpress -p 80:80 wordpress:4
--link: 두개의 컨테이너를 연결시켜주는 역할
도커 환경에서 여러 컨테이너를 동일한 환경에서 연동시키기 위해서 네트워크 설정이 필요합니다.
여기서는 MySQL 과 springboot app이 동일한 네트워크에서 구동되도록 해주어야 합니다.
일단 네트워크부터 하나 생성해줍니다.
$ docker network create springboot-mysql-net
생성된 네트워크는 아래 명령어로 확인 가능합니다.
$ docker network ls
mysql container를 run 시켜주고 network group을 springboot-mysql-net으로 연결시켜주는 역할을 해준다.
docker run --name db-mysql -p 3306:3306 --network springboot-mysql-net -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=mydb -e MYSQL_USER=user -e MYSQL_PASSWORD=user -d mysql:5.7
springboot container를 rurn 시켜주고 network group을 springboot-mysql-net에 종속시켜주면 된다.
docker run -p 8080:8080 --name springboot-mysql --network springboot-mysql-net -d springboot-mysql:1.0
'따배도 스터디' 카테고리의 다른 글
10-1 빌드에서 운영까지 (using Docker Compose) - 이론편 (0) | 2023.04.30 |
---|---|
9-2 컨테이너간 통신(네트워크)- 실습편 (0) | 2023.04.29 |
8-2 Docker Container Storage - 실습편 (0) | 2023.04.25 |
8-1 Docker Container Storage - 이론편 (0) | 2023.04.25 |
7-2 컨테이너 리소스를 관리해야지 -실습편 (0) | 2023.04.21 |