[Docker] Docker Network
Docker Network
도커는 기본으로 세 개의 네트워크를 제공한다.
- bridge network
- host network
- none network
Bridge Network
컨테이너 간 연결을 제공하며 컨테이너를 구동하는 호스트 네트워크가 구분 된다.
Host Network
컨테이너를 위한 별도 네트워크 없이 호스트와 동일한 네트워크를 사용한다.
None Network
네트워크 연결을 갖지 않는다.
Network Scope
네트워크의 범위.
- local
- global
- swarm
local
컨테이너 간 연결은 네트워크가 존재하는 호스트로 제한됨.
global
클러스터의 모든 노드에 네트워크가 존재하지만 호스트 간 라우팅은 지원하지 않는다.
swarm
도커 스웜에 참여하는 모든 호스트로 연결을 확장한다.
예제
컨테이너 간 연결 : Bridge Network
docker run --rm --name dbadmin --link mysqldb:db -p 8080:8080 adminer
–link 옵션이 중요하다. –link containe_name:identify –link 명령어의 첫번째 파라미터는 컨에티너의 이름이며, 그 다음은 컨테이너 내부에서 사용할 식별다.
즉 dbadmin 컨테이너 내부에서 db라는 이름으로 mysqldb컨테이너에 접근할 수 있다는 것을 의미한다.
### 직접 생성해서 연결
docker network create
–driver bridge
–attachable
–scope local
–subnet 10.0.7.0/24
–ip-range 10.0.7.0/24
mynet
mynet라는 이름으로 driver는 bridge 로,
--attachable 옵션은 컨테이너가 언제든지 네트워크에 연결하거나 떨어질 수 있게 설정한다.
--subnet과 --ip-range는 서브넷과 할당 가능한 IP 범위를 지정한다.
네트워크를 생성했다면 컨테이너를 네트워크에 붙일 수 있다. 컨테이너를 실행할 때 --network 옵션을 사용하면 된다.
docker run –name mysqldb
–network mynet
-e MYSQL_ROOT_PASSWORD=rootpw
-d mysql:5.7
# 관련 명령어
docker network ls