这篇主要是用docker-compose
来编排咱们第一篇的内容,顺便谈谈docekr-compose
的好处python
docker-compose
是什么? 简言之就是一个容器编排工具;docker
在第一篇的基础上,你还要懂得yaml
的写法,好比数组的写法,对象的写法等等json
写法大致和json
差很少,可是可表达的东西更多api
通常用pip
(python的一个包管理工具)就能够安装最新的docker-compose
版本,数组
喜欢折腾的也能够自行编译维护bash
注意事项服务器
docker-compose
内
volume
,networks
这种待映射的值不能以数组的形式,必须为mapping(映射,就是跟随冒号)port
和volume
须要用双引号包括# 使用版本号为3.6
version: '3.6'
services:
# 声明yapi服务
yapi:
# 选择的镜像
image: crper/yapi:latest
# 容器的自定义名字,也就是命令行的--name
container_name: yapi
# 不用: 则只是暴露内部端口,用了就是映射外部访问的接口 , -p
ports:
- "3000:3000"
# 单个主机上用bridge(桥接)居多,Swarm(集群)上的overlay, 还有几个模式,好比host
networks:
- yapi
# 启动的时候依赖哪一个镜像
depends_on:
- yapi-mongo
# 设置容器的DNS服务
dns:
- 114.114.114.114
- 8.8.8.8
# 容器重启策略,这里是开启了任何错误都会默认重启
restart: always
# mongo服务
yapi-mongo:
restart: always
image: mongo:latest
networks:
- yapi
container_name: yapi-mongo
ports:
- "27017:27017"
# 映射卷
volumes:
- "yapi-mongo:/data/db"
# 自定义的网络名
networks:
yapi:
# 待映射的volume
volumes:
yapi-mongo:
# 配置还有不少,好比什么子网,传参,日志输出,dns,临时文件夹,网络模式,资源分配等等
# 还能直接在里面构建镜像,而不用去用现有的
# 参数不少,因此要熟悉的配置也是比较麻烦的,这种东西只能一点点的去总结经验
# 具体看官方网站对compose的介绍 : https: //docs.docker.com/compose/compose-file/
复制代码
docker-compose
只是个编排工具!!!!要记住这个;核心仍是依赖docker;网络
由于你启动后,docker
的相关命令仍是能够查看,中止乃至删除容器;app
编排工具里面的封装的中止这些,能够理解为"队列",就是批量帮你处理你编排文件的容器ide
docker-compose
的命令行用起来和docker
差很少,compose
针对的是编排,而docker
是单一容器
docker-compose up
: 这个命令会执行docker-compose.yml
,根据规则所有执行完毕(没有错误的状况下)
如果不想卡在终端一直展现输出,(用-d
)守护进程的模式来启动便可
固然,你如果配置文件不是这个名字,须要用-f
来指定compose
的启动文件
docker-compose down
: 这个会把当前配置文件启动的服务依次干掉,并移除
docker-compose stop [options] services
docker-compose rm
build Build or rebuild services
bundle Generate a Docker bundle from the Compose file
config Validate and view the Compose file
create Create services
down Stop and remove containers, networks, images, and volumes
events Receive real time events from containers
exec Execute a command in a running container
help Get help on a command
images List images
kill Kill containers
logs View output from containers
pause Pause services
port Print the public port for a port binding
ps List containers
pull Pull service images
push Push service images
restart Restart services
rm Remove stopped containers
run Run a one-off command
scale Set number of containers for a service
start Start services
stop Stop services
top Display the running processes
unpause Unpause services
up Create and start containers
version Show the Docker-Compose version information
复制代码
看这些描述就能大致知道作什么的了..能够看到实例的状态,日志,进入容器等等
好比docker-compose ps
(查看服务的状态,运行,中止!)
Name Command State Ports
-----------------------------------------------------------
yapi entrypoint.sh Exit 137
yapi-mongo docker-entrypoint.sh mongod Exit 0
复制代码
好比docker-compose.yml
用到了哪些镜像, docker-compose images
Container Repository Tag Image Id Size
--------------------------------------------------------
yapi crper/yapi latest ae69ea846d69 472 MB
yapi-mongo mongo latest 91a642e82a2a 361 MB
复制代码
好比删除中止的服务,docKer-compose rm
,不带参数会有交互式
By default, anonymous volumes attached to containers will not be removed. You
can override this with `-v`. To list all volumes, use `docker volume ls`.
Any data which is not in a volume will be lost.
Usage: rm [options] [SERVICE...]
Options:
-f, --force Don't ask to confirm removal(强制删除,不交互) -s, --stop Stop the containers, if required, before removing(中止容器,若是须要能够在此以前删除) -v Remove any anonymous volumes attached to containers(删除任何连接到容器的匿名卷) -a, --all Deprecated - no effect.(已经废除,无效) 复制代码
docker-compose
能够把多服务器的编排集中式的声明到一个配置文件,而免去了咱们传入大量的参数到启动命令行;
管理也是很是方便,能够理解为队列管理,能够统一性的处理.大大提升了维护的效率
因此,熟练的使用compose
和能本身封装docker
容器,会让咱们的开发更好的维护,
无论是线上仍是线下,容器对于多环境的处理是很赞的;
好比内部服务器的各类服务,测试环境,开发环境之间的信息隔离;
有不对之处请留言,会及时修正..谢谢阅读