Docker Compose 是一个用于定义和运行多个 Docker 容器的工具,它允许你使用一个 YAML 文件来配置和管理 Docker 容器。可以在 Docker Compose 文件中定义容器的镜像、环境变量、端口映射、依赖关系等属性,以及容器之间的网络和数据卷等配置。当我们使用 Docker Compose 启动容器时,它会自动创建和启动定义的容器,并配置它们之间的网络和数据卷等关系。
1.docker compose安装(linux环境)
下载:
https://github.com/docker/compose
下载最新版本
授权:
mv /data/docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
cp /data/docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
开发环境可以授予最高权限
chmod 777 /usr/local/bin/docker-compose
检查安装情况以及版本:
docker-compose -v
docker-compose --version
docker-compose version
卸载docker-compose:
rm -rf /usr/local/bin/docker-compose
reboot
2.yml配置文件及常用指令
Docker Compose 使用 YAML 文件来定义多服务的应用。YAML 是 JSON 的一个子集,因此也可以使用JSON。
Docker Compose 默认使用文件名 docker-compose.yml。当然,也可以使用 -f 参数指定具体文件。
yaml 文件级
Docker Compose 的 YAML 文件包含 4 个一级 key:version、services、networks、volumes
-
version 是必须指定的,而且总是位于文件的第一行。它定义了 Compose 文件格式(主要是 API)的版本。注意,version 并非定义 Docker Compose 或 Docker 引擎的版本号。
-
services 用于定义不同的应用服务。下边的例子定义了两个服务:一个mysql数据库服务以及一个eureka的微服务。Docker Compose 会将每个服务部署在各自的容器中。
-
networks 用于指引 Docker 创建新的网络。默认情况下,Docker Compose 会创建 bridge 网络。 这是一种单主机网络,只能够实现同一主机上容器的连接。当然,也可以使用 driver 属性来指定不 同的网络类型。
-
volumes 用于指引 Docker 来创建新的卷。
配置文件
version: '3'
services:
mysql:
build:
context: ./mysql
environment:
MYSQL_ROOT_PASSWORD: admin
restart: always
container_name: mysql
volumes:
- /data/edu-bom/mysql/test:/var/lib/mysql
image: mysql/mysql:5.7
ports:
- 3306:3306
networks:
net:
eureka:
build:
context: ./edu-eureka-boot
restart: always
ports:
- 8761:8761
container_name: edu-eureka-boot
hostname: edu-eureka-boot
image: edu/edu-eureka-boot:1.0
depends_on:
- mysql
networks:
net:
networks:
net:
volumes:
vol:
注意:
- 大小写敏感
- 使用缩进表示层级关系
- 缩进不允许使用tab,只允许空格
- 缩进的空格数不重要,只要相同层级的元素左对齐即可
- '#'表示注释
3.docker compose常用命令
启动服务
docker-compose up -d
停止服务
docker-compose down
列出所有运行容器
docker-compose ps
查看服务日志
docker-compose logs
构建或
docker-compose build者重新构建服务
启动服务
docker-compose start
停止已运行的服务
docker-compose stop
重启服务
docker-compose restart