本内容来源于@什么值得买APP,观点仅代表作者本人 |作者:冥冰薇

一、引言

本系列首篇不会有具体的docker容器部署,本文旨在教会大家部署docker的几种方法,了解常用的docker命令,有各类nas系统都可以用的方法,也有对某种nas系统针对性教程。俗话说"授人以鱼,不如授之以渔",真正学会部署docker之后就可以不需要照搬教程的docker部署命令,个性化地部署适合自己的docker容器。遇到比较有趣的docker容器也不需要全网翻找教程,读懂docker hub或者GitHub上作者的部署命令,你也可以的!

本系列之后的内容将会是一些实用的docker容器部署,一般会覆盖本文提到的各类nas系统的部署教程。因为本期已经把docker容器部署将的足够明白,因此之后的文章只会列出每个容器所需要的参数,文章的主要部分会侧重于容器的实际应用。当然也欢迎值友在评论区补充自己用过的实用docker容器,我也会视情况添加到这个系列教程中。

二、关于docker2.1 什么是docker

简单来说,docker是一种虚拟化技术,属于操作系统层面的虚拟化。它由dotCloud公司开发,并于2013年3月开源。docker在开源后,引起了异常火爆的关注度,也吸引力大批的开发者和使用者,这其中就不乏我们这类普通用户。而docker容器环境也成了现在nas系统出厂必备的选项之一,部分路由器也开始引入docker环境来制造差异化,从而吸引用户购买。

2.2 为什么是docker

不同于传统虚拟化技术,docker不需要虚拟出一套完整的硬件,也不需要在其上再安装操作系统,这意味着部署docker极大地节约了系统资源。最直观的表现方式就是,我们可以看到,同样是虚拟化技术,如果你在群晖DS920 上面部署虚拟机,大概你最多能部署两三个,但是docker你可以部署好多。

其次,docker启动镜像的速度要远远快于虚拟机启动,因为docker是直接基于宿主系统内核运行的,因此无需等待开启操作系统的时间,即可进入docker容器。

docker部署注意事项(如何优雅地食用docker教程)(1)

docker运行环境示意

最后,虚拟化技术给予了docker标准化的运行环境,因此docker可以在各个支持docker的系统里面轻松迁移;与此相反的是,你很难把ESXI上部署的虚拟机直接迁移到PVE上。

三、通用型部署——ssh命令行部署兼docker命令解析

先来看一段portainer-ce中文版部署的命令

docker run -d --restart=always --name="portainer" -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock 6053537/portainer-ce

docker run代表新建并启动一个容器;

-d参数代表使docker容器在后台运行,并会对容器生成一个唯一id,基本为固定参数,部署的时候加上就行;

--restart=always对应容器自动重新启动,作用是使你在开启nas后,docker程序自动运行;

--name="portainer"代表将该容器命名为“portainer”,这一步就可以自定义了;

-p 9000:9000代表把本地所有地址的9000端口映射到容器9000端口,冒号前的9000可以修改成任意本地不冲突的端口号,冒号之后的端口号一般为容器固定的端口号,不能修改。

拓展:1.映射所有地址的9000端口意味着你从nas任意一个IP地址 9000端口号都可以访问到该地址;

2.如果要映射指定地址(以localhost为例),参数为-p 127.0.0.1:9000:9000

3.如果需要指定udp端口,参数为-p 127.0.0.1:9000:9000/udp

-v 代表挂载主机的一个文件夹或者文件到docker容器里面;

如果还要额外加入特定参数,需要使用-e命令,比如为reader添加管理员密码,可以使用命令

-e "READER_APP_SECUREKEY=管理密码"

6053537/portainer-ce代表指定镜像名,通常其后还可以加参数。如果加:latest代表拉取最新版本,:x.x代表拉取特定版本的镜像。

总结来说,docker容器部署分为几部分,开头docker run -d为新建并启动容器,然后为容器取一个名字,再使用-p命令使得可以从外部访问容器,-v命令为容器添加存储,-e命令可以为容器添加额外参数,然后最重要的一点就是最后必须指定新建的这个容器对应那个特定的镜像。

四、实操3.1 通用型部署——Portainer部署

注:本篇为简易部署教程,不含Portainer初始化教程,之后会出初始化教程和进阶教程。

第一步,点击创建容器(仍然以Portainer为例);

docker部署注意事项(如何优雅地食用docker教程)(2)

创建容器页面

第二步:映射存储,对应-v命令;

docker部署注意事项(如何优雅地食用docker教程)(3)

映射存储

第三步:添加环境变量,对应-e命令;

docker部署注意事项(如何优雅地食用docker教程)(4)

添加环境变量

第四步:添加重启策略,选择总是重启,对应--restart=always

docker部署注意事项(如何优雅地食用docker教程)(5)

设置重启策略

这样部署portainer需要的所有容器命令都已经设置完成;

第五步:点击部署即可。

docker部署注意事项(如何优雅地食用docker教程)(6)

部署容器

3.2 群晖图形界面部署(DSM7.1)

第一步:先在群晖套件中心安装docker套件,安装过程中会自动创建docker共享文件夹;

docker部署注意事项(如何优雅地食用docker教程)(7)

安装docker套件

第二步:点击注册表,在搜索框输入想要安装的docker容器的关键词(以reader部署为例),并右键点击下载此映像;

docker部署注意事项(如何优雅地食用docker教程)(8)

搜索注册表

第三步:选择下载映像的版本号,无特殊需求一般选择latest;

docker部署注意事项(如何优雅地食用docker教程)(9)

确认版本号

第四步:打开映像,选中要安装的docker镜像,点击启动;

docker部署注意事项(如何优雅地食用docker教程)(10)

群晖启动映像

第五步:默认使用bridge(桥接)网络;

docker部署注意事项(如何优雅地食用docker教程)(11)

默认使用桥接网络

第六步:常规设置中启用自动重新启动对应命令--restart=always;

docker部署注意事项(如何优雅地食用docker教程)(12)

启用自动重新启动

第七步:高级设置,环境选项对应-e命令;

docker部署注意事项(如何优雅地食用docker教程)(13)

群晖新增环境变量

第九步:端口设置对应-p命令;

docker部署注意事项(如何优雅地食用docker教程)(14)

群晖映射端口号

第十步:存储空间设置对应-v命令;

docker部署注意事项(如何优雅地食用docker教程)(15)

群晖映射文件夹

第十一步:点击完成即完成创建容器的过程;

注:群晖计划任务部署docker方式详见“每天一个群晖小tip”系列第十二篇。

3.3威联通图形界面部署

第一步:先在App Store安装container;

docker部署注意事项(如何优雅地食用docker教程)(16)

威联通安装container

第二步,点击开始,系统会自动创建container共享文件夹;

docker部署注意事项(如何优雅地食用docker教程)(17)

点击开始

第三步,点击创建并拉取镜像(威联通图形界面不支持映射单个文件,因此以reader部署为例);

docker部署注意事项(如何优雅地食用docker教程)(18)

点击安装

第四步:选择镜像版本号;

docker部署注意事项(如何优雅地食用docker教程)(19)

选择镜像版本号

第五步,容器基础设置;

docker部署注意事项(如何优雅地食用docker教程)(20)

容器基础设置

第六步,高级设置;

docker部署注意事项(如何优雅地食用docker教程)(21)

添加环境变量

docker部署注意事项(如何优雅地食用docker教程)(22)

添加端口映射

docker部署注意事项(如何优雅地食用docker教程)(23)

添加存储映射

第七步,点击创建即可。

四、总结

全网各机型docker部署教程已经很多了,但大部分是特定的容器部署教程,博主会告诉你命令是什么,照抄就行。但很多情况下,容器部署是需要根据自己需求设置一些特殊环境变量、文件映射等等,本文的目的就是讲清楚docker部署命令和图形化界面一一对应的关系。学会了这些,你完全可以抛开所有教程,直接访问作者的docker hub网页或者GitHub主页,作者一般都会详细描述容器所需要的各类参数,这时候你就可以利用这些信息独立部署容器,并且可以灵活选用命令行部署或者图形化界面部署。

这就是本期的全部内容了,如果这篇文章对您有帮助的话,欢迎您在评论区多多讨论,也欢迎关注、点赞、打赏一键三连,您的支持对我非常重要。我是冥冰薇,我们下期再见,关注我不迷路哦。

docker部署注意事项(如何优雅地食用docker教程)(24)

点个关注再走吧

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

docker部署注意事项(如何优雅地食用docker教程)(25)

,