docker妙用 篇三:docker compose是个什么东东,它和docker到底有什么区别
提示:本篇文章约4395字符,阅读大约需要5分钟。
写在前面
“docker妙用”专栏发布两期了,热度还不错,在此冰薇要感谢大家的支持。本来docker理论性教程写到本期就要结束了,因为我以为这些教程并不能解决值友们的实际需求,但没想到大家支持度这么高,而且有值友在评论区又提出了一些新的需求。
因此,docker理论性教程预计将会增加两期,具体内容各位值友也可以在评论区提需求,我会尽可能解答,比较值得一写的问题,我会单独出一篇文章来解决。不过受限于个人水平,难免会出现疏漏,敬请各位批评指正。
在正文开始之前,当然要先推荐一下我们的春日好物——对Docker Compose支持最好的品牌nas——威联通:
威联通TS-464C
推荐指数:☆☆☆☆;
京东入手价格:3149元;
新手推荐指数:☆☆☆
盘位数:4个3.5寸硬盘位+2个M.2 2280 硬盘位,另可扩展4个3.5寸硬盘;
发布时间:2022年;
评价:该款nas适合老玩家入手,可以体验功能完整且强大的威联通系统,支持docker、HDMI输出、虚拟机、qtier存储和快照等非常实用的nas功能。但非常可惜的是,该款nas在去年11月份进行了改款,内存改为板载双4G,处理器也换成了N5095,扩展性大幅下降。
另外最近威联通还发布了基于十二代桌面级CPU打造的TVS-hx74系列,感兴趣的值友可以看看我的云评测,链接奉上,这里就不在赘述了。
引言
Docker Compose是个什么东东
Docker Compose是一个使用Compose文件格式定义的Docker上运行多容器应用程序的工具(Docker Compose is a tool for running multi-container applications on Docker defined using the Compose file format)。Compose可以通过建立一个YAML格式的文件,建立一组相关联的应用容器,这些应用容器合称为一个项目。
YAML文件简单解析
YAML是一种数据序列化语言,通常用来编写配置文件,文件后缀为.yml或.yaml。在我看来,YAML最好用的地方在于利用空格和缩进,表示各类层级关系,很容易看明白各个项目的对应关系,所以常常被用来作为各种软件的配置文件使用,也可以作为文件大纲等内容使用。
Docker Compose有什么用
简单来说,Docker Compose就是用来部署多个相互配合的容器来完成某项任务,这几个容器可以在隔离环境中一起运行。比如之前站内大佬Stark-C发过一篇威联通部署Docker Compose的文章,文中给出的示例就是利用Docker Compose部署包含三个容器的组合,来满足搭建家庭影音系统的需要,感兴趣的值友可以拿来看看。
不过在这里要纠正一点,Docker Compose可以部署在Linux、MacOS和Windows上,所以并非威联通独占功能。但是品牌nas中,可以在图形化界面部署Docker Compose的,确实就威联通独一份。
Docker Compose通用安装教程
文章在前面提到过Docker Compose适用于Linux、MacOS和Windows,也就意味着几乎覆盖了所有的docker可以安装的平台,这里介绍一下各个平台的安装流程。
MacOS和Windows
Docker Compose包含在这两个平台的桌面安装包中,所以无需特别安装即可直接使用。
Linux
这里重点说一下Linux安装Docker Compose的教程。该教程基本通用于所有基于Linux开发的nas系统。
第一步,使用root账户连接到服务器;
sudo -i
第二步,从GitHub上拉取Docker compose。
第三步,赋予可执行权利;
chmod +x /usr/local/bin/docker-compose
第四步,检测是否安装成功。
root@testdsm:~# docker-compose versiondocker-compose version 1.28.5, build 24fb474e docker-py version: 4.4.4CPython version: 3.7.10OpenSSL version: OpenSSL 1.1.0l 10 Sep 2019
实战部署
示例
先看一个Docker Compose部署reader的示例,然后我们再来对其格式进行解析:
第一步:获取系统临时root账户;
第二步:打开docker compose文件所在文件夹;
第三步:执行该文件;
docker-compose -f docker-compose.yml up -d
第四步:验证,部署成功;
附:docker compose模板:
文件格式解析
其实从上述Docker Compose配置文件可以看出来,其配置形式和我们使用docker run命令部署docker有很多共同之处。
由上图的层级可以看出,docker compose配置文件所需的两个关键部分是,version和services。
version指的是指定compose对应的文件版本,根据docker官方文档,其与docker版本对应如下:
compose | docker |
---|---|
3.8 | 19.03.0+ |
3.7 | 18.06.0+ |
3.6 | 18.02.0+ |
…… | …… |
2.0 | 1.10.0+ |
虽然compose版本3删除了多个选项,但是在我们常用的docker容器中,基本用不到这些参数,所以为了保证最佳兼容性,除非有特殊要求,一般默认我们的version编辑时指定版本为“3.x”。
services的编写是重中之重,这里仅介绍常用参数,其余各位可以参考docker compose的官方文档。
services下的二级标签:如上文所示的reader。为服务名称,用户可以随意自定义;
image对应docker run命令结尾的镜像名称,即指定镜像以及拉取的版本;
container_name为自定义容器名称,类似于—name命令;
depends_on为容器依赖,主要是为了解决容器先后启动的问题,即必须设置容器依赖服务先启动,然后才能启动容器。
environment类似于-e命令,主要内容为设置镜像变量,同时在与env_file指令冲突时,覆盖掉env_file
ports类似于-p命令,用于映射端口。
volumes类似于-v命令,用于挂载数据卷;
networks与—net参数相似,以下为示例:
network_mode: "bridge"
network_mode: "host"
network_mode: "none"
network_mode: "service:[service name]"
network_mode: "container:[container name/id]"
其余标签还有如下的很多,这里仅列举几例,供大家参考:
domainname: foo.com
hostname: foo #host名称
ipc: host
mac_address: 02:42:ac:11:65:43#容器Mac地址
privileged: true #特权模式
restart: always #重新启动模式设置
如何编写.yml文件
群晖可以直接安装文本编辑器,在线编辑docker-compose配置文件;
威联通可以直接使用自带的Docker Compose配置文件编辑器进行编辑,还可以进行YAML文件验证。
以下为Windows平台和Mac平台可使用的编辑器,一般自带的文本编辑就够用了:
Apple TextEdit
Notepad2
Microsoft Notepad
Microsoft Write
Microsoft Wordpad
总结
受限于文章篇幅,docker compose还有许多强大的功能本文没有介绍到。之后会穿插进其他docker教程中(比如docker容器更新教程),以做补充。些许疏漏之处,还请各位在评论区批评指正。
docker compose的用法非常多,本文只是为了给各位起到一个抛砖引玉的作用。具体如何发挥其最大效能,还需要各位再进行进一步的发掘。
这就是本期的全部内容了,如果这篇文章对您有帮助的话,欢迎您在评论区多多讨论,也欢迎关注、点赞、打赏一键三连,您的支持对我非常重要。
我是冥冰薇,点个关注不迷路,我们下期再见。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
爱折腾的TAO
校验提示文案
molezhang
校验提示文案
值友3349562808
校验提示文案
思水忆晶
校验提示文案
炫彩丶
校验提示文案
ifree
校验提示文案
sjrnf
校验提示文案
漫画风
校验提示文案
天天去减肥
校验提示文案
梦太晓
校验提示文案
油盐酱醋锅碗瓢盆
校验提示文案
风随天驿
校验提示文案
风随天驿
校验提示文案
油盐酱醋锅碗瓢盆
校验提示文案
梦太晓
校验提示文案
值友3349562808
校验提示文案
天天去减肥
校验提示文案
漫画风
校验提示文案
sjrnf
校验提示文案
ifree
校验提示文案
炫彩丶
校验提示文案
思水忆晶
校验提示文案
molezhang
校验提示文案
爱折腾的TAO
校验提示文案