Docker:Docker Compose
- 1. Docker Compose 批量管理容器的工具
1. Docker Compose 批量管理容器的工具
Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过一个 YAML 文件来配置应用服务,它允许用户编排、组合和配置多个容器的部署。Docker Compose 主要用于开发、测试和生产环境,使得应用部署更为简洁和高效。
主要特点
-
简化配置:通过使用 YAML 文件(通常命名为 docker-compose.yml),所有服务的配置可以在单个文件中进行管理,使得容器服务的配置更加集中和易于管理。
-
一键部署:用户可以使用一个简单的命令 docker-compose up 来启动和停止整个应用。
-
服务依赖管理:Docker Compose 允许用户定义服务间的依赖关系,确保服务的启动顺序符合依赖要求。
-
重复使用:Docker Compose 项目可以在不同的环境中重复使用,保证了开发、测试和生产环境的一致性。
-
隔离环境:每个项目可以在隔离的环境中运行,互不干扰。
核心组件
-
服务(services):代表容器本身,在 docker-compose.yml 文件中配置,每个服务可以使用不同的镜像。
-
网络(networks):定义容器间的网络连接,Docker Compose 默认设置一个网络并连接所有配置的服务。
-
卷(volumes):用于数据持久化和数据共享,可以在容器间共享文件和目录。
-
环境变量:可以在配置文件中设置环境变量,用于容器内应用的配置。
常用命令
docker-compose up
:启动全部或特定的服务,并创建服务需要的任何网络和卷。docker-compose down
:停止并移除所有容器,可选地包括网络和卷。docker-compose build
:构建服务所需的镜像。docker-compose logs
:查看服务的输出日志。docker-compose exec
:在运行的服务容器中执行命令。
docker compose up -d
上线就是第一次配置
编写一个compose
语句
官方文档:https://docs.docker.com/reference/compose-file/
原来我们只能通过命令逐个安装,比如安装Mysql与wordpass
#创建网络
docker network create blog#启动mysql
docker run -d -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
-e MYSQL_DATABASE=wordpress \
-v mysql-data:/var/lib/mysql \
-v /app/myconf:/etc/mysql/conf.d \
--restart always --name mysql \
--network blog \
mysql:8.0#启动wordpress
docker run -d -p 8080:80 \
-e WORDPRESS_DB_HOST=mysql \
-e WORDPRESS_DB_USER=root \
-e WORDPRESS_DB_PASSWORD=123456 \
-e WORDPRESS_DB_NAME=wordpress \
-v wordpress:/var/www/html \
--restart always --name wordpress-app \
--network blog \
wordpress:latest
name: myblog
services:mysql:container_name: mysql // 容器名image: mysql:8.0 // 用哪个镜像ports:- "3306:3306"environment:- MYSQL_ROOT_PASSWORD=123456 // 环境变量,第一种写法- MYSQL_DATABASE=wordpressvolumes:- mysql-data:/var/lib/mysql // 数据卷映射- /app/myconf:/etc/mysql/conf.d // 目录挂载restart: alwaysnetworks:- blogwordpress:image: wordpressports:- "8080:80"environment:WORDPRESS_DB_HOST: mysql // 环境变量,第二种写法WORDPRESS_DB_USER: rootWORDPRESS_DB_PASSWORD: 123456WORDPRESS_DB_NAME: wordpressvolumes:- wordpress:/var/www/htmlrestart: alwaysnetworks:- blogdepends_on:- mysqlvolumes:mysql-data: // 数据卷wordpress:networks:blog:
第二次启动的时候会将修改的内容重新build与启动,但是老的没变的直接启动
下线后,删除对应的镜像还有卷