Docker networking

  1. bridge network
    • docker가 host에 생성한 private netowrk
    • 모든 container에 할당, IP 이용해 container 간 통신
    • 내부 IP : 172.17.0.1
    • docker 0

  2. none
    • 격리된 네트워크, 접근 불가
  3. host network

  4. user-defined networks

    • 새로운 network 생성 : docker network create --driver=bridge --subnet=182.18.0.0/16 <name>

외부에서 container에 접속하는 방법

  1. bridge network 이용
    • container port <-> host port mapping 필요함
  2. host network 이용
    • container를 host network에 연결
    • host와 container의 network 격리되어 port mapping을 하지 않아도됨
    • container에 설정된 port를 통해 접속 가능
    • 즉, host network에서는 port가 모든 container에 공유되며, 같은 port가 설정된 동일한 container를 여러개 띄우는 것이 불가능 해짐!

Embedded DNS

  • container 끼리는 이름을 사용해 엑세스 가능
    • A와 B를 연결
    • A container 내부에서 B.connet(<B의 내부 IP>)
    • but 내부 IP는 수시로 변함
    • so, 이름을 이용해도 연결되는 DNS를 이용 B.connet(<B>)

실습

docker run -d --network=wp-mysql-network -e MYSQL_ROOT_PASSWORD=db_pass123 --name=mysql mysql:5.6