简介
官方文档:https://docs.docker.com/compose/
Compose is a tool for defining and running multi-container Docker applications. With Compose, you use a YAML file to configure your application’s services. Then, with a single command, you create and start all the services from your configuration.
Using Compose is basically a three-step process:
- Define your app’s environment with a
Dockerfileso it can be reproduced anywhere.- Define the services that make up your app in
docker-compose.ymlso they can be run together in an isolated environment.- Run
docker compose upand the Docker compose command starts and runs your entire app. You can alternatively rundocker-compose upusing the docker-compose binary.
可以理解为容器编排的工具
安装
官方文档:https://docs.docker.com/compose/install/
#官方的很慢sudo curl -L "https://github.com/docker/compose/releases/download/1.29.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose#可以网上找一个sudo curl -L "https://github.com/docker/compose/releases/download/1.28.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose#设置权限chmod +x /usr/local/bin/docker-compose#验证安装是否成功docker-compose --version
尝试
也可以参考harbor部署。
官方文档有一个例子:https://docs.docker.com/compose/gettingstarted/
完成前4步之后
(base) [root@izuf64eqyhnvmcv50ay73gz ~]# curl localhost:5000Hello World! I have been seen 1 times.(base) [root@izuf64eqyhnvmcv50ay73gz ~]# curl localhost:5000Hello World! I have been seen 2 times.
分析一下
默认容器名/服务名:
composetestredis_1和composetest_web_1
当前文件夹名服务名_副本数
(base) [root@izuf64eqyhnvmcv50ay73gz ~]# docker ps -n=2CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESfa9c372da6c3 redis:alpine "docker-entrypoint.s…" 3 minutes ago Up 3 minutes 6379/tcp composetest_redis_19016f9804b0f composetest_web "flask run" 3 minutes ago Up 3 minutes 0.0.0.0:5000->5000/tcp composetest_web_1(base) [root@izuf64eqyhnvmcv50ay73gz ~]#
网络:
可以看到docker-compose给我们维护了一个叫composetest_default的自定义网络。如果执行docker-compose down关闭服务,这个网络也会消失。
(base) [root@izuf64eqyhnvmcv50ay73gz ~]# docker network lsNETWORK ID NAME DRIVER SCOPEc38149fd1d59 bridge bridge locale2c4cd73b5ac composetest_default bridge local480762c35327 harbor_harbor bridge locala6d1fd635ad8 host host locala88653ee6e7a mynet bridge local580f8272eeba none null local702358f66c15 redis bridge local(base) [root@izuf64eqyhnvmcv50ay73gz ~]#
配置编写规则
docker-compose的核心:docker-compose.yml
官方文档:https://docs.docker.com/compose/compose-file/
注意看下版本,向下兼容的。
主要有几个重要部分:
version
版本,新版本docker可以兼容老版本
service
多个服务,通过服务名来访问。
结合docker run的参数来填写
可以用depends_on来设置服务启动的先后顺序
volume
数据卷设置
network
网络设置
