Docker容器

Docker-Compose

本文主要是介绍Docker-Compose,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Docker-Compose

官方文档:https://docs.docker.com/compose/

Docker-Compose 是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排

Compose 是一个用于定义和运行多个容器 Docker 应用程序的工具,使用 Compose,可以使用 YAML 格式的配置文件(docker-compose.yml)来配置应用程序的服务,写好多个容器之间的调用关系;然后,只要一个命令就能同时启动/关闭这些容器

安装 docker-compose

下载并安装 Compose CLI 插件

# 依次执行以下命令
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/v2.6.1/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose

此命令下载最新版本的 Docker Compose(从 Compose 发布存储库)并在$HOME目录下为活动用户安装 Compose

对二进制文件应用可执行权限

 chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose

或者,如果您选择为所有用户安装 Compose:

 sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose

测试安装是否成功

docker compose version

卸载 docker-compose

如果您曾经curl安装 Compose CLI 插件,要卸载它,请运行:

rm $DOCKER_CONFIG/cli-plugins/docker-compose

或者,如果您为所有用户安装了 Compose,请运行:

 rm /usr/local/lib/docker/cli-plugins/docker-compose

您还可以使用:

docker info --format '{{range .ClientInfo.Plugins}}{{if eq .Name "compose"}}{{.Path}}{{end}}{{end}}'

检查 Compose CLI 插件的位置

docker-compose 使用步骤

  • 编写 Dockerfile 定义各个微服务应用并构建出对应的镜像文件
  • 使用 docker-compose.yml 定义一个完整业务单元,安排好整体应用中的各个容器服务
  • 执行 docker-compose up 命令来启动并运行整个应用程序,完成一键部署上线

docker-compose 常用命令

# 查看帮助
docker-compose -h
# 启动所有 docker-compose 服务
docker-compose up
# 后台启动所有 docker-compose 服务
docker-compose up -d
# 后台强制启动 docker-compose 中的某个服务
docker-compose up --force-recreate -d 服务名
# 停止并删除容器、网络、卷、镜像
docker-compose down
# 进入容器实例内部
docker-compose exec yml里面的服务id或服务名 /bin/bash
# 展示当前 docker-compose 编排过的运行的所有容器
docker-compose ps
# 展示当前 docker-compose 编排过的容器进程
docker-compose top
# 查看容器输出日志
docker-compose logs yml里面的服务id或服务名
# 检查配置
docker-compose config
# 检查配置,有问题才输出(启动 docker-compose 前可以通过该命令检查 yml 语法是否存在错误)
docker-compose config -q
# 重启服务(不写服务id或服务名则重启所有服务)
docker-compose restart 服务id或服务名
# 启动服务(不写服务id或服务名则启动所有服务)
docker-compose start 服务id或服务名
# 停止服务(不写服务id或服务名则停止所有服务)
docker-compose stop 服务id或服务名

docker-compose.yml 文件案例说明

# docker-compose 版本
version:"3"

services:
	# 服务名称
	microService:
		# 构建服务使用的镜像名
		image: boot-server:1.1
		# 容器名称(不写则自动生成)
		container_name: docker-compose-test
		# 端口映射
		ports:
			- "6001:6001"
		# 容器数据卷
		volumes:
			- /app/microService:/data
		# 服务所使用的网络模式
		networks:
			- net01
		# 依赖了哪些其他服务
		depends_on:
			- reids
			- mysql
			
	redis:
		image: redis:6.0.8
		ports:
			- "6379:6379"
		volumes:
			- /app/redis/redis.conf:/etc/redis/redis.conf
			- /app/redis/data:/data
		networks:
			- net01
		# 容器启动执行的命令
		command: redis-server /etc/redis/redis.conf
		
	mysql:
		image: mysql:5.7
		environment:
			MYSQL_ROOT_PASSWORD: '123456'
			MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
			MYSQL_DATABASE: 'db2021'
			MYSQL_USER: 'user'
			MYSQL_PASSWORD: '123'
		ports:
			- "3306:3306"
		volumes:
			- /app/mysql/db:/var/lib/mysql
			- /app/mysql/conf/my.cnf:/etc/my.cnf
			- /app/mysql/init:/docker-entrypoint-initdb.d
		networks:
			- net01
		# 解决外部无法访问
		command: --default-authentication-plugin=mysql_native_password
	
	# 网络配置
	networks:
		# 如果 net01 网络模式不存在则自动创建该网络
		net01:
这篇关于Docker-Compose的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!