심심한 개발자의 취미생활

도커 네트워크

  • 도커 컨테이너 간의 통신을 가능하게 해주는 가상 네트워크. 컨테이너는 동일한 네트워크에 연결되어 있어야 서로 이름으로 통신이 가능하다.

네트워크 종류

네트워크 종류 설명
bridge(default) 단일 호스트 내 컨테이너간 통신. 기본 사용자 정의 네트워크
host 컨테이너가 호스트의 네트워크를 그대로 사용. 성능은 좋지만 포트 충돌의 위험이 있음
none 네트워크 기능이 없는 경우로 컨테이너를 격리된 상태로 만든다.
overlay 여러 호스트에 걸친 컨테이너간 통신. Docker swarm에서 사용된다.
macvlan 컨테이너가 실제 물리적 네트워크의 IP를 가지도록 함. 외부와 직접 통신 가능

컨테이너 네트워크 설정 방법

  1. 네트워크 만들기

    • docker network create NETWORK_NAME
  2. 네트워크 옵션을 포함한 컨테이너 생성

    • 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이라는 네트워크로 함께 묶여 서로간의 통신이 가능하다.
  3. 컨테이너 정보 확인

    • docker inspect CONTAINER_ID, docker network inspect NETWORK_ID
    • 컨테이너 정보 또는 네트워크 정보를 확인하여 생성된 네트워크의 IP주소에 따라 컨테이너 내부 설정값을 변경하여 사용 가능하다.

도커 볼륨

  • 도커에서 데이터를 컨테이너 외부에 안전하게 저장하기 위한 메커니즘으로 만약 컨테이너를 삭제 후 제 생성하더라도 볼륨을 연결하면 데이터를 유지할수 있다.

볼륨의 종류

유형 설명
volume 도커가 직접 관리하는 외부 스토리지
bind mount 호스트의 디렉터리를 직접 연결
tmpfs 휘발성 메모리 기반 저장 (리눅스 한정)

컨테이너 볼륨 설정 방법

  1. 볼륨 생성

    • docker volume create VOLUME_NAME
  2. 컨테이너 불륨 연결

    • docker run -d --name test-mariadb -v test-vol1:/var/lib/mysql mariadb:latest
    • DB 와 같은 경우 컨테이너 삭제와 함께 데이터가 삭제 되는 것을 방지하거나 여러 컨테이너간의 데이터의 공유가 가능하다.