Docker Machine을 사용하여 Azure에서 호스트를 만드는 방법How to use Docker Machine to create hosts in Azure

이 문서는 Docker Machine을 사용하여 Azure에서 호스트를 만드는 방법을 자세히 설명합니다.This article details how to use Docker Machine to create hosts in Azure. docker-machine 명령은 Azure에서 Linux VM(가상 머신)을 만든 다음 Docker를 설치합니다.The docker-machine command creates a Linux virtual machine (VM) in Azure then installs Docker. 동일한 로컬 도구 및 워크플로를 사용하여 Azure에서 Docker 호스트를 관리할 수 있습니다.You can then manage your Docker hosts in Azure using the same local tools and workflows. Windows 10에서 Docker-컴퓨터를 사용하려면 Linux bash를 사용해야 합니다.To use docker-machine in Windows 10, you must use Linux bash.

Docker Machine으로 VM 만들기Create VMs with Docker Machine

먼저, 다음과 같이 az 계정 표시로 Azure 구독 ID를 가져옵니다.First, obtain your Azure subscription ID with az account show as follows:

sub=$(az account show --query "id" -o tsv)

드라이버로 azure를 지정하여 docker-machine create로 Azure에서 Docker 호스트 VM을 만듭니다.You create Docker host VMs in Azure with docker-machine create by specifying azure as the driver. 자세한 내용은 Docker Azure 드라이버 설명서를 참조하세요.For more information, see the Docker Azure Driver documentation

다음 예제에서는 myVM이라는 VM을 만들고 "표준 D2 v2" 계획에 따라 azureuser라는 사용자 계정을 만들고 호스트 VM에서 포트 80을 엽니다.The following example creates a VM named myVM, based on "Standard D2 v2" plan, creates a user account named azureuser, and opens port 80 on the host VM. 프롬프트를 따라 Azure 계정에 로그인하고 리소스를 만들고 관리하도록 Docker Machine에 사용 권한을 부여합니다.Follow any prompts to log in to your Azure account and grant Docker Machine permissions to create and manage resources.

docker-machine create -d azure \
    --azure-subscription-id $sub \
    --azure-ssh-user azureuser \
    --azure-open-port 80 \
    --azure-size "Standard_DS2_v2" \
    myvm

출력은 다음 예제와 유사합니다.The output looks similar to the following example:

Creating CA: /Users/user/.docker/machine/certs/ca.pem
Creating client certificate: /Users/user/.docker/machine/certs/cert.pem
Running pre-create checks...
(myvm) Completed machine pre-create checks.
Creating machine...
(myvm) Querying existing resource group.  name="docker-machine"
(myvm) Creating resource group.  name="docker-machine" location="westus"
(myvm) Configuring availability set.  name="docker-machine"
(myvm) Configuring network security group.  name="myvm-firewall" location="westus"
(myvm) Querying if virtual network already exists.  rg="docker-machine" location="westus" name="docker-machine-vnet"
(myvm) Creating virtual network.  name="docker-machine-vnet" rg="docker-machine" location="westus"
(myvm) Configuring subnet.  name="docker-machine" vnet="docker-machine-vnet" cidr="192.168.0.0/16"
(myvm) Creating public IP address.  name="myvm-ip" static=false
(myvm) Creating network interface.  name="myvm-nic"
(myvm) Creating storage account.  sku=Standard_LRS name="vhdski0hvfazyd8mn991cg50" location="westus"
(myvm) Creating virtual machine.  location="westus" size="Standard_A2" username="azureuser" osImage="canonical:UbuntuServer:16.04.0-LTS:latest" name="myvm
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Detecting the provisioner...
Provisioning with ubuntu(systemd)...
Installing Docker...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Checking connection to Docker...
Docker is up and running!
To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env myvm

Docker 셸 구성Configure your Docker shell

Azure에서 Docker 호스트에 연결하려면 적절한 연결 설정을 정의합니다.To connect to your Docker host in Azure, define the appropriate connection settings. 출력의 끝에서 설명했듯이 다음과 같이 Docker 호스트에 대한 연결 정보를 확인합니다.As noted at the end of the output, view the connection information for your Docker host as follows:

docker-machine env myvm

다음 예제와 유사하게 출력됩니다.The output is similar to the following example:

export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://40.68.254.142:2376"
export DOCKER_CERT_PATH="/Users/user/.docker/machine/machines/machine"
export DOCKER_MACHINE_NAME="machine"
# Run this command to configure your shell:
# eval $(docker-machine env myvm)

연결 설정을 정의하기 위해 제안된 구성 명령(eval $(docker-machine env myvm))을 실행하거나 환경 변수를 직접 설정할 수 있습니다.To define the connection settings, you can either run the suggested configuration command (eval $(docker-machine env myvm)), or you can set the environment variables manually.

컨테이너 실행Run a container

작업에서 컨테이너를 확인하려면 기본 NGINX 웹 서버를 실행합니다.To see a container in action, lets run a basic NGINX webserver. docker run으로 컨테이너를 만들고 다음과 같이 웹 트래픽에 대해 포트 80을 노출합니다.Create a container with docker run and expose port 80 for web traffic as follows:

docker run -d -p 80:80 --restart=always nginx

다음 예제와 유사하게 출력됩니다.The output is similar to the following example:

Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
ff3d52d8f55f: Pull complete
226f4ec56ba3: Pull complete
53d7dd52b97d: Pull complete
Digest: sha256:41ad9967ea448d7c2b203c699b429abe1ed5af331cd92533900c6d77490e0268
Status: Downloaded newer image for nginx:latest
675e6056cb81167fe38ab98bf397164b01b998346d24e567f9eb7a7e94fba14a

docker ps를 사용하여 실행 중인 컨테이너를 봅니다.View running containers with docker ps. 다음 예제 출력은 노출된 포트 80으로 실행 중인 NGINX 컨테이너를 보여 줍니다.The following example output shows the NGINX container running with port 80 exposed:

CONTAINER ID    IMAGE    COMMAND                   CREATED          STATUS          PORTS                          NAMES
d5b78f27b335    nginx    "nginx -g 'daemon off"    5 minutes ago    Up 5 minutes    0.0.0.0:80->80/tcp, 443/tcp    festive_mirzakhani

컨테이너 테스트Test the container

다음과 같이 Docker 호스트의 공용 IP 주소를 가져옵니다.Obtain the public IP address of Docker host as follows:

docker-machine ip myvm

작업에서 컨테이너를 보려면 웹 브라우저를 열고 이전 명령의 출력에 나와 있는 공용 IP 주소를 입력합니다.To see the container in action, open a web browser and enter the public IP address noted in the output of the preceding command:

ngnix 컨테이너 실행

다음 단계Next steps

Docker VM 확장을 사용하여 호스트를 만들 수도 있습니다.You can also create hosts with the Docker VM Extension. Docker Compose 사용에 대한 예제는 Azure에서 Docker 및 Compose 시작을 참조하세요.For examples on using Docker Compose, see Get started with Docker and Compose in Azure.