Container/Docker

[Docker CE] Docker-machine 기본 명령어, GCP에 docker host 프로비저닝

Nirsa 2020. 1. 25. 13:45
반응형

 

  • Docker-machine

Docker-machine은 가상환경이나 클라우드 등에서 호스트OS의 커맨드만으로 docker를 사용하기 위한 가상 환경을 생성해 줍니다. 즉, 원격 시스템에서 docker host를 프로비저닝하고 관리할 수 있는 기능을 갖추고 있습니다.

 

 

 

 

  • GCP(Google Cloud Platform)에 Docker Host 프로비저닝

들어가기에 앞서, GCP에서 docker host 프로비저닝 방법은 docs.docker 홈페이지에서 제공 합니다. (https://docs.docker.com/v17.12/machine/drivers/gce/#example)

또한 구축하기 전에 아래 패키지들이 설치되어 있어야 합니다.

gcloud auth login

docker-machine create --driver google --google-project [PROJECT_ID] [Docker Host name]	## 구글 프로젝트 ID 입력, 생성할 VM 인스턴스명 입력

docker-machine create --driver google \
  --google-project [PROJECT_ID] \				## 구글 프로젝트 ID 입력
  --google-zone asia-northeast1-a \				## 가장 가까운 도쿄로 설정 합니다.
  --google-machine-type f1-micro \				## 높은 사양이 필요 없기에 f1-micro 으로 설정 합니다.
[Docker Host name]								## 생성할 VM 인스턴스 명

#ex)
#docker-machine create --driver google \
#  --google-project nirsa-project \				## 구글 프로젝트 ID 입력
#  --google-zone asia-northeast1-a \			## 가장 가까운 도쿄로 설정 합니다.
#  --google-machine-type f1-micro \				## 높은 사양이 필요 없기에 f1-micro 으로 설정 합니다.
#nirsa-host								        ## 생성할 VM 인스턴스 명

위 명령은 두가지 vm을 생성 하고 아래와 같이 진행 됩니다. 둘중 하나만 입력해도 상관은 없습니다.

 

 

GCP의 경우 굉장히 매뉴얼화가 잘 되어 있습니다. 위 코드의 asia-northeast1-a 와 f1-micro를 좀 더 알고 싶으시면 아래 구글 클라우드 메뉴얼을 참고해 주세요.

(https://cloud.google.com/compute/docs/regions-zones/?hl=ko)

(https://cloud.google.com/compute/docs/machine-types?hl=ko)

 

  • docker-machine command

이전에 docker와 docker-compose 명령어를 보앗다면 큰 차이가 없었다고 생각이 될텐데, docker-machine도 명령어 자체는 docker나 docker-compose와의 차이가 크게 없습니다. 대부분의 기능이 구현되어 있기 때문에 inspect, ls 등등도 모두 같아 아래엔 몇개만 간단히 정리 하겠습니다.

docs.docker 홈페이지에서 여러 메뉴얼을 확인하실 수 있습니다. (https://docs.docker.com/v17.09/machine/get-started/#run-containers-and-experiment-with-machine-commands)

1. docker host 생성 : 상단 프로비저닝 참고

2. docker host 삭제/강제중지

# 삭제
docker-machine rm [docker host name]

# 삭제
docker-machine kill [docker host name]

 

3. docker host 실행/정지/재실행

# 실행
docker-machine start [docker host name]

# 정지
docker-machine stop [docker host name]

# 재실행
docker-machine restart [docker host name]

 

4. docker host 접속

호스트OS에서 docker host로 ssh 접속할 때 사용 합니다.

# 접속
docker-machine ssh [docker host name]

 

5. docker host 파일 다운로드/업로드

docker-machine의 scp 기능을 이용해 vm간 파일 다운로드/업로드가 가능 합니다. docker host name이 없을 경우 호스트OS로 간주 합니다.

단, 주의해야할 점은 scp를 사용할 때 docker-uesr 계정을 통해 이루어지므로 permission error가 발생할 수 있습니다. 적당한 권한(ex. chown docker-user.root [path])을 부여 해주어야 합니다.

# 호스트OS -> Docker host1
docker-machine scp [원본 파일] [docker host name]:[다운받을 경로]

# Docker host1 -> Docker host2
docker-machine scp [docker host name]:[원본 파일] [docker host name]:[다운받을 경로]

# Docker host2 -> 호스트OS
docker-machine scp [docker host name]:[원본 파일] [다운받을 경로]

아래의 경우는 호스트OS의 test2 파일을 vm01 이라는 docker host의 /tmp 경로로 파일을 업로드 합니다.

/root 디렉토리는 권한 에러가 발생 합니다.

 

 

반응형