docker-compose
使用docker-compose的三个步骤
- 编写DockerFile文件
- 编写docker-compose.yml文件,文件内部包含一些服务元数据
-
安装docker compose
Mac 和 Windows 在安装docker的时候已经安装了docker compose。
linux 环境需要安装docker compose。 下载docker compose,因为国外地址下载速度较慢,建议去网上找一个国内镜像地址
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
我们给软件增加可执行权限
sudo chmod +x /usr/local/bin/docker-compose来看看是否安装成功
docker-compose --version docker-compose version 1.23.2, build 1110ad01官方示例太清楚了,不想写笔记了。体验教程:https://docs.docker.com/compose/gettingstarted/
docker compose优点
以前每个容器都需要我们运行 docker run 命令去启动,但现在通过docker compose编写docker-compose.yml文件,就可以通过docker-compose命令一键启动所有容器。
常用命令
启动服务
在文件目录内执行:
docker-compose -f docker-compose.yml up -d如果文件名为
docker-compose.yml,可省略名称:docker-compose up -d查看服务
```shell docker-compose ps
Name Command State Ports
composetest_redis_1 docker-entrypoint.sh redis … Up 6379/tcp composetest_web_1 flask run Up 0.0.0.0:5000->5000/tcp,:::5000->5000/tcp
<a name="JfTzV"></a>
### 终止服务
```powershell
docker-compose down
重新构建
docker-compose up --build
docker-compose.yml 规则
我们可以简单把它的规则简化为三层。
version: "3.9" # 第一层
services:
web1: # 第二层,服务配置
web2:
redis1:
# 第三层是一些网络,数据卷和全局配置
version: "3.9"
services:
redis:
image: redis:alpine
ports:
- "6379"
networks:
- frontend
deploy:
replicas: 2
update_config:
parallelism: 2
delay: 10s
restart_policy:
condition: on-failure
参考地址: https://docs.docker.com/compose/compose-file/compose-file-v3/#service-configuration-reference
启动顺序
要启动一个springboot,通常先启动db和redis,再启动springboot项目。那么在docker-compose是如何支持启动顺序的呢 ?
我们需要 depends_on 命令:
version: "3.9"
services:
web:
build: .
depends_on:
- db
- redis
redis:
image: redis
db:
image: postgres
水平扩展
docker-compose 可水平扩展多个服务。
比如,启动 3 个 web 服务,共享一个 redis 服务:
1:首先启动服务
docker-compose up -d
Creating network "flask-compsose_default" with the default driver
Creating flask-compsose_redis_1 ... done
Creating flask-compsose_web_1 ... done
Creating flask-compsose_lb_1 ... done
2: 水平扩展web服务
docker-compose up --scale web=3
web: 容器服务名称。扩展到3个服务。
flask-compsose_redis_1 is up-to-date
Starting flask-compsose_web_1 ... done
Creating flask-compsose_web_2 ... done
Creating flask-compsose_web_3 ... done
flask-compsose_lb_1 is up-to-date
结果
docker-compose ps
Name Command State Ports
---------------------------------------------------------------------------------------------------------
flask-compsose_lb_1 /sbin/tini -- dockercloud- ... Up 1936/tcp, 443/tcp, 0.0.0.0:8080->80/tcp
flask-compsose_redis_1 docker-entrypoint.sh redis ... Up 6379/tcp
flask-compsose_web_1 python app.py Up 80/tcp
flask-compsose_web_2 python app.py Up 80/tcp
flask-compsose_web_3 python app.py Up 80/tcp
