중요한건 꺾이지 않는 맥북
컨테이너간 통신(네트워크) 본문
기본적으로 docker를 설치하게 되면 위와 같이 docker0 가 bridge 역할을 한다.
docker0
- virtual ethernet bridge : 172.17.0.0/16
- L2 통신기반
- container 생성 시 veth 인터페이스 생성 (sandbox)
- 모든 컨테이너는 외부 통신을 docker0 통해 진행
- container running 시 172.17.X.Y 로 ip 주소할당
PORT-FORWARDING
- container port 를 외부로 노출시켜 외부 연결 허용
- iptables rule을 통한 포트 노출
- -p hostPort:containerPort
- -p containerPort
- -P
$ docker run --name web -d -p 80:80 nginx:1.14
$ iptables -t nat -L -n -v
USER-DEFINED BRIDGE NETWORK 생성
$ docker network create --driver bridge --subnet 192.168.100.0/24 --gateway 192.168.100.254 mynet
<subnet 옵션으로 192.168.100.0/24번 대역대의 ip를 할당 받을 수도 있고 gateway 옵션으로 192.168.100.254 의 고정 ip를 할당하는 방법도 있다.>
$ docker network ls
$ 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
컨테이너를 이용한 server & client 서비스 운영
# docker run -d --name mysql -v /dbdata:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=wordpress -e MYSQL_PASSWORD=wordpress mysql:5.7
- 도커호스트의 /dbdata와 mysql 데이터를 마운팅한다.
# docker run -d --name wordpress --link mysql:mysql -e WORDPRESS_DB_PASSWORD=wordpress -p 80:80 wordpress:4
- link 옵션은 containerName:NewName으로 작성한다. NewName 은 wordpress 에서 사용할 새로운 이름이다.
'MLOPS > docker' 카테고리의 다른 글
Docker Mount Volume 용량 초과 이슈 (0) | 2023.10.26 |
---|---|
Docker Private Registry 에서 특정 이미지(레포지토리) 삭제하는 방법 (2) | 2023.10.26 |
빌드에서 운영까지(using Docker Compose) (0) | 2022.01.17 |
컨테이너가 만들어주는 데이터 보존하기 (0) | 2022.01.16 |