链接: https://www.cnblogs.com/wtzbk/p/15125977.html

1、docker带来的问题

  • 多次使用 Dockerfile Build Image 或者 DockerHub 拉取 Image;
  • 需要创建多个 Container,多次编写启动命令;
  • Container 互相依赖的如何进行管理和编排;

2、docker compose的好处

  • 提供工具用于定义和运行多个 docker 容器应用;
  • 使用 yaml 文件来配置应用服务(docker-compse.yml);
  • 可以通过一个简单的命令 docker-compse up 可以按照依赖关系启动所有服务;
  • 可以通过一个简单的命令 docker-compose down 停止所有服务;
  • 当一个服务需要的时候,可以很简单地通过 --scale 进行扩容;

3、docker compose的介绍

  • Docker Compose 是一个工具,用于定义和运行多容器应用程序的工具;
  • Docker Compose 通过 yml 文件定义多容器的 docker 应用;
  • Docker Compose 通过一条命令根据 yml 文件的定义去创建或管理多容器;

4、安装

1)下载:https://github.com/docker/compose/releases

注:https://dn-dao-github-mirror.daocloud.io/docker/compose/releases ,下载太慢的话可以去这个网址下载

2)拷贝:将下载的文件拷贝到服务器上的 /usr/local/bin/docker-compose 目录

3)赋权:sudo chmod +x /usr/local/bin/docker-compose

4)检查:docker-compose --version

5、版本兼容性

docker-compose 与 docker 引擎之间有版本对应关系,需要检查是否满足要求。

6、常见的命令

注:可以 docker-compose --help 查看帮助

#构建启动 nignx 容器
docker-compose up -d nginx                     
#进入 nginx 容器中
docker-compose exec nginx bash            
#将会停止UP命令启动的容器,并删除容器
docker-compose down                             
#显示所有容器
docker-compose ps                                   
#重新启动 nginx 容器
docker-compose restart nginx                   
#构建镜像
docker-compose build nginx      
#不带缓存的构建
docker-compose build --no-cache nginx 
#查看nginx的日志
docker-compose logs  nginx                      
#查看nginx的实时日志
docker-compose logs -f nginx                   
#验证(docker-compose.yml)文件配置,
#当配置正确时,不输出任何内容,当文件配置错误,输出错误信息
docker-compose config  -q                        
#以json的形式输出nginx的docker日志
docker-compose events --json nginx       
#暂停nignx容器
docker-compose pause nginx                 
#恢复ningx容器
docker-compose unpause nginx             
#删除容器
docker-compose rm nginx                       
#停止nignx容器
docker-compose stop nginx                    
#启动nignx容器
docker-compose start nginx

7、举个栗子

说明:启用一个带证书和鉴权的第三方仓库

1)编写 docker-compose.yml 文件

version: '3.0'
services:
  third-part-registry:
    image: registry:latest
    container_name: third-part-registry
    ports: 
      - 444:5000/tcp
    environment: 
      - REGISTRY_HTTP_TLS_CERTIFICATE=/certs/server.crt
      - REGISTRY_HTTP_TLS_KEY=/certs/server.key
      - REGISTRY_AUTH=htpasswd
      - REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm
      - REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd
    volumes: 
      - /root/registry/external_repository/data:/var/lib/registry
      - /root/registry/external_repository/certs:/certs
      - /root/registry/external_repository/auth:/auth      
    restart: always

2)检查 docker-compose.yml 语法是否正确:

命令:docker-compose config

说明:执行上面的命令,如果不发生报错,说明语法没有发生错误,注意 yml 文件需要在当前目录下,同时会生成下面的显示,即在原始 yml 的基础上补齐一些默认的选项。

name: external_repository
services:
  third-part-registry:
    container_name: third-part-registry
    environment:
      REGISTRY_AUTH: htpasswd
      REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
      REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
      REGISTRY_HTTP_TLS_CERTIFICATE: /certs/server.crt
      REGISTRY_HTTP_TLS_KEY: /certs/server.key
    image: registry:latest
    networks:
      default: null
    ports:
    - mode: ingress
      target: 5000
      published: "444"
      protocol: tcp
    restart: always
    volumes:
    - type: bind
      source: /root/registry/external_repository/data
      target: /var/lib/registry
      bind:
        create_host_path: true
    - type: bind
      source: /root/registry/external_repository/certs
      target: /certs
      bind:
        create_host_path: true
    - type: bind
      source: /root/registry/external_repository/auth
      target: /auth
      bind:
        create_host_path: true
networks:
  default:
    name: external_repository_default

3)使用上面的 yml 启动:docker-compose up -d // -d 表示在后端运行

4)查看启动的 docker 容器:

[root@HN01 external_repository]# docker ps
CONTAINER ID    IMAGE        COMMAND         CREATED       STATUS       PORTS          NAMES
b8eede952bf0    registry:latest   "/entrypoint.sh /etc…"  About a minute ago  Up 9 seconds    0.0.0.0:444->5000/tcp  third-part-registry
posted on 2023-07-13 19:48  彦承  阅读(62)  评论(0编辑  收藏  举报