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 |
· 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
deploy, production, datacenter, cloud, aws, azure, provider, admin, enterprise
'SW Engineering > DevOps, SRE' 카테고리의 다른 글
Docker Volume (호스트 볼륨 공유)-컨테이너 데이터를 호스트 디스크에 저장하기 (0) | 2019.03.26 |
---|---|
Docker Command Basic (도커 기본 명령어) (0) | 2019.03.26 |
Docker Stack (0) | 2019.03.26 |
Docker Swarms (0) | 2019.03.26 |
Docker Services (0) | 2019.03.26 |