一、docker-compose的安装
1、按官网的方式去安装
1)下载docker-compose
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
若速度较慢,可以使用如下命令:
curl -L "https://mirror.ghproxy.com/https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
2)修改目录权限(添加可执行权限)
chmod +x /usr/local/bin/docker-compose
3)创建软连接
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
4)验证安装是否完成
docker-compose --version
2、通过pip进行安装
安装pip
yum -y install epel-release
yum -y install python-pip
查看版本
pip --version
更新pip
pip install --upgrade pip
安装docker-compose
pip install docker-compose
查看docker compose的版本
docker-compose version
3、离线安装
访问https://github.com/docker/compose/releases,下载 docker-compose-Linux-x86_64,我是复制链接地址,在迅雷中下载的,下载后,将docker-compose-Linux-x86_64重命名为docker-compose
通过ssh工具MobaXterm,将刚才下载的docker-compose文件上传到centos7的/usr/local/bin/目录下
重命名并添加执行权限
cd /usr/local/bin/mv ./docker-compose-linux-x86_64 docker-composechmod +x /usr/local/bin/docker-compose
docker-compose -v出现版本信息说明安装成功
二、docker-compose常用命令
1)docker-compose -help 查看帮助。
2)docker-compose config -q 验证docker-compose.yml文件。当配置正确时,不输出任何内容,当配置错误时,输出错误信息。
3)docker-compose pull 拉取服务依赖的镜像。
# 拉取工程中所有服务依赖的镜像
docker-compose pull
# 拉取工程中 nginx 服务依赖的镜像
docker-compose pull nginx
# 拉取镜像过程中不打印拉取进度信息
docker-compose pull -q
4)docker-compose up 创建并启动所有服务的容器。指定多个yml加-f选项。以守护进程模式运行加-d选项。
# 前台启动
docker-compose up
# 后台启动
docker-compose up -d
# -f 指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定,指定多个 yml
docker-compose -f docker-compose.yml up -d
5)docker-compose logs 查看服务容器的输出日志。默认情况下,docker-compose将对不同的服务输出使用不同的颜色来区分。可以通过--no-color来关闭颜色。
# 输出日志,不同的服务输出使用不同的颜色来区分
docker-compose logs
# 跟踪日志输出
docker-compose logs -f
# 关闭颜色
docker-compose logs --no-color
6)docker-compose ps 列出工程中所有服务的容器。
# 列出工程中所有服务的容器
docker-compose ps
# 列出工程中指定服务的容器
docker-compose ps nginx
7)docker-compose run 在指定服务容器上执行一个命令。
# 在工程中指定服务的容器上执行 echo "helloworld"
docker-compose run nginx echo "helloworld"
8)docker-compose exec 进入服务容器。
# 进入工程中指定服务的容器
docker-compose exec nginx bash
# 当一个服务拥有多个容器时,可通过 --index 参数进入到该服务下的任何容器
docker-compose exec --index=1 nginx bash
9)docker-compose pause 暂停服务容器
# 暂停工程中所有服务的容器
docker-compose pause
# 暂停工程中指定服务的容器
docker-compose pause nginx
10)docker-compose unpause 恢复服务容器。
# 恢复工程中所有服务的容器
docker-compose unpause
# 恢复工程中指定服务的容器
docker-compose unpause nginx
11)docker-compose start 启动服务容器。
# 启动工程中所有服务的容器
docker-compose start
# 启动工程中指定服务的容器
docker-compose start nginx
12)docker-compose stop 停止服务容器。
# 停止工程中所有服务的容器
docker-compose stop
# 停止工程中指定服务的容器
docker-compose stop nginx
13)docker-compose kill 通过发送SIGKILL信号停止指定服务的容器。
# 通过发送 SIGKILL 信号停止工程中指定服务的容器
docker-compose kill nginx
14)docker-compose rm 删除服务(停止状态)容器。
# 删除所有(停止状态)服务的容器
docker-compose rm
# 先停止所有服务的容器,再删除所有服务的容器
docker-compose rm -s
# 不询问是否删除,直接删除
docker-compose rm -f
# 删除服务容器挂载的数据卷
docker-compose rm -v
# 删除工程中指定服务的容器
docker-compose rm -sv nginx
15)docker-compose down 停止并删除所有服务的容器、网络、镜像、数据卷。
# 停止并删除工程中所有服务的容器、网络
docker-compose stop
# 停止并删除工程中所有服务的容器、网络、镜像
docker-compose down --rmi all
# 停止并删除工程中所有服务的容器、网络、数据卷
docker-compose down -v
16)docker-compose images 打印服务容器所对应的镜像。
# 打印所有服务的容器所对应的镜像
docker-compose images
# 打印指定服务的容器所对应的镜像
docker-compose images nginx
17)docker-compose port 打印指定服务容器的某个端口所映射的宿主机端口。
docker-compose port nginx 80
18)docker-compose top 显示正在运行的进程。
# 显示工程中所有服务的容器正在运行的进程
docker-compose top
# 显示工程中指定服务的容器正在运行的进程
docker-compose top nginx
三、docker-compose.yml 说明
创建 docker-compose.yml
文件是使用 Docker Compose 管理多容器应用的第一步。这个 YAML 格式的文件详细描述了服务、网络和卷等组件以及它们之间的关系。下面是对一个典型 docker-compose.yml
文件结构的详解:
1.基本结构
一个基本的 docker-compose.yml
文件通常包括以下几个部分:
version: '3.8' # Docker Compose 文件版本
services: # 定义服务service_name_1: # 服务1的名称image: image_name_1 # 使用的镜像build: # 或者使用 Dockerfile 构建镜像context: . # Dockerfile 所在的上下文路径dockerfile: Dockerfile # Dockerfile 的名称,默认为 Dockerfileports:- "host_port:container_port" # 端口映射environment: # 环境变量VAR_NAME: valuevolumes: # 数据卷挂载- host_path:container_path # 主机路径:容器路径networks: # 网络配置- network_namedepends_on: # 依赖服务- service_name_2restart: always # 重启策略command: # 覆盖容器启动命令- your-command- hereservice_name_2: # 类似地定义其他服务...networks: # 可选部分,定义网络network_name:driver: bridge # 网络类型,默认为桥接网络volumes: # 可选部分,定义数据卷volume_name:driver: local # 数据卷驱动,默认为本地存储
关键概念解释
version: 指定 Docker Compose 文件的版本号,这影响到你能使用的功能和语法。
services: 定义了组成应用的服务集合。每个服务定义了如何构建或使用哪个镜像、环境变量、端口映射等。
image: 指定服务使用的 Docker 镜像名称。
build: 当你需要基于 Dockerfile 构建镜像时使用。
ports: 映射容器端口到宿主机端口,格式为 宿主机端口:容器端口。
environment: 设置环境变量,供服务中的进程使用。
volumes: 挂载数据卷,用于持久化数据或共享数据。
networks: 定义网络,让服务之间可以相互通信。
depends_on: 指定服务启动的依赖顺序。
restart: 设置服务的重启策略,如 always 表示无论何种退出状态都会重启容器。
command: 覆盖容器启动时默认执行的命令。
实践建议
简洁性: 尽量保持文件的简洁明了,可以通过变量和外部文件引用提高可维护性。
版本控制: 将 docker-compose.yml 文件纳入版本控制系统,便于团队协作和回溯历史变更。
测试: 在应用更改后,使用 docker-compose up 命令测试配置是否正确无误。
通过上述细节,你可以根据实际需求灵活编写 docker-compose.yml 文件,实现复杂应用的快速部署和管理。
四、docker-compose部署SpringBoot项目
docker-compose部署SpringBoot项目依赖于docker,Dockerfile编写、制作docker镜像步骤请查看如下连接
Docker安装、使用,容器化部署springboot项目-CSDN博客
1.编写docker-compose.yml文件
version: '3'
services:mes-gateway:restart: alwayscontainer_name: mes-gatewayimage: mes-gateway:1.0.1ports:- 8080:8080volumes:- ./gateway/mes-gateway-1.0.1.jar:/home/docker/mes-gateway-1.0.1.jar- /etc/localtime:/etc/localtime- ./logs/mes-gateway:/home/mes/docker/mes/logs/mes-gatewaynetworks:- mesnetworkmes-auth:restart: alwayscontainer_name: mes-authimage: mes-auth:1.0.1ports:- 9200:9200volumes:- ./auth/mes-auth-1.0.1.jar:/home/docker/mes-auth-1.0.1.jar- /etc/localtime:/etc/localtime- ./logs/mes-auth:/home/mes/docker/mes/logs/mes-authnetworks:- mesnetworknetworks:mesnetwork:external: true
2.使用docker-compose启动容器
docker-compose up -d # -d表示以守护模式启动,会一直运行在后台
3.取消部署
执行以下任一命令即可
删除所有容器实例(常用于排查问题的时候)
docker-compose down
暂停所有容器,但是不删除容器实例(常用于停机维护前暂停所有容器服务)
docker-compose stop
4.查看日志
# 查看所有日志
docker-compose logs -f
# 持续打印某个应用的日志
docker logs -f 容器名
# 持续打印某个应用的日志(只显示最后10行)
docker logs -f 容器名 --tail 10
# 导出某个容器的所有日志
docker logs 容器名 > app.log
5.使用 Docker Compose 实现容器IP和宿主机IP一致
Docker Compose 是 Docker 官方提供的一个工具,用于定义和运行多个 Docker 容器的应用程序。它使用 YAML 文件定义容器相关的配置信息,并提供简单的命令来管理容器。
要实现容器IP和宿主机IP一致,我们需要在 Docker Compose 配置文件中设置网络模式为 host。在 host 模式下,容器与宿主机共享同一个网络命名空间,容器将直接使用宿主机的 IP 地址。以下是一个示例的 Docker Compose 配置文件:
version: '3'
services:
myapp:
image: myapp:latest
network_mode: "host"