협업툴,가상환경 정리/docker_정리

3_도커컨테이너 구성_tutorial + (네트워크 DRIVER개념)

알 수 없는 사용자 2022. 4. 21. 15:56

 참고

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