본문 바로가기

클라우드 컴퓨팅

[클라우드]도커 네트워킹 구성

도커 네트워크 (Docker Network)

도커 컨테이너와 서비스가 강력한 이유 중 하나는 도커 간 연결이 가능하고 도커를 도커가 아닌 다른 워크로드에 연결이 가능하다.

도커 컨테이너와 서비스는 도커 엔진 상에서 실행되고 있는지 피어가 도커 엔진 상에서 실행되고 있는지를 알 필요가 없다.

또한 Docker 엔진이 실행되는 호스트가 Linux이든 Windows 이든, Mac OS X 이든 상관없이 플랫폼에 구애받지 않고

Docker를 사용하여 컨테이너를 관리할 수 있다.

이를 위해 도커 네트워킹 개념이 정의되어 있으며 이러한 기능을 최대한 활용하도록 애플리케이션을 설계 배포할 수 있어야 한다.

 

도커 네트워크 관련 명령어

1. 기본 docker network 명령어

컨테이너 네트워크를 구성하고 관리하기 위해서 $docker network 명령어가 사용된다.

명령어에 대한 사용 방법은 다음과 같다.

$docker network

Usage: docker network COMMAND

Manage networks

Commands:
	connect 	Connect a container to a network
	create 		Create a network
	disconnect 	Disconnect a container from a network
	inspect 	Display detailed information on one or more networks
	ls		List networks
	prune 		Remove all unused networks
	rm		Remove one or more networks
    
Run 'docker network COMMAND --help' for more information on a command.

2. 도커 호스트에 존재하는 컨테이너 네트워크 확인

도커 호스트에 존재하는 컨테이너 네트워크를 확인할 수 있는 명령어는 다음과 같다.

각 네트워크는 유일한 ID와 NAME 속성을 가진다. 또한 각 네트워크는 하나의 네트워크 드라이버와 관련이 있다.

brdge 네트워크와 host 네트워크는 같은 이름의 네트워크 드라이버를 가진다.

$docker network ls
NETWORK ID NAME DRIVER SCOPE
2972f6d4acc1 bridge bridge local
78d3e55198f2 host host local
a8782f92e9fe none null local

3. 네트워크 상세 조사

상세한 네트워크 구성 정보를 얻을 때 사용된다. 상세 정보는 이름, 식별자, 드라이버, 서브넷 정보, 연결된 컨테이너, IPAM 드라이버 등의 정보가 포함된다.

$docker network inspect <네트워크 이름>

예로 bridge 이라는 이름을 가진 네트워크에 대한 정보를 확인하는 명령어는 다음과 같다.

$docker network inspect bridge
[
    {
        "Name": "bridge",
        "Id": "2972f6d4acc177e473469be238d9c39c108bd697c44d8096fe6eea30b63bc683",
        "Created": "2022-11-02T01:35:27.025697821Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16",
                    "Gateway": "172.17.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        },
        "Labels": {}
    }
]

4. 네트워크 드라이버 플러그인의 목록 확인

도커 호스트에 설치된 네트워크 드라이버 플러그인  목록을 확인하는 명령어는 다음과 같다. 

$docker network info

실행 결과는 Client와 Server로 구분하여 플러그인된 목록을 보여준다. 다음은 Server와 관련한 정보 중 일부를 나타낸 것이다.

 

Server:
Containers: 45
Running: 10
Paused: 0
Stopped: 35
Images: 24
Server Version: 20.10.10
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog