Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
05-16 20:20
관리 메뉴

nomad-programmer

[DevOps/Docker] docker-machine 명령을 사용한 실행 환경 구축 본문

DevOps/Docker

[DevOps/Docker] docker-machine 명령을 사용한 실행 환경 구축

scii 2020. 12. 10. 20:32

Docker Machine의 기본 명령

docker-machine은 Docker for Mac 또는 Docker for Windows에 미리 설치되어 있다. Linux에서는 별로도 설치해야 한다.

2020/12/06 - [DevOps/Docker] - [Docker] 멀티호스트 환경에서 컨테이너 관리

다음의 명령을 실행하면 docker-machine의 버전 정보를 확인할 수 있다.

$ docker-machine --version

docker-machine 명령의 주요 서브 명령은 다음과 같다.

서브 명령 설명
create 실행 환경 작성
ls 실행 환경 목록 표시
status 실행 환경 상태 표시
url 실행 환경 URL 표시
ssh 실행 환경에 대한 SSH 연결
start 실행 환경 시작
stop 실행 환경 정지
restart 실행 환경 재시작
scp 실행 환경에서 파일 다운로드
rm 실행 환경 삭제
kill 실행 환경 강제 정지
ip 실행 환경 IP 주소 확인
inspect 실행 환경 정보 확인

실행 환경 작성 (create)

실행 환경을 작성하려면 docker-machine create 명령을 사용한다. 어떤 클라우드/가상 머신에 만들지는 --driver 옵션으로 지정한다.

docker-machine create --driver <드라이버명> <작성할 docker 머신명>

--driver 옵션에서 지정할 수 있는 드라이버

드라이버명 작성할 환경
amazonec2 Amazon Web Services EC2
azure Microsoft Azure
digitalocean DigitalOcean
exoscale Exoscale
generic 일반 VM/물리 서버
google Google Compute Engine
hyper-v Microsoft Hyper-V
openstack OpenStack
rackspace Rackspace
softlayer IMB SoftLayer
virtualbox Oracle VirtualBox
vmwarevcloudair VMware vCloud Air
vmwarevsphere VMware vSphere

--driver 옵션의 값에 따라 지정할 수 있는 값이 달리진다. 예를 들어 Microsoft가 제공하는 클라우드 서비스인 Microsoft Azure상에 Docker 실행 환경을 만들고 싶은 경우는 --driver 옵션으로 'azure'를 지정하고, 계속해서 다음의 옵션을 지정한다.

옵션 설명 기본값
--azure-subscription-id Azure 서브스크립션 ID (필수) -
--azure-image Azure 이미지명 UbuntuServer:16.04.0-LTS:latest
--azure-docker-port Docker가 사용할 포트 2376
--azure-location Azure의 로케이션 westus
--azure-size Azure의 VM 종별 Standard_A2
--azure-ssh-name SSH 서버명 docker-user

--driver 옵션에서 지정할 수 있는 항목은 헬프 명령으로 확인할 수 있다. 다음은 Azure의 --driver 옵션의 헬프를 표시한 예이다.

// docker-machine 드라이버의 헬프 확인

$ docker-machine create --driver azure --help

Usage: docker-machine create [OPTIONS] [arg...]

Create a machine

Description:
   Run 'docker-machine create --driver name --help' to include the create flags for that driver in the help text.

Options:
   
   --azure-availability-set "docker-machine"								Azure Availability Set to place the virtual machine into [$AZURE_AVAILABILITY_SET]
   --azure-client-id 											Azure Service Principal Account ID (optional, browser auth is used if not specified) [$AZURE_CLIENT_ID]
...

docker-machine에서 이용할 수 있는 드라이버는 앞으로도 늘어갈 것이다. 아래 사이트에 목록이 있으므로 만일 현시점에서 지원하지 않는 경우 정기적으로 확인을 해보면 좋을 것이다.

docs.docker.com/machine/drivers/

 

Machine drivers

 

docs.docker.com


실행 환경 목록 표시 (ls / status / url)

docker-machine에서 관리하고 있는 실행 환경의 목록을 표시하려면 docker-machine ls 명령을 사용한다.

docker-machine ls [옵션]

지정할 수 있는 주요 옵션

옵션 설명
--quiet, -q 머신명만 표시
--filter 표시할 머신 필터링

docker-machine ls 명령의 표시 항목

항목 설명
NAME 머신명
ACTIVE 상태
DRIVER 사용 중인 드라이버
STATE status (Running|Paused|Saved|Stopped|Stopping|Starting|Error)
URL 액세스 URL
SWARM docker swarm의 매니저명
DOCKER docker 버전
ERRORS  오류

--filter 옵션을 사용하면 표시할 정보를 필터링할 수 있다. 필터링할 내용은 key=value의 형식으로 지정한다. 필터 조건은 여러 개 지정할 수 있다. 예를 들어 virtualbox 상에서 작동하고 있는 호스트 중 STATE의 상태가 Running인 것만을 표시하고 싶을 경우 아래의 명령을 실행한다.

// 실행 환경 목록 표시

$ docker-machine ls --filter driver=virtualbox --filter state=Running

또한 머신의 상태를 확인하려면 docker-machine status 명령도 사용할 수 있다. 예를 들어 host1이라는 이름의 docker 실행 환경의 상태를 확인하려면 다음의 명령을 실행한다.

// 실행 환경의 상태 확인

$ docker-machine status host1

머신의 URL을 확인하려면 docker-machine url 명령을 사용한다. 예를 들어 host1이라는 이름의 docker 실행 환경의 URL을 확인하려면 다음의 명령을 실행한다.

// 실행 환경의 URL 확인

$ docker-machine url host1

실행 환경의 대한 SSH 연결 (ssh)

docker-machine에서 작성한 실행 환경에 SSH로 연결하려면 docker-machine ssh 명령을 사용한다.

docker-machine ssh <머신명>
// ssh 연결

$ docker-machine ssh host1

연결을 해제하려면 exit 명령을 실행한다.


실행 환경 시작 / 정지 / 재시작 (start / stop / restart)

실행 환경을 시작/정지/재시작할 때는 다음과 같이 docker-machine 명령에 start/stop/restart 서브 명령을 지정한다. 

예를 들어 host1이라는 이름의 실행 환경을 조작하려면 다음의 명령을 실행한다.

// 실행 환경 시작/정지/재시작

$ docker-machine start host1

또한 docker의 실행 환경 작성에는 시간이 걸린다. 명령의 실행결과에 대한 응답이 없다고 해서 그대로 두면 불필요한 가상 머신이 시작되는 경우도 있다.

특히 클라우드상의 가상 머신은 가동 시간에 따라 요금이 부과되는 경우가 많으므로 주의해야 한다.


실행 환경으로부터 파일 다운로드 (scp)

실행 환경 안의 파일을 다운로드하려면 docker-machine scp 명령을 실행한다.

예를 들어 host1이라는 docker 실행 환경 안에 있는 /etc/passwd 라는 파일을 로컬 머신의 현재 디렉토리로 다운로드하려면 다음의 명령을 실행한다. 

// 실행 환경에서 파일 다운로드

$ docker-machine scp host1:/etc/passwd ./
SCP는 SSH의 기능을 사용하여 파일을 전송하기 위한 명령이다. SCP에서 사용하는 통신 프로토콜은 Secure Copy Protocol로, 인증 정보와 데이터를 암호화하여 네트워크로 전송한다.

실행 환경 삭제 (rm / kill)

작성한 실행 환경을 삭제하려면 docker-machine rm 명령을 실행한다. 작동 중인 실행 환경을 강제로 삭제할 때는 -f 옵션을 지정한다.

예를 들어 host1이라는 이름의 실행 환경을 삭제하려면 다음의 명령을 실행한다.

// 실행 환경 삭제

$ docker-machine rm -f host1

또한 실행 중인 머신을 강제로 정지시키고 싶을 때는 docker-machine kill 명령을 사용한다. 이 명령은 docker-machine stop 명령으로 정지시키지 못 했을 때 사용해야 한다.

// 실행 환경 강제 정지

$ docker-machine kill host1

실행 환경 정보 확인 (ip / inspect)

작성한 실행 환경의 IP 주소를 확인하려면 docker-machine ip 명령을 실행한다. 

예를 들어 host1이라는 이름의 실행 환경의 IP 주소를 확인하려면 다음의 명령을 실행한다.

// IP 주소 확인

$ docker-machine ip host1

또한 메모리나 CPU 등과 같은 구성의 상세 정보를 알고 싶을 때는 docker-machine inspect 명령을 실행하면 결과가 JSON 배열 형식으로 표시된다.

docker-machine inspect [옵션] 머신명

예를 들어 host1이라는 이름의 실행 환경의 상세 정보를 확인하려면 다음의 명령을 실행한다.

// 실행 환경의 상세 정보 확인

$ docker-machine inspect host1

출력 포맷을 지정할 때는 --format 옵션을 지정한다.

예를 들어 실행 환경의 IP 주소와 SSH 연결의 사용자명을 확인하고 싶을 때는 다음의 명령을 실행한다.

// 실행 환경의 상세 정보 확인

$ docker-machine inspect \
    --format='{{.Driver.IPAddress}}:{{.Driver.SSHUser}}' \
    host1

분산 시스템에서의 컨테이너 디자인 패턴

클라우드를 사용하여 Docker 실행 환경을 구축할 때는 오케스트레이션을 위한 매니지드 서비스 외에도 소스코드나 docker 이미지의 리포지토리 및 로깅 등과 같은 여러 서비스를 조합하여 시스템을 구축하게 된다.

온프레미스 환경에서는 네트워크 부설/서버 기기의 도입/OS의 설정 등 물리적인 작업 및 어느 정도의 초기 비용이 필요하기 때문에 시스템의 요건에 따라 사전에 상세한 설계가 필요하다. 하지만 클라우드를 사용한 경우는 서비스의 조합만으로 재빨리 시스템을 구축할 수 있는 것이 큰 특징이다.

한편 클라우드만의 설계 포인트도 있다. 예를 들어 클라우드 서비스를 어떻게 조합하는 것이 최적인지, 영구 데이터의 특정에 맞춰 어떤 스토리지 서비스를 골아야 좋을지 등이다. 이러한 클라우드의 특성을 고려하여 장점을 최대한 살리는 형태로 구축된 아키텍처를 클라우드 네이티브 아키텍처라고 한다.

클라우드 네이티브 아키텍처를 실현하려면 클라우드가 제공하는 요소 기술의 기초를 이해할 것과 클라우드가 제공하는 각각의 서비스를 깊이 알고 있을 것과 더불어 실세 시스템에 어떻게 적용해 갈지를 올바르게 조감할 수 있는 능력이 필요하다.

Docker는 대규모 분산 환경에서 수평 스케일과 애플리케이션의 이식성에 강점을 갖고 있는 툴로, 클라우드와 친화성이 높은 것이 특징이다. 현재는 주로 높은 트래픽으로 글로벌하게 서비스럴 전개하는 BtoC에서 웹 시스템을 이용하는 것이 메인이지만, 앞으로는 수치해석으로 대표되는 과학기술계산의 대규모 병렬 분산 시스템이나 대규모 미션 크리티컬한 업무 시스템에서도 컨테이너는 중요한 요소 기술 중 하나로 이용될 것이다.

<Designing Distribution Systems> 라는 책에 분산 시스템에서 컨테이너를 사용하여 애플리케이션을 실행하기 위한 디자인 패턴이 정리되어 있으므로 관심이 있다면 읽어 보는 것이 좋겠다.

www.kyobobook.co.kr/product/detailViewEng.laf?ejkGb=BNT&mallGb=ENG&barcode=9781491983645&orderClick=LAG&Kc=

 

Designing Distributed Systems - 교보문고

 

www.kyobobook.co.kr

Comments