使用docker-compose容器编排工具,编写docker-compose.yml文件进行容器化部署
现在的spring cloud 项目在部署的时候基本上都是使用docker容器来进行部署,所以这里给大家介绍一下日常使用dokcer的一些命令,还有现在流行的docker-compose
1.docker-compose
docker-compose是一个容器编排工具,它用来在单台Linux服务器上运行多个Docker容器。docker-compose使用YAML文件来配置所有需要运行的Docker容器(称之为服务),该YAML文件的默认名称为docker-compose.yml,内容为YAML格式的UTF-8文本。通过一条命令,我们可以创建docker-compose.yml 文件中描述的所有服务。
在环境初始化之后,会先在工作目录下创建 docker-compose.yml
文件,编写容器编排配置,然后通过 docker-compose
命令来控制所有服务的启停,具体流程可参考下图:
需要注意的是所有的容器服务都可以设置自动重启,在系统停机维护之后再次启动时,服务可自动启动,无需再手动执行启动命令
一个简单的docker-compose.yml
version: '3' # 1
services: # 2
redis: # 3
image: redis # 4
ports: # 5
- "1234:6379"
1. compose文件格式的版本,恒定为3
2. services标签下可以定义多个类似 redis 这样的服务
3. redis 服务定义, redis 是服务的名称,由用户来定义 (类似redis这样的服务可以在 services 下定义多个)
4. redis 服务所使用的镜像路径为redis
5. 定义端口映射,本例将容器内的6379端口映射到宿主机的1234端口
一个完整的docker-compose.yml
配置解释:
1. 在一个yml文件的service下可以配置多个容器pg,nginx等等,每一个容器代表一个服务
2. image表示镜像地址
3. container_name 表示指定的容器名
4.restart 表示服务启动之后会一直尝试重启
5. ports 表示将容器的端口与主机的端口进行关联,访问主机的端口就能访问到容器里面服务的端口
5.1 另外一种写法的接介绍:network_mode: host
指定网络模式为 host
模式,容器直接使用宿主机的网络。因为我们的部署所用端口有明确的划分,所以不需要对网络进行隔离,可以简化配置。
6.volumes 表示容器的挂载目录,将本机的配置文件或者存储数据的目录挂载到容器的目录
编写完docker-compose.yml文件后,使用一行命令就可以启动所有的容器服务了
7.healthcheck: 容器健康检查
8.logging: 配置日志驱动
9.environment:配置环境变量
常用命令
docker compose up -d
up表示启动
-d表示后台运行
关闭客户端也会再后台继续运行,除非使用命令关掉运行中的容器
正常情况下,我们会配置容器的重启策略为 always
,即异常退出后,总是重启。所以容器会一直保持运行状态,如果有异常状况如内存溢出导致容器退出,则会自动重启。
查看服务运行状态
docker compose ps
启动停止某个容器
# 停止
docker stop 容器名
# 启动
docker start 容器名
查看日志
# 查看所有日志
docker-compose logs -f
# 持续打印某个应用的日志
docker logs -f 容器名
# 持续打印某个应用的日志(只显示最后10行)
docker logs -f 容器名 --tail 10
# 导出某个容器的所有日志
docker logs 容器名 > app.log
暂停所有容器,但是不删除容器实例(常用于停机维护前暂停所有容器服务)
docker compose stop
删除所有容器实例(常用于排查问题的时候)
docker compose down
注意: 如果是安装的docker-compose,docker compose命令请加上 - ,如果是新版的docker,安装的docker compose插件,请去掉这个横杠 -
在另一篇文章中我将会讲解如何使用docker拉取镜像完成部署前的准备工作
更多推荐
所有评论(0)