Micro Service Architecture (24) 썸네일형 리스트형 15. [docker] Container Health Check 1. 구동 중인 task에 health check 값을 줘서 실패시 마이그레이션 TEST ## docker1에서 curl 로 cmd를 주고 일정 시간간격으로 체크 ## 주의 : cmd로 줄 명령어가 해당 컨테이너에 포함 되어 있어야 함. [root@docker1 ~]# docker service update --health-cmd 'curl ' --health-interval 3s --health-retries 2 --health-timeout 2s test1 test1 overall progress: 1 out of 1 tasks 1/1: running [==================================================>] [root@docker1 ~]# docker servi.. 14. [docker] Service로 CentOS, Ubuntu 등의 Base OS를 실행할때 오류 1. 테스트 : CentOS Base 이미지를 서비스 실행 ## test3 으로 centos 생성 [root@docker1 ~]# docker service create --name test3 centos x25funyde39kb7hvf67hmycfg overall progress: 0 out of 1 tasks 1/1: ready [======================================> ] verify: Detected task failure ^COperation continuing in background. Use `docker service ps x25funyde39kb7hvf67hmycfg` to check progress. ## 아래와 같이 ready -> Ruunning -> .. 13. [docker] 특정 node에 서비스 task 할당 1. 특정노드로의 task 할당 운영자의 특별한 설정이 없다면 서비스 task는 클러스터내 node에 자동 분배된다. 특정 서비스를 특정 노드에 할당 하기 위해 label type 지정을 설정할 수 있다. ## nginx_test2라는 서비스는 nginx:latest 이미지로 docker1,2에 task가 할당되어져 있다. ## nginx_test3라는 서비스를 nginx:1.13 이미지로 docker3에만 할당 한다. ## node type 지정(nginx-1.13) [root@docker1 bin]# docker node update --label-add type=nginx-1.13 docker3 docker3 ## docker3의 node inspect [root@docker1 bin]# docke.. 12. [docker] drain 운영중인 Docker Host나 Docker데몬에 유지보수를 위한 점검을 진행 할 경우 속해있는 task를 다른node로 이전 작업 후 진행 해야한다. 점검 대상 노드를 drain 상태로 변경 후 원복하는 작업을 진행한다. ## nginx_test2라는 서비스에 아래와 같이 task가 3개의 node에 할당 되어져있다. [root@docker1 bin]# docker service ps nginx_test2 ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS rtl4atm0aeey nginx_test2.1 nginx:latest docker1 Running Running 29 seconds ago u2epfwd3ygea nginx_test2.2 ngi.. 11. [docker] docker 명령어 모음 1. docker가 사용중인 디스크 자원 사용량 [root@docker2 ~]# docker system df TYPE TOTAL ACTIVE SIZE RECLAIMABLE Images 1 0 132.5 MB 132.5 MB (100%) Containers 0 0 0 B 0 B Local Volumes 0 0 0 B 0 B 2. docker 이벤트 ## 실시간 이벤트 [root@docker2 ~]# docker system events 3. 모든 이미지 or 컨테이너 삭제 ## 모든 컨테이너 [root@Docker-Worker2 ~]# docker rm `docker ps -a -q` ## 모든 이미지 [root@Docker-Worker2 ~]# docker rmi `docker images -a -q`.. 9. [docker] Update(Rolling) & Rollback Docker 공식 문서 참조 : https://docs.docker.com/engine/reference/commandline/service_update/ 1. 컨테이너 update - 배포와 같이 이미지 빌드를 통한 Registry에 새로운 버전이 올라올경우 운영에 update하는 작업 ## nginx:latest -> nginx:1.13 버전으로 업데이트 ## 참고 docker.io 에 nginx 검색 [root@docker1 bin]# docker search nginx:1.13 INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED docker.io docker.io/999lhh/nginx nginx:1.13 0 [OK] docker.io docker.io/huxiz.. 8. [docker] swarm : service create 1. Nginx Service 올려보기 ## Nginx 이미지를 이용하여 서비스 생성 ## 80포트를 연결하고 이름을 nginx_test로 생성 [root@docker1 bin]# docker service create -p 80:80 --name nginx_test nginx lojirqir4tjvy370y2fpevrec ## 서비스 확인 ## 서비스가 생성되었고 REPLICAS 항목이 0/1로 현재 replica는 1개이고 active 0개 라는 의미 [root@docker1 bin]# docker service ls ID NAME MODE REPLICAS IMAGE lojirqir4tjv nginx_test replicated 0/1 nginx:latest ## 이미지확인 ## 이미지가 없으며 아직.. 7. [docker] Orchestration (Docker Swarm) 구축 : Manager, Worker Node 구성 1. 테스트 구성 - VM 3대를 이용하여 Manager + Worker Node 를 동일 구성 ## docker1, docker2 docker3 의 호스트네임으로 3대 구성 [root@docker1 bin]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 192.168.6.134 docker1.plo.plo docker1 192.168.6.135 docker2.plo.plo docker2 192.168.6.136 docker3.plo.plo docker3 ## .. 5. [docker] container run 1. Image를 이용한 container 실행 ## nginx:latest 이미지를 이용하여 포트 호스트:8070 -> 도커:80 으로 포워드 설정으로 컨테이너 생성 [root@docker]# docker run -p 8070:80 nginx:latest /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default... 4. [docker] container, image 삭제 1. 이미지 삭제 순서 : 컨테이너삭제 → 이미지 삭제 ## 이미지 삭제 : docker rmi ## 지우려는 이미지로 실행되어진 컨테이너가 있을경우 이미지 삭제는 진행되지 않음 [root@docker]# docker rmi nginx:add_plo Error response from daemon: conflict: unable to remove repository reference "nginx:add_plo" (must force) - container b92a93ef0cde is using its referenced image 1ce4194fd0ba ## 지우려는 이미지로 실행되어진 컨테이너 검색 [root@docker]# docker ps -a CONTAINER ID IMAGE COMMAND CRE.. 이전 1 2 3 다음