Docker Deploy

 

·         Version : Docker

 

문서는 Docker 공식 문서를 번역한 내용이며 필자의 생각과 의견이 반영되어 있습니다. 자세한 내용은 원문을 참고 바랍니다.

 

Prerequisites

Docker Deploy 학습하기 전에 아래 사항이 선행되어야 한다.

·         Docker Install : https://docs.docker.com/install/

·         Docker Orientation : http://sqlmvp.kr/221419558020

·         Docker Containers : http://sqlmvp.kr/221423910065

·         레지스트리에 푸시하여 작성한 friendlyhello이미지를 게시했는지 확인한다. 이번 포스트에서는 레지스트리에 공유된 이미지를 사용한다.

·         이미지가 배포된 컨테이너가 작동하는지 확인한다. 아래 명령어를 사용하여 컨테이너를 실행하고 정상적으로 브라우저에서 접속이 되어야 한다. Username, reop 위치는 사용자에 따라 변경하여 사용한다.

docker run -p 4000:80 username/repo:tag

http://localhost:4000

 

·         Docker Stack에서 다룬 docker-compose.yml 사본을 준비한다.

o   Docker Stack : http://sqlmvp.kr/221436710686

 

 

Introduction

이번 포스트에서는 Dockerized 애플리케이션을 실행하기 위한 가지 옵션을 살펴보고 이전까지 다루었던 내용을 정리한다.

 

Docker Enterprise

Docker Enterprise Edition 고객은 Docker Engine 안정적이고 상업적으로 지원되는 버전을 실행하며 애드온으로 DMC(Docker Datacenter)라는 최상급 관리 소프트웨어를 제공한다. Universal Control Plane 사용하여 인터페이스를 통해 애플리케이션의 모든 측면을 관리하고 Docker Trusted Registry 개인 이미지 레지스트리를 실행하고 LDAP 제공업체와 통합하고 Docker Content Trust 사용하여 프로덕션 이미지에 서명할 있다.

Docker Enterprise 자신의 서버를 가져오고 Docker Datacenter 설정하려면 기본적으로 단계가 필요하다.

·         Docker Hub에서 서버 OS Docker Enterprise 구입 : https://hub.docker.com/search/?offering=enterprise&type=edition

·         Docker Enterprise 자신의 호스트에 설치 : https://docs.docker.com/ee/end-to-end-install/

참고 : Windows서버에서 컨테이너 실행 : https://docs.docker.com/install/windows/docker-ee/

 

일단 모든 설정이 완료되고 Docker Enterprise 실행중이면 UI내에 직접 작성된 파일을 배포할 있다.

·         Deploy a multi-service app :  https://docs.docker.com/ee/ucp/swarm/deploy-multi-service-app/

 


후에 실행중인 것을 있으며 선택한 응용 프로그램의 어떤 부분을 변경하거나 작성 파일 자체를 편집할 있다.

 

 

Docker Engine – Community

Docker Engine Community 대한 설치 가능 플랫폼 확인 아래 링크에서 참고한다.

·         Docker supported platforms :  https://docs.docker.com/install/#supported-platforms

아래 명령을 사용하여 노드에 Docker Swarm 생성한다.

docker swarm init

 

아래 명령을 사용하여 stack 배포 한다.

docker stack deploy -c docker-compose.yml getstartedlab

 

아래 명령은 노드에 포함된 머신을 확인한다.

docker node ls

 

아래 명령은 서비스를 나열한다.

docker service ps <sevice>

 

지금까지 실습했던 서비스와 통신하기 위해서는 아래의 포트를 허용해야 한다.

·         많은 노드를 사용하는 경우 redis 서비스와 web 서비스간의 통신 허용

·         Hello World Visualizer 브라우저에서 엑세스 있도록 모든 작업자 노드에서 web 서비스로 인바은드 트래픽 허용

·         Manager 실행중인 서버에서 인바운드 SSH 트래픽을 허용 (클라우드 공급자에 이미 설정되어을 있음)

아래는 서비스에 대해 오픈 해야하는 포트이다.

Service

Type

Protocol

Port

web

HTTP

TCP

80

visualizer

HTTP

TCP

8080

redis

TCP

TCP

6379

 

예를들어 AWS(Amazon Web Services)에서 데이터를 redis 보존할 경우 redis 서비스가 작동하려면 manager 실행중인 클라우드 서버로 ssh하고 docker stack deploy하기 전에 /home/docker에서 /data 디렉터리를 만들어야 한다. 다른 옵션은 docker-stack.yml 데이터 경로를 manager 서버의 기존 경로로 변경하는 것이다. 예제는 단계를 포함하지 않으므로 예제 출력에서 redis서비스가 작동하지 않는다.

 

·         docker-compose.yml 파일을 변경하여 응용 프로그램의 크기를 조정하고 docker stack deploy명령을 사용하여 즉석에서 다시 docker stack deploy 한다.

·         코드를 편집하여 응용프로그램 동작을 변경한 다음 이미지를 다시 작성하고 푸시한다.

·         docker stack rm 명령을 사용하여 스택을 해제 있다.

Docker stack rm getstartedlab

 

 

 

[참고자료]

https://docs.docker.com/get-started/part6/

 

 

 

2019-01-13 / Sungwook Kang / http://sqlmvp.kr

 

 

deployproductiondatacentercloudawsazureprovideradminenterprise

+ Recent posts