简介
Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。从功能上看,跟 OpenStack中的 Heat 十分类似。
我们知道使用一个 Dockerfile
模板文件,可以让用户很方便的定义一个单独的应用容器。然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。
Compose
恰好满足了这样的需求。它允许用户通过一个单独的 docker-compose.yml
模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。
Compose
中有两个重要的概念:
-
服务 (
service
):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。 -
项目 (
project
):由一组关联的应用容器组成的一个完整业务单元,在docker-compose.yml
文件中定义。
下载与安装
1、命令1(下载):
sudo curl -L https://github.com/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
2、命令2(授权):
sudo chmod +x /usr/local/bin/docker-compose
3、查看是否安装成功
docker-compose --version
4、卸载
sudo rm /usr/local/bin/docker-compose
docker compose 模板文件指令
version: "3.2"
services:
tomcat01: #服务名称
container_name: tomcat01 # 相当于run 的 --name
image: tomcat:8.0-jre8 #使用哪个镜像 相当于run image
ports: #用来完成host与容器的端口映射关系 相当于run -p
- "8080:8080"
volumes: #完成宿主机与容器中目录数据卷共享 相当于run -v
#- /root/apps:/usr/local/tomcat/webapps #使用自定义路径映射
- tomcatwebapps01:/usr/local/tomcat/webapps
networks: #代表当前服务使用哪个网络桥 相当于run --networ
- hello
tomcat02: #服务名称
container_name: tomcat02
image: tomcat:8.0-jre8 #使用哪个镜像
ports: #用来完成host与容器的端口映射关系
- "8081:8080"
volumes: #完成宿主机与容器中目录数据卷共享
#- /root/apps:/usr/local/tomcat/webapps #使用自定义路径映射
- tomcatwebapps02:/usr/local/tomcat/webapps
networks: #代表当前服务使用哪个网络桥
- hello
mysql:
image: mysql:5.7.32
container_name: mysql
ports:
- "3307:3306"
volumes:
- mysqldata:/var/lib/mysql
- mysqlconf:/etc/mysql
environment:
- MYSQL_ROOT_PASSWORD=root
networks:
- hello
redis:
image: redis:5.0.10
container_name: redis
ports:
- "6379:6379"
volumes:
- redisdata:/data
networks:
- hello
command: "redis-server --appendonly yes" #run 镜像之后用来覆盖容器内容默认命令
volumes: #声明上面服务所使用的自动创建的卷名
tomcatwebapps01: #声明指令的卷名 compose自动创建该卷名但是会在之前加入项目名
external: #使用自定义卷名
false #true确定使用指定卷名 注意:一旦使用外部自定义卷名启动服务之前必须手动创建
tomcatwebapps02:
mysqldata:
mysqlconf:
redisdata:
networks: #定义服务用到桥
hello: #定义上面的服务用到的网桥名称 默认创建就是 bridge
external:
true #使用外部指定网桥 注意:网桥必须存在
docker compose 命令
模板指令和命令的区别:
模板指令:用来书写在docker-compose.yml文件中指令称之为模板指令,用来为服务进行服务的
命令:用来对整个docker-compose.yml对应的这个项目操作,书写docker-compose命令之后命令
简单就是一个在文件中操作,一个在文件外操作
1、up指令
启动docker compose服务
docker-compose up
启动docker compose服务,在后台启动
docker-compose up -d
2、down指令
关闭docker compose 服务
docker-compose down
3、exec指令
进入指定的容器,4:进入Redis容器
docker-compose exec redis(docker-compose.yml中的声明服务ID) base
4、ps指令
列出项目中目前的所有容器。
docker-compose ps
列出项目中目前的所有容器的ID,-q
只打印容器的 ID 信息
docker-compose ps -q
5、restart 指令
重启docker-compose服务,没有服务ID就重启项目中的所有服务。
docker-compose restart 服务ID
6、rm指令
删除服务
删除所有(停止状态的)服务容器。推荐先执行 docker-compose stop
命令来停止容器。
docker-compose rm 服务ID
-f 强制直接删除,包括非停止状态的容器。一般尽量不要使用该选项。
docker-compose rm -f 服务ID
-v 删除容器所挂载的数据卷。
docker-compose rm -v 服务ID
7、start 指令
启动已经存在的服务容器。
docker-compose start 服务ID
8、stop 指令
停止已经处于运行状态的容器,但不删除它。
通过 docker-compose start
可以再次启动这些容器。
选项:-t, --timeout TIMEOUT
停止容器时候的超时(默认为 10 秒)。
docker-compose stop 服务ID
9、top 指令
查看各个服务容器内运行的进程。
docker-compose top
10、unpause 指令
恢复处于暂停状态中的服务
docker-compose unpause 服务ID
11、pause 指令
暂停服务容器
docker-compose pause
12、logs 指令
查看服务日志
docker-compose logs 服务ID
第一个docker-compose程序
1.创建目录hello
2.进入hello目录,创建文件docker-compose.yml
3.编辑文件,使用Tomcat服务
4.启动服务:docker-compose up
5.访问Tomcat
6.配置多个Tomcat服务
7.启动,命令:docker-compose up
8.访问Tomcat
结束!!
要生活得漂亮,需要付出极大忍耐,一不抱怨,二不解释,而在你不知道该干嘛的时候,积极一点总是好的。