2023-01-11
班门弄斧
00
请注意,本文编写于 680 天前,最后修改于 219 天前,其中某些信息可能已经过时。

目录

简介
安装
官方推荐安装方式
pip(推荐)
curl
使用
基础理解
配置文件
相关操作
配置详解
赞助请求V3

简介

Docker Compose 的作用是简化和管理一个或多个 Docker 容器的应用程序的开发、部署和管理过程。它可以让开发者通过一个简单的配置文件来定义整个应用程序的环境,包括服务之间的依赖关系、容器的配置选项以及网络设置等,然后使用一条命令就可以轻松地启动、停止、重新启动或销毁整个应用程序。

PS:想要更简单的使用docker,docker-compose是一个最基础的工具。

官方文档:Docker Compose overview

安装

官方推荐安装方式

官方文档:Install the Compose

运行下方命令一键安装:

sh
# 注意版本号,可以前往官方文档查看最新版本。 curl -SL https://github.com/docker/compose/releases/download/v2.17.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

安装完成后,如果使用 docker-compose 报错:-bash: /usr/local/bin/docker-compose: Permission denied,则需要给docker-compose授权:

sh
chmod +x /usr/local/bin/docker-compose

pip(推荐)

shell
sudo pip install docker-compose

curl

  • 直接从github下载
shell
sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
  • daocloud下载
shell
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
  • 下载后授权
shell
sudo chmod +x /usr/local/bin/docker-compose

使用

基础理解

docker-compose 的最基础原理,可以认为是将 docker run 命令的相关参数持久化,当运行 docker-compose 指令时,会自动根据持久化的配置内容生成并运行 docker run 命令。

PS:多个容器编排为高级用法。

配置文件

使用 docker-compose 指令前,需要编写相应的 yaml 配置文件。可以命名为 docker-compose.yamldocker-compose.yml。下面是一个简单的内容示例:

yaml
version: '3' services: web: image: nginx:latest ports: - "80:80" db: image: mysql:latest environment: MYSQL_ROOT_PASSWORD: example

相关操作

重点:docker-compose 指令执行时,请保证处在待执行配置文件目录中。

  • 运行
bash
# 前台运行,首次运行将会自动下载相应镜像资源 docker-compose up # 后台运行 # docker-compose up -d
  • 停止
bash
docker-compose stop
  • 重启
bash
docker-compose restart
  • 删除容器
bash
# 停止相应容器并自动删除 docker-compose down
  • 删除镜像

镜像需要手动删除,就是 Dokcer 基础操作,没有新方式。

配置详解

yaml
version: '3.8' # 使用的 Docker Compose 版本号 services: # 定义服务 # Web 应用服务 web: image: nginx:latest # 使用的 Docker 镜像 ports: # 端口映射 - "80:80" # 将容器的 80 端口映射到宿主机的 80 端口 volumes: # 挂载卷 - ./web:/usr/share/nginx/html # 将宿主机的 ./web 目录挂载到容器的 /usr/share/nginx/html 目录,用于存放静态文件 networks: # 定义网络 - app-network # 与名为 app-network 的网络进行连接 # 数据库服务 db: image: mysql:latest # 使用的 Docker 镜像 environment: # 环境变量 MYSQL_ROOT_PASSWORD: example # 设置 MySQL 的 root 密码为 example volumes: # 挂载卷 - mysql-data:/var/lib/mysql # 将 mysql-data 卷挂载到容器的 /var/lib/mysql 目录,用于持久化存储数据库数据 networks: # 定义网络 - app-network # 与名为 app-network 的网络进行连接 depends_on: # 依赖关系 - db # web 服务依赖于 db 服务 volumes: # 定义卷 mysql-data: # 定义名为 mysql-data 的卷,用于持久化存储数据库数据 networks: # 定义网络 app-network: # 定义名为 app-network 的网络

赞助请求V3

建站因为热爱,生活需要Money,请屏幕前的大佬动动您发财的小手,点击一次以示鼓励,祝您生活愉快!

PS:就目前的访问量,即便每个访客都点一次广告,收入也不足以支付运营成本。如果看不到广告,可能是网络原因或被拦截了,那就算了吧。再次祝您生活愉快~~

如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:DingDangDog

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!