简介
Docker Compose 是Docker官方的开源项目, 其目的是为了简化我们使用Docker的操作
使用 Dockerfile 模板文件,可以快速部署一个单独的应用。
然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器(MySQL),甚至还包括负载均衡容器(Nginx)等。
Compose 可以满足这样的需求。它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(Project)。Compose 中有两个重要的概念:
- 服务 (Service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
- 项目 (Project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。
Compose 的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。Compose 项目由 Python 编写,实现上调用了 Docker 服务提供的 API 来对容器进行管理。因此,只要所操作的平台支持 Docker API,就可以在其上利用 Compose 来进行编排管理。
总结: Docker Compse安装完成之后, 通过编写docker-compose.yml文件, 可以一次性启动/部署多个容器/服务 , 不用再一个个启动容器了, 就是为了简化操作
安装 Docker Compose
安装Docker Cpmpose
从 官方 GitHub Release 处直接下载编译好的二进制文件即可。
# 下载指令
curl -L https://github.com/docker/compose/releases/download/1.26.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
# 下载完成后没有执行权限, 添加执行权限
chmod +x /usr/local/bin/docker-compose
验证
# 查看版本指令
[root@worker ~]# docker-compose version
# 输出内容
docker-compose version 1.26.0, build d4451659
docker-py version: 4.2.1
CPython version: 3.7.7
OpenSSL version: OpenSSL 1.1.0l 10 Sep 2019
Docker Compose 部署Tomcat
创建 tomcat 的Docker Compose 文件
创建docker-compose.yml文件,路径可以随意指定,文件名只能是 docker-compose.yml,但是执行docker-compose命令时必须要在该文件所在路径中
docker-compose.yml 文件内容
version: '2.0'
services:
tomcat:
restart: always
image: tomcat
container_name: tomcat
ports:
- 8080:8080
volumes:
- ./webapps:/usr/local/tomcat/webapps.dist
environment:
TZ: Asia/Shanghai
启动Docker Compose
# 如果配置文件没有出错,执行如下命令(在docker-compose.yml当前目录)
docker-compose up -d
停止Docker Compose
docker-compose down
docker-compose.yml 内容解释
# 版本号
version: '2.0'
# 服务列表
services:
# 服务名 随便起,不重名就行
tomcat:
# 开机启动
restart: always
# 镜像名 (本地拥有的镜像或者公共仓库的镜像)
image: tomcat
# 容器名
container_name: tomcat
# 端口映射规则
ports:
- 8080:8080
# 数据卷配置,和端口规则一样 冒号左边是宿主机, 右边是容器
volumes:
- ./webapps:/usr/local/tomcat/webapps.dist
# 环境变量
environment:
TZ: Asia/Shanghai
数据卷解释:就是将 宿主机和容器中的一个文件夹进行同步
例如:
volumes:
- ./webapps:/usr/local/tomcat/webapps
冒号左边是宿主机的文件夹 ./webapps 也是是当前目录下的 webapps 文件夹和冒号右边的容器内的 /usr/local/tomcat/webapps 文件夹关联起来
Docker Compose常用命令
# 查看容器运行状态
docker-compose ps
# 停止容器(说明:docker-compose stop,如果没有指定容器,则会把docker-compose.yml文件中配置的所有容器停止。如果只想停止某个容器,则需要指定容器名)
docker-compose stop (docker-compose stop tomcat)
# 删除容器
docker-compose rm tomcat
# 如下这个,容器名是nginx,注意,是nginx,不是nginx_nginx_1
# docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------------------------
nginx_nginx_1 nginx -g daemon off; Up 0.0.0.0:443->443/tcp, 0.0.0.0:8086->80/tcp
Commands:
build Build or rebuild services
config Validate and view the Compose file
create Create services
down Stop and remove containers, networks, images, and volumes
events Receive real time events from containers
exec Execute a command in a running container
help Get help on a command
images List images
kill Kill containers
logs View output from containers
pause Pause services
port Print the public port for a port binding
ps List containers
pull Pull service images
push Push service images
restart Restart services
rm Remove stopped containers
run Run a one-off command
scale Set number of containers for a service
start Start services
stop Stop services
top Display the running processes
unpause Unpause services
up Create and start containers
version Show the Docker-Compose version information
docker-compose 常用命令:
// up 该命令十分强大,它将尝试自动完成包括构建镜像,(重新)创建服务,启动服务,并关联服务相关容器的一系列操作
docker-compose up [options] [SERVICE...] // -d 比较常用,不会打印过程。
//down 停止 up 命令所启动的容器,并移除网络。——这里需要特别注意,up 启动的,不应该使用rm 去删除,因为这样无法删除网络
docker-compose down
// run 命令
docker-compose run [options] [-p PORT...] [-e KEY=VAL...] SERVICE [COMMAND] [ARGS...]
// ps 查看项目中的所有容器
docker-compose ps
// restart 重启服务
docker-compose restart [options] [SERVICE...]。
// stop start 停止和开启容器
docker-compose stop xxx
docker-compose start xxx
// kill 强制停止某容器
docker-compose kill -s SIGINT
// rm 删除指定或所有的服务容器
docker-compose rm -f [service]
// build 重建某个容器,在 Dockerfile 发生了改变的时候,可以重建image。然后再 up 运行起来所有的容器
docker-composer build //重建所有容器
docker-compose build xxx //重建指定容器
//exec 进入某个容器
docker-compose exec -it ct-phpfpm /bin/bash
// images 查看compose文件中包含的镜像
docker-compose images
// pull 拉取依赖
docker-compose pull [options] [SERVICE...]
// push 推送服务依赖的镜像到 Docker 镜像仓库。
docker-compose push
// port 打印某容器的映射端口
docker-compose port xxx
// config 验证 docker-compose 文件格式是否正确
docker-compose config// top 查看所有容器的进程
docker-compose top