docker buildx create 명령어를 사용하여 빌더 관리 방법

DockerBeginner
지금 연습하기

소개

이 랩에서는 docker buildx create 명령을 사용하여 Docker 빌더를 효과적으로 관리하는 방법을 배우게 됩니다. 새로운 빌더 인스턴스를 생성하고, 기존 빌더에 새로운 노드를 추가하며, 빌더 및 노드에 사용자 정의 이름을 지정하고, 빌드 노드에 지원되는 플랫폼을 설정하고, 빌드 작업을 위해 새로 생성된 빌더로 자동 전환하는 필수 단계를 다룰 것입니다. 이 랩을 마치면, 멀티 아키텍처 및 분산 빌드를 위해 다양한 빌더 설정을 구성하고 활용하는 방법에 대한 확실한 이해를 갖게 될 것입니다.

새로운 빌더 인스턴스 생성

이 단계에서는 docker buildx create 명령을 사용하여 새로운 빌더 인스턴스를 생성하는 방법을 배우겠습니다. 빌더 인스턴스는 여러 빌드 노드를 관리하는 Docker 객체입니다. 각 노드는 이미지를 빌드하기 위한 서로 다른 아키텍처 또는 환경을 나타낼 수 있습니다.

새로운 빌더를 생성하기 전에, 시스템에 있는 기존 빌더를 확인해 보겠습니다. docker buildx ls 명령을 사용하여 확인할 수 있습니다.

docker buildx ls

일반적으로 default라는 이름의 기본 빌더 인스턴스가 표시됩니다.

이제 새로운 빌더 인스턴스를 생성해 보겠습니다. 이 새로운 빌더의 이름을 mybuilder로 지정하겠습니다.

docker buildx create --name mybuilder

이 명령은 mybuilder라는 이름의 새로운 빌더 인스턴스를 생성합니다. 기본적으로 이 새로운 빌더는 아직 연결된 노드가 없습니다. 다음 단계에서 노드를 추가할 것입니다.

새로운 빌더를 생성한 후, 빌더 목록을 다시 확인하여 새로 생성된 빌더를 볼 수 있습니다.

docker buildx ls

이제 default 빌더와 mybuilder 빌더가 모두 표시됩니다. mybuilder 빌더는 현재 활성 노드가 없으므로 비활성 상태로 표시됩니다.

기존 빌더에 새로운 노드 추가

이전 단계에서 mybuilder라는 이름의 새로운 빌더 인스턴스를 생성했습니다. 현재 이 빌더에는 빌드 노드가 없습니다. 이 단계에서는 이 기존 빌더에 새로운 노드를 추가하겠습니다.

빌드 노드는 기본적으로 빌드 프로세스가 실행될 Docker 엔드포인트입니다. 기본적으로 노드를 지정하지 않고 새로운 빌더를 생성하면 활성 노드 없이 생성됩니다.

mybuilder 빌더에 새로운 노드를 추가하기 위해, docker buildx create 명령을 다시 사용하지만, 이번에는 --append 플래그를 사용하여 노드를 추가하려는 빌더를 지정합니다. mybuilder 빌더에 노드를 추가하겠습니다.

docker buildx create --name mybuilder --append

이 명령은 mybuilder 빌더에 새로운 노드를 추가합니다. 기본적으로 이름을 지정하지 않고 노드를 추가하면 Docker Buildx 가 해당 노드의 이름을 생성합니다.

업데이트된 mybuilder 인스턴스와 새로운 노드를 확인하기 위해 빌더 목록을 다시 확인해 보겠습니다.

docker buildx ls

이제 mybuilder가 하위 노드와 함께 표시됩니다. 노드는 생성된 이름을 가지며 실행 중인 상태일 것입니다.

빌더 및 노드 이름 지정

이전 단계에서 mybuilder라는 빌더를 생성하고 노드를 추가했습니다. 노드에는 자동으로 생성된 이름이 할당되었습니다. 이 단계에서는 빌더와 노드를 생성할 때 둘 다 이름을 지정하는 방법을 배우겠습니다.

먼저, 이전 단계에서 생성한 mybuilder 빌더를 제거하여 처음부터 다시 시작할 수 있도록 하겠습니다.

docker buildx rm mybuilder

이제 새로운 빌더 인스턴스를 생성하고 이름을 custombuilder로 지정해 보겠습니다. 또한 이 빌더 내의 초기 노드 이름을 node1로 지정하겠습니다. 빌더에 --name 플래그를 사용하고 노드에 --node 플래그를 사용하여 이를 수행할 수 있습니다.

docker buildx create --name custombuilder --node node1

이 명령은 custombuilder라는 이름의 새로운 빌더 인스턴스와 node1이라는 이름의 초기 노드를 생성합니다.

이름을 확인하기 위해 빌더 목록을 확인해 보겠습니다.

docker buildx ls

이제 custombuilder가 나열되고 그 아래에 node1이라는 노드가 표시됩니다. 이렇게 하면 빌더와 노드를 구성하고 식별하는 방법을 더 잘 제어할 수 있습니다.

노드에서 지원하는 플랫폼 설정

이 단계에서는 빌드 노드가 지원하는 플랫폼을 지정하는 방법을 배우겠습니다. 이는 멀티 아키텍처 이미지 빌드에 매우 중요합니다. 기본적으로 노드는 실행 중인 호스트의 아키텍처를 지원합니다. 그러나 Buildx 를 사용하면 에뮬레이션 (예: QEMU) 을 사용하여 추가 플랫폼을 지원하도록 노드를 구성할 수 있습니다.

먼저, 이전 단계에서 생성한 custombuilder를 검사하여 해당 노드가 지원하는 플랫폼을 확인해 보겠습니다.

docker buildx inspect custombuilder

출력에서 "Platforms" 필드를 찾으십시오. LabEx VM 의 기본 아키텍처 (예: linux/amd64) 가 표시되어야 합니다.

이제 custombuilder 내의 node1을 업데이트하여 추가 플랫폼을 지원하도록 하겠습니다. --append 플래그와 --platform 플래그를 사용하여 docker buildx create 명령을 사용할 수 있습니다. linux/arm64linux/riscv64에 대한 지원을 추가하겠습니다.

docker buildx create --name custombuilder --append --node node1 --platform linux/arm64,linux/riscv64

기존 빌더 이름과 노드 이름으로 --append를 사용하고 있음에 유의하십시오. 이 명령은 custombuilder 내의 기존 노드 node1을 업데이트하여 지정된 플랫폼을 포함합니다.

node1에 대한 업데이트된 플랫폼을 확인하기 위해 빌더를 다시 검사해 보겠습니다.

docker buildx inspect custombuilder

node1의 "Platforms" 필드에는 이제 linux/amd64, linux/arm64linux/riscv64가 포함되어야 합니다. 즉, 이 노드는 이제 이러한 아키텍처에 대한 이미지를 빌드할 수 있습니다.

새로 생성된 빌더로 자동 전환

이 마지막 단계에서는 새로 생성된 빌더 인스턴스를 사용하도록 자동으로 전환하는 방법을 배우겠습니다. 여러 빌더가 있는 경우 빌드 작업에 사용할 빌더를 Docker Buildx 에 알려야 합니다.

기본적으로 Docker Buildx 는 default 빌더를 사용합니다. docker buildx ls의 출력을 보면 현재 활성 상태인 빌더를 확인할 수 있습니다. 활성 빌더는 이름 옆에 별표 (*) 가 있습니다.

docker buildx ls

생성한 custombuilder를 사용하도록 전환하려면 빌더 이름 뒤에 docker buildx use 명령을 사용할 수 있습니다.

docker buildx use custombuilder

이 명령은 custombuilder를 현재 활성 빌더로 설정합니다. 이후의 모든 docker buildx build 명령은 이제 custombuilder 내에서 구성된 노드를 사용합니다.

빌더를 다시 나열하여 custombuilder가 이제 활성 빌더인지 확인해 보겠습니다.

docker buildx ls

이제 custombuilder 옆에 별표 (*) 가 표시되어 활성 빌더임을 나타냅니다.

새로운 빌더 인스턴스를 성공적으로 생성하고, 노드를 추가하고, 둘 다에 이름을 지정하고, 노드에 대해 지원되는 플랫폼을 설정하고, 이 새로운 빌더를 사용하도록 전환했습니다.

요약

이 랩에서는 docker buildx create 명령을 사용하여 Docker 빌더를 관리하는 방법을 배웠습니다. 먼저 mybuilder라는 새 빌더 인스턴스를 생성하여 별도의 빌드 환경을 초기화하는 방법을 시연했습니다. 그런 다음 기존 빌더에 새 빌드 노드를 추가하는 방법을 살펴보고, mybuilder 인스턴스에 빌드 엔드포인트를 효과적으로 추가했습니다.

또한, 더 나은 구성과 명확성을 위해 빌더와 해당 노드 모두에 대한 사용자 지정 이름을 지정하는 방법을 다루었습니다. 또한 특정 빌드 노드가 지원하는 특정 플랫폼 (아키텍처) 을 정의하여 대상 빌드를 활성화하는 방법도 배웠습니다. 마지막으로, 새로 생성된 빌더로 자동 전환하여 후속 빌드 작업에 대한 활성 빌더로 만드는 연습을 했습니다.