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 服务。 |
需要可以通过参考官方手册去查看