3_도커컨테이너 구성_tutorial + (네트워크 DRIVER개념)
참고
https://hub.docker.com/r/emqx/emqx
https://docs.docker.com/engine/tutorials/networkingcontainers/
DRIVER 설명 ( host,null,bridge ), bridge나 host에 연결된 컨테이너 확인,
EMQX 도커 컨테이너를 구성 하기에 앞서
docker network ls
여기에 있는 개념부터 이해해야 함.
도커 컨테이너를 만들때 network.DRIVER를 어떤거로 쓸지정해야 하고,
DRIVER를 정했으면 SCOPE를 전역으로 할지 지역(로컬)로 쓸지도 나눠줘야한다.
도커컨테이너를 DRVIER를 bridge에 외부망(SCOPE를 로컬이아닌 전역)으로 쓰는 경우
도커컨테이너를 DRVIER를 bridge에 내부망(SCOPE를 전역이아닌 로컬)으로 쓰는 경우
도커컨테이너를 DRVIER를 host에 내부망으로 쓰는 경우 이다.
docker 듀토리얼 (구성 3가지방법)
기본 네트워크에서 컨테이너 시작
1_1 기본 네트워크 종류
$ docker network ls
NETWORK ID NAME DRIVER
18a2866682b8 none null
c288470c46f6 host host
7b369448dccb bridge bridge
Docker 엔진을 설치할 때마다 자동으로 3개의 기본 네트워크가 포함
1_2
bridge는 특수 네트워크입니다. 달리 지정하지 않는 한 Docker는 항상 이 네트워크에서 컨테이너를 시작
1_3 기본생성
$ docker run -itd --name=networktest ubuntu
74695c9cea6d9810718fddadc01a727a5dd3ce6a69d09752239736c030599741
아무 옵션없이 구성
1_4 bridge DRIVER에 할당됬는지 확인하는법
docker run -itd --name=wonhyeok ubuntu
docker inspect bridge
1_5 해설 : bridge에 연결된 wonhyeok 이라는 컨테이너 해제
docker network disconnect bridge wonhyeok
나만의 브리지 네트워크
2_1. 브릿지 드라이버를 이용해서 나만의 네트워크를 만듬
docker network create -d bridge my_bridge
docker network ls
2_2 다른 네트워크 대역대를 가진 내 네트워크
docker network inspect my_bridge
docker network inspect bridge
bridge 네트워크는 172.17.0.0
my_bridge 네트워크는 172.23.0.0
AAA.BBB.CCC.DDD 중에 A,B,C클래스가 전부 같아야 같은 대역대의 네트워크다
네트워크에 컨테이너 추가
3_1 .. web 은 기본 브릿지로 할당할거고, db는 내가 만든 network 에 할당할거다.
이런 모양의 네트워크 컨테이너를 만들어보자
10.0.0.254 가 아니라 172.23.0.254로 IP주소 뜰꺼임
172.17.0.X는 브릿지 고정 IP 지만,
network create 생성시의 IP는 자동할당이라서 어쩔 수 업씀. 아니면 고정 IP로 해서 써야함
3_2 우선 DB 쪽 컨테이너 구성
내가 만든 network 에 할당 할거라 --net=my_bridge 옵션을 써줘야 한다.
docker run -d --net=my_bridge --name db training/postgres
docker inspect --format='{{jason .NetworkSettings.Networks}}' db
3_2 Web 쪽 컨테이너 구성
docker run -d --name web training/webapp python app.py
docker inspect --format='{{json .NetworkSettings.Networks}}' web
3_3 컨테이너 구성이 된건지 , 컨테이너 멈출지 , 지울지 , 지워진거 다지울지 , 컨테이너들 다볼건지 등등
docker container --help 보고 하면됨 사실 쉬운편
exec 같은경우는 옵션이 타고타고 들어가는 부분들이 많음
그럴 떄는
" docker container exec --help " 이런식으로 하나씩 옵션 너가면서 하믄됌
그럼 결론이
docker container exec -it db bash
이런식으로 까지 도달 할 수 있음.
밑에껀 했던거 사진
docker container ls
docker container --help
docker container exec --help
요건 어려움 포멧으로 컨테이너 이름 적어줘서 IP 찾는기임
docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' web
docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' db
3_4 DB 컨테이너 핑 도는거 확인 + db컨테이너 bash쉘 로 접속(실행)
docker container exec -it db bash
ping 172
4_1 Network_A(브릿지) 랑 Network_B(개인네트워크) 참조하기
Docker 네트워킹을 사용하면 원하는 만큼 많은 네트워크에 컨테이너를 연결할 수 있습니다.
이미 실행 중인 web앱을 my_bridge 컨테이너를 연결할 수도 있습니다.
구성도
4_2 web 컨테이너 bash 에서 핑찍어보고 안되는거 확인
docker container exec -it db bash
4_3 방법 1
docker network connect my_bridge web
이거 한줄이면 된다 ㄹㅇ
4_4 확인
여기서 독특한 점은 ping "ip주소" 하면 안되고 ping "컨테이너이름" 해야함
ping web