Docker-Compose介绍
发布者:admin 发表于:417天前 阅读数:2954 评论:0

Docker-Compose介绍

Compose是 Docker 的服务编排工具,主要用来构建基于Docker的复杂应用Compose 通过一个配置文件来管理多个 -Docker 容器,非常适合组合使用多个容器进行开发的场景。

Compose 中有两个重要的概念:

  • 服务 (service) :一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
  • 项目 (project) :由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。

一个项目可以由多个服务(容器)关联而成,Compose 面向项目进行管理,通过子命令对项目中的一组容器进行便捷地生命周期管理。

  例如,你有一个 php 镜像,一个 redis 镜像,一个nginx镜像。如果没有 docker-compose,那么每次启动的时候,你需要敲各个容器的启动参数,环境变量,容器命名,指定不同容器的链接参数等等一系列的操作,相当繁琐。

而用了 docker-composer之后,你就可以把这些命令一次性写在 docker-composer.yml 文件中,以后每次启动这一整个环境(含3个容器)的时候,你只要敲一个 docker-composer up命令就ok了。

dockerfile的作用是从无到有的构建镜像。它包含安装运行所需的环境、程序代码等。这个创建过程就是使用 dockerfile 来完成的。

Dockerfile -为 docker build 命令准备的,用于建立一个独立的 image ,在 docker-compose 里也可以用来实时 build  

安装compose

https://github.com/docker/compose/releases wget方式下载新的版本

wget https://github.com/docker/compose/releases/download/1.25.5/docker-compose-Linux-x86_64 -O /usr/bin/docker-compose

修改权限

chmod +x /usr/bin/docker-compose

安装完成后可以查看版本:

docker-compose --version

一般步骤

1、定义Dockerfile,方便迁移到任何地方;
2、编写docker-compose.yml文件;
3、运行docker-compose up启动服务

示例: 准备工作:提前下载好镜像:

需要新建一个空白目录,在目录新建一个 docker-compose.yml

compose 模版文件

version: '3.6' #版本号
services:
    nginx:                   #服务名 
        context: ./dir       #dockerfile所在路径
        dockerfile: Dockerfile-alternate  #指定dockerfile              
        image: nginx:latest   #镜像
        container_name: docker_container  #是否指定容器名
        volumes:
            - dir:/usr/dir   #指定挂载盘 宿主机路径:容器内路径
        environment:         #指定环境变量
             session:123
        args:                #指定变量
            buildno:1 
        ports:               #端口映射   
            - "8080:80"
        stdin_open:true      #打开标准输入 接受外部输入
        networks:
            nginx-net:
                ipv4_address: 172.0.0.2
        tty:true             #模拟一个伪终端
        command: echo "hello"   #构建时执行命令
        command: [bundle, exec, thin, -p, 3000] #支持数组形式

        depends_on:          #启动依赖的镜像服务
            - db 
        dns:                 #指定启动dns
            - 8.8.8.8
        extra_hosts:         #指定额外的 host 名称映射信息
            - "googledns:8.8.8.8"
            - "dockerhub:52.1.157.61"
        privileged: true     #允许拥有特殊权限

networks:
  #自定义网络
    nginx:
        driver: bridge
        ipam:
            config:
                - subnet: "172.16.238.0/24"
  #引用外部预先定义好的网段
    redis-network:
    external:
        name: redis-network

以上为docker-compose常用配置项目。

常用命令

命令 说明
docker-compose up 启动应用 前台打印日志
docker-compose up -d 服务后台后运行
docker-compose ps 查看状态
docker-compose start [SERVICE...]
docker-compose stop [SERVICE...] 停止服务
docker-compose restart 重新启动服务
docker-compose scale web=3 db=2 将启动 3 个容器运行 web 服务,2 个容器运行 db 服务。

需要可以通过参考官方手册去查看