Docker Compose 컨테이너 오케스트레이션 연구 및 실습

一 、 Docker 작성

(1) Docker Compose 개요

1. Docker Compose의 전신은 Fig. 다중 Docker 컨테이너를 정의하고 실행하기위한 도구입니다.
2. Docker Compose를 사용하면 컨테이너를 시작하는 데 더 이상 ShelI 스크립트가 필요하지 않습니다.
3. Docker Compose는 여러 컨테이너가있는 시나리오에 매우 적합합니다. 개발을 위해 결합되었습니다.

(2) Docker Compose 컨테이너 오케스트레이션

1. YAML은 마크 업 언어를 사용하는 매우 직관적 인 데이터 직렬화 형식입니다.
2. 파일 형식 및 작성시주의 사항

  • 탭 키 들여 쓰기는 지원되지 않으며 공백 들여 쓰기가 필요합니다.
  • 일반적으로 처음에 2 칸 들여 쓰기
  • 콜론, 쉼표, 막대와 같은 문자 뒤의 공백 1 개 들여 쓰기
  • # 기호가있는 댓글
  • 특수 문자가 포함 된 경우 작은 따옴표를 사용하십시오.
  • 부울 값은 따옴표로 묶어야합니다.

(3) Docker Compose 구성에 일반적으로 사용되는 필드

기술
dockerfile 컨텍스트 빌드 Dockerfile 파일 이름을 지정하여 미러 컨텍스트 경로를 빌드하십시오.
영상 지정된 거울
명령 명령을 실행하고 기본 명령을 덮어 씁니다.
컨테이너 이름 컨테이너 이름은 고유하므로 컨테이너 이름을 지정하십시오. 사용자 지정 이름을 지정하면 확장 할 수 없습니다.
전개 Swarm 모드에서만 사용할 수있는 배포 및 운영 서비스 관련 구성을 지정합니다.
환경 환경 변수 추가
네트워크 네트워크에 가입
포트 -p와 동일한 컨테이너 포트를 노출하지만 포트는 60보다 낮을 수 없습니다.
볼륨 호스트 경로 또는 명령 볼륨 마운트
재시작 재시작 정책, 기본값 아니오, 항상, 오류 없음, 중지되지 않은 경우
호스트 이름 컨테이너 호스트 이름

(4) Docker Compose에서 일반적으로 사용되는 명령

기술
짓다 서비스 재 구축
추신 컨테이너 나열
쪽으로 컨테이너 생성 및 시작
임원 컨테이너에서 명령 실행
규모 시작할 서비스 컨테이너 수 지정
상단 컨테이너 프로세스 표시
로그 컨테이너 출력보기
하위 컨테이너, 네트워크, 데이터 볼륨 및 미러 삭제
중지 / 시작 / 다시 시작 서비스 중지 / 시작 / 다시 시작

(5) 명령어 설명 작성

1. 기본 사용 형식

docker-compose [options] [COMMAND] [ARGS...]

2. docker-compose 옵션

  • --Verbose : 더 많은 디버깅 정보 출력
  • -버전 : 버전을 인쇄하고 종료
  • -f, --file FILE : 특정 작성 템플릿 파일을 사용합니다. 기본값은 docker-compose.yml입니다.
  • -p, --project-name NAME : 프로젝트 이름을 지정합니다. 기본 디렉토리 이름이 사용됩니다.

(6) Docker Compose 사용에 대한 자세한 설명 : 사용 단계, 환경 준비, 형식에 대한 자세한 설명

1. 작성을위한 3 단계

  • Dockerfile을 사용하여 애플리케이션의 환경 정의
  • docker-compose.yml을 사용하여 격리 된 환경에서 함께 실행될 수 있도록 애플리케이션을 구성하는 서비스를 정의합니다.
  • 마지막으로 docker-compose up 명령을 실행하여 전체 애플리케이션을 시작하고 실행합니다.

2. Docker 작성 환경 준비

[root@docker ~]# curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose	'//在Linux上我们可以从GitHub上下载它的二进制包来使用,此命令是下载Docker Compose的当前稳定版本'
[root@docker ~]# chmod +x /usr/local/bin/docker-compose
[root@docker ~]# docker-compose -v
docker-compose version 1.21.1, build 5a3f1a3

3. Docker Compose 파일 구조의 예 : docker-compose.yml

  • 작성 버전 번호와 서비스 식별자는 상단 상자에 작성해야합니다.
  • 속성 이름과 속성 값은 다음으로 구분됩니다. (콜론과 공백)
  • 두 개의 공백을 사용하여 레벨을 표시하십시오.
  • 서비스 속성은-(space space-space)로 표시됩니다.
version: '2'	'//compose版本号'
services:	'//服务标识符'
  web:	'//子服务名'
    image: dockercloud/hello-world	'//服务依赖镜像属性'
    ports:	'//服务端口属性'
      - 8080
    networks:	'//网络服务属性'
      - front-tier
      - back-tier
  redis:
    image: redis
    links:	'//容器间的连接设置'
      - web
    networks:
      - back-tier
  lb:
    image: dockercloud/haproxy
    ports:
      - 80:80
    links:
      - web
    networks:
      - front-tier
      - back-tier
    volumes:	'//挂载一个目录或者一个已存在的数据卷容器'
      - /var/run/docker.sock:/var/run/docker.sock 
networks:
  front-tier:
    driver: bridge
  back-tier:
    driver: bridge

(7) 연습 : Docker-Compose를 사용하여 nginx 만들기

1. Docker-Compose 환경 배포

'//Docker都是已经部署好了的,这里不再赘述'
[root@docker ~]# curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose	'//在Linux上我们可以从GitHub上下载它的二进制包来使用,此命令是下载Docker Compose的当前稳定版本'
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   638  100   638    0     0    149      0  0:00:04  0:00:04 --:--:--   149
100 10.3M  100 10.3M    0     0  18758      0  0:09:39  0:09:39 --:--:-- 17256
[root@docker ~]# chmod +x /usr/local/bin/docker-compose
[root@docker ~]# docker-compose -v	'//查看版本'
docker-compose version 1.21.1, build 5a3f1a3

2. Dockerfile을 사용하여 애플리케이션 환경 정의

[root@docker ~]# mkdir -p /compose_nginx/nginx	'//创建目录'
[root@docker ~]# cd /compose_nginx/nginx
[root@docker nginx]# rz -E	'//上传nginx源码包'
rz waiting to receive.
[root@docker nginx]# ls
nginx-1.12.2.tar.gz
[root@docker nginx]# vim Dockerfile
FROM centos:7
MAINTAINER build image nginx <gcc>
RUN yum -y update
RUN yum -y install gcc gcc-c++ pcre* make cmake zlib-devel openssh* net-tools lsof telnet passwd vim
ADD nginx-1.12.2.tar.gz /usr/local/src
RUN useradd -M -s /sbin/nologin nginx
WORKDIR /usr/local/src/nginx-1.12.2
RUN (./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module)
RUN make && make install
ENV PATH /usr/local/nginx/sbin/:$PATH
EXPOSE 80
EXPOSE 443
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf	'//指关闭守护进程启动'
CMD ["nginx"]

3. docker-compose.yml을 사용하여 애플리케이션을 구성하는 서비스를 정의합니다.

[root@docker nginx]# cd ..
[root@docker compose_nginx]# vim docker-compose.yml
version: '3'
services:
  nginx:
    hostname: nginx
    build:
      context: ./nginx
      dockerfile: Dockerfile
    ports:
      - 1216:80
      - 1217:443
    networks:
      - cluster
networks:
  cluster:


[root@docker compose_nginx]# tree ./
./
├── docker-compose.yml
└── nginx
    ├── Dockerfile
    └── nginx-1.12.2.tar.gz

4. docker-compose up 명령을 실행하여 전체 응용 프로그램을 시작하고 실행합니다.

[root@docker compose_nginx]# docker-compose -f docker-compose.yml up -d	'//指定ocker-compose.yml文件来启动'

[root@docker compose_nginx]# docker-compose ps	'//compose编排工具成功创建容器'
        Name            Command   State                      Ports                   
-------------------------------------------------------------------------------------
compose_nginx_nginx_1   nginx     Up      0.0.0.0:1217->443/tcp, 0.0.0.0:1216->80/tcp

[root@docker compose_nginx]# docker ps -a	'//容器创建成功'
CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS              PORTS                                         NAMES
5ecd884db086        compose_nginx_nginx   "nginx"             34 seconds ago      Up 33 seconds       0.0.0.0:1216->80/tcp, 0.0.0.0:1217->443/tcp   compose_nginx_nginx_1

[root@docker compose_nginx]# docker images	'//镜像创建成功'
REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
compose_nginx_nginx          latest              fd1cfaa3fa13        38 seconds ago      726MB

5. 테스트
브라우저 방문 http://192.168.200.60:1217 (로컬 IP : 1216)
여기에 사진 설명 삽입

추천

출처blog.csdn.net/Gengchenchen/article/details/115244959