docker - compose 해 혹

3938 단어 docker
   docker - compose 의 용 도 를 잘 이해 하지 못 했 습 니 다.지금 생각해 보 니 갑자기 뭔 가 생각 이 확 트 이 는 느낌 이 든다.이전에 docker 기반 이 있 었 고 일상 적 으로 작은 사이트, 블 로그, 학습 등 을 스스로 배치 하 는 데 도움 이 되 었 습 니 다.모두 북 입 니 다. 아주 간단 한 docker run 몇 가지 명령 이 끝 났 습 니 다.docker - compose 로 큰 인재 가 소 용 된 것 같 습 니 다.그리고 셸 스 크 립 트 를 통 해 자동 화 된 일 을 할 수 있다 는 것 을 스스로 생각해 보 세 요. 이것 은 초보 자의 깨 달 음 일 수도 있 습 니 다.그러나 나중에 셸 을 통 해 스 크 립 트 를 써 서 docker 나 몇 개의 용기 간 의 협력 운행 을 제어 하 는 것 을 발견 할 수 있 습 니 다. 못 하 는 것 은 아니 지만 docker - compose 만큼 편리 하지 않 습 니 다.
    내 가 이해 하기 로 는 docker - compose 는 사실 본질 적 으로 우리 가 셸 스 크 립 트 를 가지 고 용기 협력 을 하 는 것 과 같다.그러나 docker - compose 는 python 을 통 해 이 루어 졌 습 니 다. 이미 누군가가 이 스 크 립 트 를 작성 해 주 었 고 실행 가능 한 파일 docker - compose 로 컴 파일 되 었 습 니 다.우리 가 해 야 할 일 은 코드 를 쓰 던 일 을 Yml 프로필 을 쓰 는 일 로 바 꾸 는 것 입 니 다.  공동 실행 용기 에 필요 한 인자 (docker run 과 유사 한 인자) 를 docker - compose. ymal, 그리고 각 용기 가 시작 하 는 우선 순위, 네트워크 설정 등에 기입 하면 docker - compose up 을 통 해 이 용 기 를 시작 할 수 있 습 니 다.  docker - compose down 을 통 해 용 기 를 정지 하고 삭제 합 니 다.  docker-compose  stop 용기 정지, restart 재 부팅 등.다음은 docker - compose 의 Yml 프로필 을 통 해 대체적으로 일상적으로 사용 하면 됩 니 다.  우 리 는 대부분의 기본 적 인 사용 을 배 워 야 한다. 만약 더 많은 기능 을 만 나 관련 문 서 를 조회 하면 된다.  문학 을 배 운 지 이렇게 오래 되 었 듯 이 사전 의 모든 글 자 를 배 운 것 은 아니다.  문 서 를 외 우 는 것 과 사전 을 외 우 는 것 은 본질 이 같다.사전 은 찾 는 것 이지 외 우 는 것 이 아니 기 때문이다.
     docker - compose -- help 를 통 해 관련 명령 을 볼 수 있 습 니 다.docker 명령 과 차이 가 많 지 않 습 니 다. 모 르 는 것 을 보 러 가 는 것 도 어렵 지 않 습 니 다.주로 docker - compose. yaml 의 상용 매개 변수 설명 을 보십시오.  예 를 들 어 다음은 nginx + phop - fpm + my sql 의 예 입 니 다.
    
#docker-compose配置文件详情  官网文档
#https://docs.docker.com/compose/compose-file/#collapseSample1


# 常用配置文件分为2大部分 version  以及 services。  其实重点都是在services了



version: "3"  #  版本信息  这个不能乱写。目前支持 1  2  3 详情参考文档,一般现在写3了吧

services:
    
    nginx: # nginx容器服务名称
        build:
            context: ./ # 指明docker build在哪个目录上下文
            dockefile: Dockerfile  #指明Dockerfile名称 如果名称是Dockerfile  则可以忽略不写
            image: my-nginx:1.0 # docker build -t my-nginx:1.0 . 镜像命名
            args:
                key: val # 向docker build传递参数 --build-agrs key=val
            links:  # 连接php-fpm服务
                - php-fpm
            volumes:  # 挂载目录   类似 -v  /data/:/container/data
                - /data/:/container/data  

    php-fpm:  # php-fpm服务名称
        image: php
        depends_on:  # 依赖mysql-svc  首先mysql-svc先部署起来
            - mysql-svc
        ports:
            - 8000
        links:
            - mysql-svc  #网络连接到mysql-svc  类似  --link 
        command: ["tail","-f","/dev/null"] # 覆盖command命令
        entrypoint: ["tail","-f","/dev/null"] # 覆盖entrypoint  类似 --entrypoint= "tail -f /dev/null"


    mysql-svc: # mysql服务名称
            image: mysql:5.6  # 指明镜像名称:版本
            ports:
                - "3306:3306"  # 类似 docker run  -p 3306:3306  端口映射
            environment:       # 类似 环境变量   docker run -e MYSQL_ROOT_PASSWORD=root 
                MYSQL_ROOT_PASSWORD: "root"
          
            restart: always # 类似 docker run --restart=always  重启机制
            dns:            #类似 docker run --dns=8.8.8.8.8 
               - 8.8.8.8
               - 114.114.114.114

       

   
     제어 용기 의 시작 순서:    비록 우 리 는 depends 를 통 해on. 시작 의존 관 계 를 확인 하지만 시작 순서 만 보장 할 수 있 습 니 다. 먼저 시작 한 용기 가 '준비 상태' 에 있 는 지, 후속 용기 에 있 는 지 를 보장 할 수 없습니다. 따라서 도 구 는 정시/일정 시간 마다 의존 하 는 용기 가 준비 상태 에 있 는 지 확인 할 수 있 습 니 다. 예 를 들 어 몇 초 만 에 curl http 서비스 나 telnet 등 이 있 습 니 다.  유사 한 오픈 소스 도구 가 이미 존재 합 니 다. 예 를 들 어 wait-for-it.sh, dockerize, 등.  자세 한 내용 은 문서 참조:  https://docs.docker.com/compose/startup-order/#title
 
      한 마디 로 간단하게 요약 하면   평소에 용 기 를 어떻게 작 동 하 세 요?  docker run -p 3306:3306 -v/data:/data  ...등등 명령 은 docker - compose. yaml 파일 에 만 용 기 를 시작 하 는 명령 을 기록 합 니 다.해당 위 치 를 찾 아 키 를 만들어 쓰 면 됩 니 다.docker run 과 같은 포트 맵 을 사용 합 니 다.  하지만 docker - compose 에 서 는 ports 를 key 형식 으로 이 어 씁 니 다. -v. volumes 형식 으로 쓰 는 등등.
 

좋은 웹페이지 즐겨찾기