Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
Compose使用的三个步骤如下:
- 使用Dockerfile定义环境。
- 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
- 最后,执行 docker-compose up 命令来启动并运行整个应用程序
从上述描述中我们可以看出,compose的核心在于配置docker-compose.yml文件,简单的配置及其目的可通过下列模块获取
#此处需要和你的docker-compose版本一致,例如你的docker-compose版本为1.7.8 那么这个版本就是2
version: "2"
networks:
ghost:
#服务,主要用来整合容器,表明他们之前的关系
services:
#二级标签是 ghost-app,这个名字是用户自己自定义,它就是服务名称。
ghost-app:
#基于一份 Dockerfile,在使用 up 启动之时执行构建任务,
#这个构建标签就是 build,它可以指定 Dockerfile 所在文件夹的路径
#这里就是找当前下的ghost文件夹
build:
context: ./dir #指定目录
dockerfile: Dockerfile #指定Dockerfile文件名
args:
test:1 #添加构建参数,这是只能在构建过程中使用的环境变量
labels: #置构建镜像的标签
ports:
-9030:9090 #将主机上的9030端口应射到容器的9090端口
#加入指定网络
networks:
- ghost
#容器的依赖、启动先后的问题,先启动依赖
depends_on: #启动顺序 db redis ghost_app, 关闭顺序ghost_app, redis, app
- db
- redis
container_name: #指定容器的名字
cap_add: #容器添加宿主主机的内核功能
- ALL #添加全部
cap_drop:#容器删除拥有的宿主主机的内核功能
- SYS_PTRACE #关闭PTRACE权限
cgroup_parent: m-executor-abcd #为容器指定父cgroup,继承该组的资源限制
command: #覆盖容器默认的启动命令
entrypoint: #覆盖容器默认的entrypoint
deploy: #采用swarm集群的方式部署时才会用到该方案,这里先不详细展开
dns: #自定义dns
devices: #指定设备映射列表
env_file: #从文件添加环境变量
environment: #添加环境变量键值对形式
expose: #暴露端口,但不应射到主机,只被连接的服务访问
extra_hosts: #添加主机名映射
volumes: #挂载数据卷到容器
sysctls: #设置容器中的内核参数
restart: #设置重启模式
networks: #配置容器连接的网络
nginx:
image: nginx:latest #如果不需要build,可通过image指定直接从dockerhub抓取镜像
container_name: #指定容器的名字而不是使用默认名字
networks:
- ghost
depends_on:
- ghost-app
#宿主机会随机映射端口。
ports:
- 80:80
- 88:88
db:
#指定服务的镜像名称或镜像 ID
image: mysql:5.7.20
networks:
- ghost
#设置镜像变量,它可以保存变量到镜像里面
environment:
MYSQL_ROOT_PASSWORD: mysqlroot
MYSQL_USER: ghost
MYSQL_PASSWORD: ghost
#挂载一个目录或者一个已存在的数据卷容器,
volumes:
- ./data:/var/lib/mysql
ports:
- 3306:3306
docker-compose常用的命令:
- docker-compose build 构建
- docker-compose stop 停止
- docker-compose up 启动
- docker-compose rm 删除
docker-compose安装:
- 下载程序
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/bin/docker-compose
- 添加执行权限
chmod +x /usr/bin/docker-compose
- 验证安装完成
docker-compose --version