docker-compose安装与使用
## 简介 `Docker Compose` 的作用是简化和管理一个或多个 `Docker` 容器的
渲染中...
## 简介
`Docker Compose` 的作用是简化和管理一个或多个 `Docker` 容器的应用程序的开发、部署和管理过程。它可以让开发者通过一个简单的配置文件来定义整个应用程序的环境,包括服务之间的依赖关系、容器的配置选项以及网络设置等,然后使用一条命令就可以轻松地启动、停止、重新启动或销毁整个应用程序。
> PS:想要更简单的使用docker,docker-compose是一个最基础的工具。
官方文档:[Docker Compose overview](https://docs.docker.com/compose/)
<!-- more -->
## 安装
### 官方推荐安装方式
官方文档:[Install the Compose](https://docs.docker.com/compose/install/other/)
运行下方命令一键安装:
```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.yaml` 或 `docker-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,请屏幕前的大佬动动您发财的小手,点击一次以示鼓励,祝您生活愉快!**
<!-- 文章内嵌广告位 -->
<div class="article-ads"></div>
> PS:就目前的访问量,即便每个访客都点一次广告,收入也不足以支付运营成本。`如果看不到广告,可能是网络原因或被拦截了,那就算了吧。再次祝您生活愉快~~`END
评论
登录后查看和发表评论
前往登录