使用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容器编排工具,编写docker-compose.yml文件进行容器化部署_第1张图片

需要注意的是所有的容器服务都可以设置自动重启,在系统停机维护之后再次启动时,服务可自动启动,无需再手动执行启动命令

一个简单的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

使用docker-compose容器编排工具,编写docker-compose.yml文件进行容器化部署_第2张图片

 配置解释:

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拉取镜像完成部署前的准备工作

安装docker和docker-compose,拉取docker镜像的步骤_Libigtong的博客-CSDN博客

你可能感兴趣的:(docker及linux,docker,eureka,java)