Docker Compose 컨테이너 오케스트레이션 이론 소개 및 자세한 실험 단계

1. Docker Compose 소개

1.1 Docker Compose 소개

  • Docker Compose의 전신은 Fig. Fig가 Docker에 인수 된 후 공식적으로 이름이 Compose로 바뀌 었으며 Compose는 Fig.
  • Docker Compose를 사용할 때 더 이상 컨테이너를 시작하기 위해 셸 스크립트를 사용할 필요가 없습니다.
  • Docker Compose는 개발을 위해 여러 컨테이너가 결합 된 시나리오에 매우 적합합니다.

1.2 Docker Compose 파일 구조

vim docker-compose.yml
  • YAML은 마크 업 언어를 사용하는 매우 직관적 인 데이터 직렬화 형식입니다. 파일 형식 및 쓰기 메모는 다음과 같습니다.
1.不支持制表符Tab 建缩进,需要使用空格缩进
2.通常开头缩进2个空格
3.字符后缩进1个空格,如:冒号,逗号,横杆
4.用井号注释
5.如果包含特殊字符用单引号引起来
6.布尔值必须用单引号括起来

1.3 Docker compose에서 사용하는 세 단계

1.使用Dokcerfile 定义应用程序的环境
2.使用docker-compose.yml 定义构成应用程序的服务,这样它们就可以再隔离环境中一起运行
3.最后执行 docker-compose up 命令来启动并运行整个应用程序

Compose의 중요한 개념 :

  • 프로젝트 : docker-compose.yml 파일에 정의 된 연관된 애플리케이션 컨테이너 세트로 구성된 완전한 비즈니스 단위입니다.
  • 서비스 : 애플리케이션 컨테이너는 실제로 동일한 이미지를 실행하는 여러 컨테이너 인스턴스를 포함 할 수 있습니다.

둘째, Docker는 구성 정보를 작성합니다.

2.1 Dokcer는 일반적인 명령을 작성합니다.

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

2.2 Docker 구성 공통 필드 작성

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

2.3 명령어 설명 작성

  • 기본 사용 형식
docker-compose [options] [command] [ARGS...]
  • docker-compose 명령 옵션
--verbose 输出更多调试信息
--version 打印版本并退出
-f --file FILE 使用特定的 compose 模板文件,默认为docker-compose.yml
-p --project-name NAME 指定项目名称,默认使用目录名称

셋, Dokcer 오케스트레이션 실험

3.1 프로젝트 환경

centos7 虚拟机一台  IP:192.168.140.22
docker-ce 社区版已安装
本次项目以构建Nginx为主

3.2 프로젝트 단계

3.2.1 docker-compose 구성

  • 편지 쓰기 다운로드
[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
  • 환경 변수 설정
[root@docker ~]# chmod 755 docker-compose
[root@docker ~]# cp -p docker-compose /usr/local/bin/
[root@docker ~]# docker-compose --version
docker-compose version 1.21.1, build 5a3f1a3

3.2.2 Nginx 빌드

  • 작업 디렉토리 생성, 패키지 추가
[root@docker ~]# mkdir compose_nginx
[root@docker ~]# cd compose_nginx/
[root@docker compose_nginx]# mkdir nginx
[root@docker compose_nginx]# cd nginx/
[root@docker nginx]# ls
[root@docker nginx]# rz -E
rz waiting to receive.
[root@docker nginx]# ls
nginx-1.12.2.tar.gz
  • 시작 스크립트 설정
[root@docker nginx]# vim run.sh
#启动脚本
#!/bin/bash
/usr/local/nginx/sbin/nginx
  • Dockerfile 작성
[root@docker nginx]# vim Dockerfile
FROM centos:7
MAINTAINER this is nginx image
RUN yum -y update
RUN yum -y install gcc gcc-c++ pcre-devel zlib-devel make
RUN useradd -M -s /sbin/nologin nginx
ADD nginx-1.12.2.tar.gz /usr/local/src
WORKDIR /usr/local/src/nginx-1.12.2
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module && make && make install
ENV PATH /usr/local/nginx/sbin:$PATH
EXPOSE 80
EXPOSE 443
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf
ADD run.sh /run.sh
RUN chmod 755 /run.sh
CMD ["/run.sh"]
  • 웹 사이트 페이지 설정
[root@docker ~]# cd compose_nginx/
[root@docker compose_nginx]# mkdir wwwroot
[root@docker compose_nginx]# cd wwwroot/
[root@docker wwwroot]# vim index.html
<h1>This is my web!</h1>
  • yml 파일 작성
[root@docker ~]# cd compose_nginx/
[root@docker compose_nginx]# vim docker-compose.yml
version: '3'
services:
  nginx:
    hostname: nginx
    build:
      context: ./nginx
      dockerfile: Dockerfile
    ports:
      - 1106:80
      - 1107:443
    networks:
      - cluster
    volumes:
      - ./wwwroot:/usr/local/nginx/html
networks:
  cluster:
  • nginx 이미지 빌드
先确认文件位置
[root@docker compose_nginx]# ls
docker-compose.yml  nginx  wwwroot

[root@docker compose_nginx]# ls nginx/
Dockerfile  nginx-1.12.2.tar.gz  run.sh

构建镜像并启动容器
[root@docker compose_nginx]# docker-compose -f docker-compose.yml up -d	
											'//指定以docker-compose.yml文件来启动'

[root@docker compose_nginx]# docker ps
CONTAINER ID   IMAGE                 COMMAND                  CREATED          STATUS          PORTS                                         NAMES
68093658e0bb   compose_nginx_nginx   "/run.sh"                13 seconds ago   Up 12 seconds   0.0.0.0:1216->80/tcp, 0.0.0.0:1217->443/tcp   compose_nginx_nginx_1

컨테이너를 시작할 때 가능한 오류
여기에 사진 설명 삽입

解决方法:
查看yml文件中 volumes挂载目录文件是否存在;查看脚本run.sh环境是否正确

3.2.3 액세스 확인

여기에 사진 설명 삽입

추천

출처blog.csdn.net/weixin_42449832/article/details/114818310