docker network ls -> 네트워크 종류 조회
- bridge
아무런 설정없이 컨테이너 생성시에 bridge network 가 생성됩니다.
각각의 컨테이너는 하나의 네트워크 인터페이스를 갖게 되고, docker0 라고 하는 bridge 에 포트가 생성되면서 연결이 이루어집니다.
- host
실제 호스트 pc 와 동일한 포트를 사용하게 됩니다.
외부에서 직접 접속할 수 있습니다.
네트워크 카드가 하나밖에 없다보니 모든 컨테이너가 하나의 인터페이스를 사용하다 보니 포트가 다를 경우에만 이용할 수 있습니다.
- none
내부 접속만 가능합니다.
악성코드를 실행환경에서 테스트할 때 사용합니다.
bridge 생성 및 생성한 bridge network 로 alpine 이미지 실행하기
docker network create --subnet [ip지정/prefix] --gateway [ip] [브릿지이름]
docker network create --subnet 192.168.0.0/24 --gateway 192.168.0.254 ksm
docker network inspect ksm -> ksm 네트워크 조회
docker run -itd --net ksm --name aa1 alpine -> aa1 컨테이너 실행
docker inspect aa1 ->aa1 컨테이너의 ip 주소 확인
aa1 컨테이너의 ip 주소가 192.168.0.1 임을 확인하였습니다.
docker run -itd --name a1 alpine -> docker0 브릿지 갖는 a1 컨테이너 생성
docker exec a1 ping 192.168.0.1
a1 컨테이너 ip 주소는 172.17.0.2 이고, aa1 컨테이너와 브릿지가 다르므로 aa1과 통신이 되지 않습니다.
통신이 가능하게 하는 방법은
컨테이너에 네트워크를 추가하는 방법이 있습니다.
<네트워크 삭제하는 방법>
docker rm -f aa1
docker network rm ksm -> 컨테이너를 삭제해야만 네트워크 삭제할 수 있습니다.
host network 쓰는 컨테이너 실행
실행 방법 : --net host 옵션을 넣어줍니다.
docker run -itd --net host --name [생성할 컨테이너 이름] [이미지]
잘못된 case 1)
docker run -itd --network host -p 60080:80 --name h1 httpd
host network는 네트워크 카드를 하나만 쓰기 때문에 -p 옵션 쓸 수가 없습니다.
bridge network 를 쓰는 컨테이너는 컨테이너 생성시 자동적으로 포트가 열리지만,
host network는 포트를 직접 열어주어야 합니다.
잘못된 case2)
또한 동일한 포트 (80번 포트)를 쓰는 apache 와 nginx 컨테이너를 host network로 실행시키면 뒤에 실행된 nginx 는 exit 되어 있게 됩니다. 즉, host 를 사용하면 동일한 포트 쓰는 컨테이너를 동시에 쓸 수 없습니다.
'클라우드 기초 > 도커&컨테이너' 카테고리의 다른 글
쿠버네티스 pod, service, manifest 파일로 pod 생성하기 (0) | 2023.06.22 |
---|---|
wordpress, mysql 컨테이너 생성 및 연결 (0) | 2023.06.20 |
docker export, import (0) | 2023.06.19 |
docker export, import (도커 이미지 복사) (0) | 2023.06.18 |
docker cp, diff, top, commit (0) | 2023.06.18 |
댓글