Docker network label 관리하기

| 2018년 11월 29일 | 0 Comments

Docker Network label

Docker label이란?

Docker에서의 label은 도커 개체에 특정 메타데이터를 적용하는 방식으로 라벨을 이용하여 이미지 구성과 라이센스 정보 기록, 컨테이너, 볼륨 및 네트워크 간의 관계에 주석을 달거나

응용 프로그램에 적합한 방식으로 주석의 기능을 합니다.

라벨은 key:value의 문자열로 저장됩니다. 객체에 대하여 여러 개의 라벨을 지정할 수 있지만, 각 키 값들은 객체 내에서 고유해야 합니다.

동일한 키에 여러 값이 지정되면 최근에 기록된 값이 이전 값을 전부 덮어쓰게 됩니다.

네트워크에서의 라벨 형식은 –label <key> 혹은 –label <key>=<value>로 네트워크 생성 시 해당 옵션을 통해 생성할 수 있습니다. 

 

Docker label 생성

기본적으로 docker network 생성 명령어는

root@chan# docker network create -d [네트워크 드라이버] [생성할 네트워크 이름] 입니다.

이를 통해 네트워크 생성 시 –label 옵션을 이용하여 네트워크를 생성 할 수 있습니다.

root@chan# docker network create -d bridge –label=networklabel usrnetwork

66b3f31b5b84da49307d31c64fa22641d9d7e60b57f81aa8085062eb7c7f33ed

usrnetwork라는 이름을 가진 브릿지 네트워크를 생성하며 labelnetworklabel 으로 생성됩니다.

이 때 label의 형식으로는 –-label <key> 입니다.

root@chan# docker network create -d bridge –label pch=bridge_network_label usrdefine

98d57dd91f32c9f52e24fb56160d2646ca72d8ff3580b3f1390ab5f35b9edfd3

usrdefine라는 이름을 가진 네트워크를 생성하며 labelpch:bridge_network_label으로 생성됩니다.

label의 형식으로는 –-label <key>=<value>입니다 .

 

생성된 label 확인

Docker network inspect [id]를 이용하여 생성되있는 네트워크 정보를 확인합니다.

Docker network inspect 명령어는 network subnetgateway정보, label 등을 확인할 수 있습니다.

–label <key> 방식

root@chan:~# docker network inspect 66b3f31b5b84da49307d31c64fa22641d9d7e60b57f81aa8085062eb7c7f33ed 

[{

“Name”: “usrnetwork”,

“Id”: “66b3f31b5b84da49307d31c64fa22641d9d7e60b57f81aa8085062eb7c7f33ed”,

“Driver”: “bridge”,

“Labels”: {

“networklabel”: “” // label <key> 방식으로 label 생성 시 value값은 공백이 없는 채 key값만 생성됩니다.

}}]

 

–label <key>:<value> 방식

root@chan:~# docker network inspect 98d57dd91f32c9f52e24fb56160d2646ca72d8ff3580b3f1390ab5f35b9edfd3 

[{

“Name”: “usrdefine”,

“Id”: “98d57dd91f32c9f52e24fb56160d2646ca72d8ff3580b3f1390ab5f35b9edfd3”,

“Labels”: {

“pch”: “bridge_network_label”  // –label <key>:<value> 방식으로 생성 시 “pch”:”bridge_network_label” 문자열로 생성됩니다.

 

Docker filtering

Docker network ls를 통해 생성된 네트워크를 조회할 수 있습니다.

root@chan:~# docker network ls

NETWORK ID NAME DRIVER SCOPE

cca7dfc52f74 bridge bridge local

359f63fa24c5 host host local

f510d8fda439 none null local

45987ff2d359 pch macvlan local

98d57dd91f32 usrdefine bridge local

66b3f31b5b84 usrnetwork bridge local

조회 된 네트워크들 중 label값을 통해 필터링 할 수 있습니다.


root@chan:~# docker network ls -f label=networklabel

NETWORK ID NAME DRIVER SCOPE

66b3f31b5b84 usrnetwork bridge local

key값으로만 network를 필터링 할 수 있을 뿐만 아니라 value값을 포함한 네트워크 또한 필터링하여 조회할 수 있습니다.

root@chan:~# docker network ls -f label=pch=bridge_network_label

NETWORK ID NAME DRIVER SCOPE

98d57dd91f32 usrdefine bridge local

필터링 시 docker network lable=<key>=<value>를 통해 필터링 할 수 있습니다.

Category: LINUX

About the Author ()