5.1 docker-compose简介,安装
简介:
Docker Compose 是一个 Docker 官方提供的工具,用于定义和运行多个 Docker 容器的应用程序。它可以通过一个 YAML 文件来配置应用程序的服务,从而实现容器化应用程序的快速部署和管理。
使用 Docker Compose 可以轻松定义多个 Docker 容器,并指定各个容器之间的依赖关系和网络配置等。通过一个简单的命令行界面,可以轻松地启动、停止、重启和销毁整个应用程序。此外,Docker Compose 还支持通过命令行进行扩展和缩减服务规模,以应对不同的需求。
使用 Docker Compose 可以简化 Docker 应用程序的开发、测试和部署过程,提高开发人员和 DevOps 的工作效率,加速应用程序的交付和上线。
安装
1.输入以下命令以下载 Docker Compose 的安装脚本:
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
2.安装 Docker Compose,文件添加执行权限:
chmod +x /usr/local/bin/docker-compose
3.验证 Docker Compose 是否安装成功:
docker-compose --version
如果安装成功,终端将显示 Docker Compose 的版本号。
5.2 docker-compose入门
Docker Compose 快速入门示例:
- 创建一个项目目录,并在该目录下创建一个名为 docker-compose.yml 的文件。
- 编辑 docker-compose.yml 文件,添加以下内容:
version: "3"
services:
web:
image: nginx
ports:
- "80:80"
上述示例定义了一个名为 web 的服务,使用 Nginx 镜像,并将容器的 80 端口映射到宿主机的 80 端口。
- 在终端中进入项目目录,并运行以下命令启动容器:
docker-compose up
运行该命令后,Docker Compose 会根据 docker-compose.yml 文件中定义的配置启动容器。在本例中,将启动一个名为 web 的 Nginx 容器。使用浏览器访问 http://localhost,应该能够看到 Nginx 的欢迎页面。
docker-compose常用命令
docker-compose up
: 启动容器,会根据 docker-compose.yml 文件中的配置创建和启动容器。docker-compose up -d
: 启动容器并在后台运行。docker-compose down
: 停止由up命令启动的容器并删除相关资源,包括容器、网络和卷等。--volumes
删除卷docker-compose ps
: 查看项目中的所有容器的状态。docker-compose logs
: 查看容器的日志输出。docker-compose start
: 启动已经创建的容器。docker-compose stop
: 停止正在运行的容器。docker-compose restart
: 重启已经创建的容器。docker-compose build
: 构建 Docker 镜像。docker-compose pull
: 从远程仓库拉取 Docker 镜像。docker-compose exec
容器名 bash : 在指定的容器中执行命令。docker-compose config
: 检查 docker-compose.yml 文件的语法和格式是否正确。
5.2 docker-compose核心
docker-compose.yml介绍
Docker Compose文件由三个主要部分组成:
- version:指定Docker Compose文件的版本号,用于指定Compose文件的语法版本和使用哪些Compose功能。
- services:指定Docker容器的服务。每个服务都可以由多个子字段组成,包括容器的名称、构建方式、镜像名称、端口映射、环境变量等选项。
- networks:指定Docker容器的网络。可以使用"bridge"、“host”、"none"等预定义网络,也可以创建自定义网络。
Docker Compose YAML文件常用字段:
version
:指定Compose文件格式的版本号,目前支持的版本有2、2.1、3、3.1、3.2、3.3、3.4、3.5、3.6、3.7、3.8、3.9。不同的版本支持不同的特性和语法,因此在使用Docker Compose时应该根据实际情况选择合适的版本。services
:定义应用程序的各个服务,每个服务可以包含一个或多个容器。在services中定义的服务将会在一个共同的Docker网络中运行,并且可以通过服务名来互相访问。image
:指定使用哪个Docker镜像。如果没有指定image字段,则需要通过build字段来指定使用哪个Dockerfile构建镜像。build
:指定使用Dockerfile构建镜像,可以指定Dockerfile的路径和构建上下文。构建上下文默认为当前目录。container_name
:指定容器的名称。如果没有指定该字段,则Compose将自动生成一个唯一的名称。ports
:指定容器与主机之间映射的端口号。可以使用"主机端口:容器端口"的格式来指定映射关系,也可以只指定容器端口,此时Docker将自动分配一个主机端口。volumes
:指定容器与主机之间共享的目录或文件。可以使用"主机路径:容器路径"的格式来指定共享关系,也可以只指定容器路径,此时Docker将自动创建一个匿名卷。environment
:指定容器中的环境变量。可以使用"变量名=变量值"的格式来指定环境变量,也可以将环境变量定义为一个YAML映射。depends_on
:指定服务之间的依赖关系,如一个服务需要等待另一个服务启动后再启动。在Compose文件中指定depends_on字段不会等待服务完全可用,因此在启动服务后最好使用Docker内置的健康检查机制来检查服务是否可用。network-mode
设置容器的网络模式networks
:指定容器所在的网络。可以使用已存在的网络或者定义新的网络。如果没有指定网络,Compose将自动创建一个默认的网络。restart
:指定容器退出后的重启策略。可以使用"no"、“always”、"on-failure"或者"unless-stopped"四种策略之一。默认情况下,Docker Compose会使用"no"策略。command
:覆盖容器默认的启动命令。可以使用命令行字符串或者一个YAML列表来指定命令和参数。logging
:配置容器的日志记录选项。可以指定日志的驱动程序、驱动程序的配置和日志记录
如下示例:
version: "3.9" # 指定Compose文件的版本
services: # 定义服务
db: # 定义db服务
image: mysql:5.7 # 使用MySQL 5.7的镜像
volumes: # 挂载数据卷
- db_data:/var/lib/mysql # 把db_data数据卷挂载到MySQL的数据目录
restart: always # 定义重启策略,出现错误会自动重启
environment: # 设置环境变量
MYSQL_ROOT_PASSWORD: example # 设置MySQL的root密码
MYSQL_DATABASE: exampledb # 创建exampledb数据库
MYSQL_USER: exampleuser # 创建exampleuser用户
MYSQL_PASSWORD: examplepassword # 给exampleuser用户设置密码
web: # 定义web服务
#build: . # 使用当前目录下的Dockerfile构建镜像
build:
context: ./web # 使用 ./web 目录下的 Dockerfile
dockerfile: Dockerfile.prod # 使用 Dockerfile.prod 作为 Dockerfile
command: python manage.py runserver 0.0.0.0:8000 # 运行Django的开发服务器
volumes: # 挂载数据卷
- .:/code # 把当前目录挂载到容器的/code目录
ports: # 暴露端口
- "8000:8000" # 把容器的8000端口映射到主机的8000端口
depends_on: # 定义服务依赖
- db # web服务依赖于db服务
networks:
- default# 将 web服务添加到名为 default的网络中
volumes: # 定义数据卷
db_data: # 定义db_data数据卷
networks: # 定义网络
default: # 定义默认网络
driver: bridge # 使用桥接模式作为网络驱动