docker compose使用教程
简介
docker compose是用来控制多个容器运行逻辑(容器编排)的工具
不再需要通过docker run命令一个一个启动容器,也不再需要用shell脚本控制容器的启动
下载
docker compose不集成在docker中,需要另外下载
curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-compose配置
docker-compose将容器运行逻辑写进yml文件,然后用docker-compose up命令,启动compose
编辑yml文件
service,network,volume需要配置,但是普通使用只需要用到service
yml极简配置
1 | version: '3' // 指定compose版本,和docker版本对应(docker 18.09对应) |
按照官方文档的描述,compose文件基本涵盖了dockerfile和docker run的一切参数,可以完全依靠compose部署容器
实例
1 | version: "3" |
启动流程
在compose配置文件目录下执行命令,docker-compose up
调试流程
- 重新编译项目可执行文件
- 通过命令
docker-compose up --build -d或docker-compose build重新编译镜像
特别注意
在curd容器中,如果想使用mongo,那么mongo url应该写为
mongodb://[mongo服务名]:27017
在这里,就是
mongodb://db:27017
这与docker run方式启动容器不同,docker run启动时会添加 –net=host 参数,所以其他容器连接mongo数据库,通过localhost即可
而,compose将每个服务都看作是独立的,通过服务名连接访问
而compose方式中的localhost,只表示本服务,可以通过服务名访问其他服务
官方文档表示,version 3.4开始在支持 –net=host 模式
1
2
3
4 > build:
> context: .
> network: host
>
暂未验证
命令
常用命令如下
-
docker-compose [ -f 指定配置yml文件 ] [ -p 指定项目名称,默认为yml所在目录名 ] up [ -d ] [ 服务名 ]
detch模式启动
docker-compose up -d
重新编译并启动
docker-compose up –build -d
-
docker-compose build [服务名]
-
docker-compose down [options]
删除因compose创建的容器和本地镜像(仅删除image字段为空的镜像)
docker-compose down –rmi local