도커 네트워크
- 도커 컨테이너 간의 통신을 가능하게 해주는 가상 네트워크. 컨테이너는 동일한 네트워크에 연결되어 있어야 서로 이름으로 통신이 가능하다.
네트워크 종류
네트워크 종류 | 설명 |
---|---|
bridge(default) | 단일 호스트 내 컨테이너간 통신. 기본 사용자 정의 네트워크 |
host | 컨테이너가 호스트의 네트워크를 그대로 사용. 성능은 좋지만 포트 충돌의 위험이 있음 |
none | 네트워크 기능이 없는 경우로 컨테이너를 격리된 상태로 만든다. |
overlay | 여러 호스트에 걸친 컨테이너간 통신. Docker swarm에서 사용된다. |
macvlan | 컨테이너가 실제 물리적 네트워크의 IP를 가지도록 함. 외부와 직접 통신 가능 |
컨테이너 네트워크 설정 방법
네트워크 만들기
docker network create NETWORK_NAME
네트워크 옵션을 포함한 컨테이너 생성
docker run -d -p 80:80 --network test-net1 --name test-nginx nginx:1.0.0
docker run -d --network test-net1 --name test-nodeserver nodeserver:1.0.0
- 위과 같이 생성된 test-nginx, test-nodeserver 컨테이너는
test-net1
이라는 네트워크로 함께 묶여 서로간의 통신이 가능하다.
컨테이너 정보 확인
docker inspect CONTAINER_ID
,docker network inspect NETWORK_ID
- 컨테이너 정보 또는 네트워크 정보를 확인하여 생성된 네트워크의 IP주소에 따라 컨테이너 내부 설정값을 변경하여 사용 가능하다.
도커 볼륨
- 도커에서 데이터를 컨테이너 외부에 안전하게 저장하기 위한 메커니즘으로 만약 컨테이너를 삭제 후 제 생성하더라도 볼륨을 연결하면 데이터를 유지할수 있다.
볼륨의 종류
유형 | 설명 |
---|---|
volume | 도커가 직접 관리하는 외부 스토리지 |
bind mount | 호스트의 디렉터리를 직접 연결 |
tmpfs | 휘발성 메모리 기반 저장 (리눅스 한정) |
컨테이너 볼륨 설정 방법
볼륨 생성
docker volume create VOLUME_NAME
컨테이너 불륨 연결
docker run -d --name test-mariadb -v test-vol1:/var/lib/mysql mariadb:latest
- DB 와 같은 경우 컨테이너 삭제와 함께 데이터가 삭제 되는 것을 방지하거나 여러 컨테이너간의 데이터의 공유가 가능하다.