docker network ls 명령으로 네트워크 목록 및 필터링 방법

DockerBeginner
지금 연습하기

소개

이 랩에서는 docker network ls 명령어를 효과적으로 사용하여 Docker 네트워크를 나열하고 필터링하는 방법을 배우게 됩니다. 먼저 사용 가능한 모든 네트워크를 나열하는 것으로 시작하여 --no-trunc 옵션을 사용하여 전체 네트워크 ID 를 표시하는 방법을 살펴보겠습니다.

또한 드라이버 (driver), 이름 (name), 범위 (scope), 유형 (type) 등 다양한 기준에 따라 네트워크를 필터링하는 연습을 할 것입니다. 마지막으로, 사용자 정의 표시를 위해 템플릿을 사용하여 docker network ls 명령의 출력을 형식화하는 방법을 배우게 됩니다. 이 랩은 명령줄을 사용하여 Docker 네트워크를 관리하고 검사하는 데 필요한 필수 기술을 갖추도록 해줄 것입니다.

모든 Docker 네트워크 목록

이 단계에서는 시스템에서 사용 가능한 모든 Docker 네트워크를 나열하는 방법을 배우게 됩니다. Docker 네트워크는 컨테이너가 서로 통신하고 외부 세계와 통신하는 데 필수적입니다. 기본적으로 Docker 는 bridge, host, none의 세 가지 네트워크를 생성합니다.

모든 Docker 네트워크를 나열하려면 docker network ls 명령어를 사용합니다. 이 명령어는 ID, 이름 (name), 드라이버 (driver), 범위 (scope) 를 포함한 네트워크 목록을 제공합니다.

사용 가능한 네트워크를 확인하기 위해 명령어를 실행해 보겠습니다.

docker network ls

다음과 유사한 출력을 볼 수 있습니다.

NETWORK ID     NAME      DRIVER    SCOPE
b432a7b0f123   bridge    bridge    local
f567c8d1e234   host      host      local
a987b6c5d4e3   none      null      local

출력은 기본 네트워크를 보여줍니다. NETWORK ID는 네트워크의 고유 식별자입니다. NAME은 네트워크의 이름입니다. DRIVER는 네트워크에서 사용되는 네트워크 드라이버입니다 (예: bridge, host, null). SCOPE는 네트워크를 사용할 수 있는 위치를 나타냅니다 (예: local).

ID 를 자르지 않고 네트워크 목록 표시

이전 단계에서 Docker 네트워크를 나열했을 때 NETWORK ID가 잘린 것을 확인했습니다. 이것은 출력을 간결하게 유지하기 위한 기본 동작입니다. 그러나 다른 Docker 명령어에서 특정 네트워크를 참조할 때와 같이 전체 네트워크 ID 가 필요한 경우가 있습니다.

전체 네트워크 ID 를 표시하려면 docker network ls 명령어와 함께 --no-trunc 옵션을 사용할 수 있습니다.

전체 네트워크 ID 를 확인하기 위해 이 명령어를 시도해 보겠습니다.

docker network ls --no-trunc

이제 출력은 전체 네트워크 ID 를 표시합니다.

NETWORK ID                                                       NAME      DRIVER    SCOPE
b432a7b0f1234567890abcdef1234567890abcdef1234567890abcdef12345678 bridge    bridge    local
f567c8d1e234567890abcdef1234567890abcdef1234567890abcdef12345678 host      host      local
a987b6c5d4e3210fedcba9876543210fedcba9876543210fedcba9876543210fed none      null      local

보시다시피, NETWORK ID 열은 이제 잘리지 않은 전체 ID 를 표시합니다. 이는 추가 작업을 위해 전체 ID 를 복사하여 붙여넣어야 할 때 유용합니다.

드라이버별 네트워크 필터링

이 단계에서는 드라이버를 기반으로 Docker 네트워크 목록을 필터링하는 방법을 배우게 됩니다. 이는 bridge 또는 host와 같은 특정 드라이버를 사용하는 네트워크만 보려는 경우 유용합니다.

docker network ls 명령어와 함께 --filter 옵션을 사용하여 출력을 필터링할 수 있습니다. 필터 구문은 key=value입니다. 드라이버별로 필터링하려면 driver 키를 사용합니다.

bridge 드라이버를 사용하는 네트워크만 표시하도록 네트워크를 필터링해 보겠습니다.

docker network ls --filter driver=bridge

이제 출력은 bridge 드라이버가 있는 네트워크만 표시합니다.

NETWORK ID     NAME      DRIVER    SCOPE
b432a7b0f123   bridge    bridge    local

이제 host 드라이버를 사용하는 네트워크만 표시하도록 네트워크를 필터링해 보겠습니다.

docker network ls --filter driver=host

이제 출력은 host 드라이버가 있는 네트워크만 표시합니다.

NETWORK ID     NAME      DRIVER    SCOPE
f567c8d1e234   host      host      local

이 필터링 기능을 사용하여 기본 기술을 기반으로 네트워크를 빠르게 찾을 수 있습니다.

이름으로 네트워크 필터링

이 단계에서는 이름별로 Docker 네트워크 목록을 필터링하는 방법을 배우게 됩니다. 이는 특정 네트워크를 이름으로 찾으려는 경우 유용합니다.

드라이버별 필터링과 마찬가지로, docker network ls 명령어와 함께 --filter 옵션을 사용합니다. 이름별로 필터링하려면 name 키를 사용합니다.

bridge라는 이름의 네트워크만 표시하도록 네트워크를 필터링해 보겠습니다.

docker network ls --filter name=bridge

이제 출력은 bridge라는 이름의 네트워크만 표시합니다.

NETWORK ID     NAME      DRIVER    SCOPE
b432a7b0f123   bridge    bridge    local

이제 host라는 이름의 네트워크만 표시하도록 네트워크를 필터링해 보겠습니다.

docker network ls --filter name=host

이제 출력은 host라는 이름의 네트워크만 표시합니다.

NETWORK ID     NAME      DRIVER    SCOPE
f567c8d1e234   host      host      local

이 필터를 사용하여 이름을 알고 있는 네트워크를 빠르게 찾을 수 있습니다.

범위 및 유형별 네트워크 필터링

이 단계에서는 범위 및 유형을 기반으로 Docker 네트워크 목록을 필터링하는 방법을 배우게 됩니다. scope는 네트워크가 사용 가능한 위치를 나타내고 (예: local 또는 swarm), type은 네트워크 드라이버를 나타냅니다. type은 종종 driver와 동일하지만, type을 필터 키로 사용하는 것도 가능합니다.

docker network ls 명령어와 함께 --filter 옵션을 사용하여 출력을 필터링할 수 있습니다. 범위를 필터링하려면 scope 키를 사용합니다. 유형을 필터링하려면 type 키를 사용합니다.

local 범위를 가진 네트워크만 표시하도록 네트워크를 필터링해 보겠습니다.

docker network ls --filter scope=local

출력은 local 범위를 가진 모든 네트워크를 표시합니다.

NETWORK ID     NAME      DRIVER    SCOPE
b432a7b0f123   bridge    bridge    local
f567c8d1e234   host      host      local
a987b6c5d4e3   none      null      local

이제 bridge 유형을 가진 네트워크만 표시하도록 네트워크를 필터링해 보겠습니다.

docker network ls --filter type=bridge

출력은 bridge 유형의 네트워크를 표시합니다 (이 경우 bridge 드라이버와 동일합니다).

NETWORK ID     NAME      DRIVER    SCOPE
b432a7b0f123   bridge    bridge    local

--filter 옵션을 여러 번 사용하여 필터를 결합할 수 있습니다. 예를 들어, local 범위와 bridge 드라이버를 가진 네트워크를 필터링하려면 다음과 같이 합니다.

docker network ls --filter scope=local --filter driver=bridge

이것은 이 특정 환경에서 type=bridge 로 필터링하는 것과 동일한 결과를 제공하지만, 필터를 결합하는 방법을 보여줍니다.

템플릿을 사용하여 네트워크 출력 형식 지정

이 단계에서는 Go 템플릿을 사용하여 docker network ls 명령의 출력을 형식 지정하는 방법을 배우게 됩니다. 이는 필요한 정보만 특정 형식으로 표시하도록 출력을 사용자 정의할 수 있는 강력한 기능입니다.

--format 옵션을 사용하면 템플릿을 지정할 수 있습니다. 템플릿은 Go 의 text/template 패키지 구문을 사용합니다. .ID, .Name, .Driver, .Scope와 같은 네트워크 객체의 다양한 필드에 액세스할 수 있습니다.

콜론으로 구분된 네트워크 이름과 드라이버만 표시하도록 출력을 형식 지정해 보겠습니다.

docker network ls --format "{{.Name}}: {{.Driver}}"

이제 출력은 템플릿에 따라 형식 지정됩니다.

bridge: bridge
host: host
none: null

형식 지정된 출력에 헤더를 포함할 수도 있습니다.

docker network ls --format "Network Name\tDriver\n{{.Name}}\t{{.Driver}}"

이제 출력에 헤더가 포함됩니다.

Network Name    Driver
bridge          bridge
host            host
none            null

\t는 탭 공간을 만들고, \n은 새 줄을 만듭니다. 이러한 형식 지정 기능은 스크립팅 및 보고서 생성에 매우 유용합니다.

요약

이 랩에서는 docker network ls 명령을 사용하여 Docker 네트워크를 나열하는 방법을 배웠습니다. 먼저 사용 가능한 모든 네트워크를 나열하여 기본 네트워크와 해당 기본 정보 (ID, 이름, 드라이버, 범위) 를 관찰했습니다. 그런 다음 특정 네트워크를 참조하는 데 유용한 --no-trunc 옵션을 사용하여 전체 네트워크 ID 를 표시하는 방법을 살펴보았습니다.

또한 다양한 기준에 따라 네트워크 목록을 필터링하는 연습을 했습니다. --filter driver=<driver_name> 옵션을 사용하여 드라이버별로, --filter name=<network_name>을 사용하여 네트워크 이름별로, --filter scope=<scope>--filter type=<type>을 사용하여 범위 및 유형별로 필터링하는 방법을 배웠습니다. 마지막으로, --format 옵션과 Go 템플릿을 사용하여 docker network ls 명령의 출력을 형식 지정하는 방법을 발견하여 표시되는 정보를 사용자 정의할 수 있었습니다.