(建议收藏)如何优雅地食用docker教程——一文解决docker部署

2023-02-22 15:41:06 204点赞 1663收藏 59评论

一、引言

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

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

二、关于docker

2.1 什么是docker

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

2.2 为什么是docker

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

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

docker运行环境示意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为例);

创建容器页面创建容器页面

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

映射存储映射存储

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

添加环境变量添加环境变量


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

设置重启策略设置重启策略

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

第五步:点击部署即可。

部署容器部署容器


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


群晖(Synology)DS923+双核心4盘位NAS网络存储服务器数据备份文件共享4900元京东去购买


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


安装docker套件安装docker套件


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


搜索注册表搜索注册表

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


确认版本号确认版本号


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


群晖启动映像群晖启动映像


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

默认使用桥接网络默认使用桥接网络


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

启用自动重新启动启用自动重新启动


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


群晖新增环境变量群晖新增环境变量


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

群晖映射端口号群晖映射端口号


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

群晖映射文件夹群晖映射文件夹


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

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

3.3 威联通图形界面部署


威联通(QNAP)TS-464C4盘位8G内存四核心处理器网络存储服务器内置双M.2插槽NAS私有云(453Dmini升级版)3299元家用4盘位旗舰款,四核心处理器,双2.5GbE口,NVMe双M.2插槽。京东去购买


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

威联通安装container威联通安装container

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

点击开始点击开始

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

点击安装点击安装

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

选择镜像版本号选择镜像版本号

第五步,容器基础设置;

容器基础设置容器基础设置

第六步,高级设置;

添加环境变量添加环境变量

添加端口映射添加端口映射

添加存储映射添加存储映射

第七步,点击创建即可。

四、总结

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


这就是本期的全部内容了,如果这篇文章对您有帮助的话,欢迎您在评论区多多讨论,也欢迎关注、点赞、打赏一键三连,您的支持对我非常重要(建议收藏)如何优雅地食用docker教程——一文解决docker部署 。

我是冥冰薇,我们下期再见,关注我不迷路哦。

点个关注再走吧点个关注再走吧


   

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

展开 收起
59评论

  • 精彩
  • 最新
  • 这个好,就想学点这个。。小白一个摸半天,还不知道为什么有时候布署容器成功,有时候不成功

    校验提示文案

    提交
    有问题随时在评论区问就好 [高兴] [高兴]

    校验提示文案

    提交
    收起所有回复
  • LXC效率更高?

    校验提示文案

    提交
    这里主要是讲一下docker与传统虚拟机相比运行效率更高,而且在应用广泛性上,docker是远远高于LXC的。至于这两者谁效率更高的问题,我还真没研究过 [傻笑]

    校验提示文案

    提交
    收起所有回复
  • 这东西有没有论坛啥的?***

    校验提示文案

    提交
    国产nas一般都有自己的中文论坛,群晖威联通的话有第三方中文论坛

    校验提示文案

    提交
    谢谢,威联通进去直接是官方英文的,第三方比较有名的关键词啥?

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 支持一波,

    校验提示文案

    提交
    哈哈哈哈哈哈哈感谢 [高兴]

    校验提示文案

    提交
    收起所有回复
  • 大多数时候照搬教程的复制粘贴,经常遇到路径不对而失败 [傻笑]

    校验提示文案

    提交
    可以按照参数稍微调整一下路径就行,挺简单的,多实践几次就会了 [高兴]

    校验提示文案

    提交
    收起所有回复
  • 能不能简单点

    校验提示文案

    提交
    这篇文章已经基本讲清楚了常用的docker命令和图形化界面部署对应的关系,一般教程可能只会给你docker部署的命令,你可以对照着本篇文章就可以找到每一条命令对应的是图形界面的哪一部分,我觉得讲的已经非常清楚了

    校验提示文案

    提交
    收起所有回复
  • docker并不是虚拟化,只是应用程序的封装而已,概念要搞清楚。

    校验提示文案

    提交
    虽然docker里面的容器可以类比成安装在电脑里面的应用程序,但是电脑上装的应用程序可以相互隔离吗?docker是和传统虚拟机技术不同,但是它本身也属于操作系统层虚拟化好吧

    校验提示文案

    提交
    所以我说了是封装,隔离也不够彻底,容器的安全始终是个问题。应用就是应用,虚拟化是拟态。你可以说玩游戏的模拟器是虚拟化,这个容器绝对不能称之为虚拟化。不能因为docker和虚拟化一样是无状态利于迁移以及提高利用率为目的,就认为容器是虚拟化,这是本质的认知错误。

    校验提示文案

    提交
    还有3条回复
    收起所有回复
  • 怎么把一台机器上的容器复制到另外一台机器上呢?

    校验提示文案

    提交
    你是什么机器迁移到什么机器呢

    校验提示文案

    提交
    都是虚拟机里面的openwrt

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 话说,NAS上可以装吗?个人笔记本可以装吗

    校验提示文案

    提交
    都可以,docker基本是所有平台通用的,Mac也能装哦 [高兴]

    校验提示文案

    提交
    回头好好研究一下

    校验提示文案

    提交
    收起所有回复
  • 想学

    校验提示文案

    提交
    那就努力迈出第一步,动手实践一下 [高兴]

    校验提示文案

    提交
    收起所有回复
  • 请教下 威联通docker可以转到群晖吗

    校验提示文案

    提交
    可以,docker数据是通用多

    校验提示文案

    提交
    收起所有回复
  • 威联通使用docker部署的应用怎么直接访问和操控nas里面的文件夹呀?

    校验提示文案

    提交
    -v命令映射文件夹

    校验提示文案

    提交
    收起所有回复
  • 讲讲arm的处理器如何安装docker

    校验提示文案

    提交
    你用的是哪个牌子的nas

    校验提示文案

    提交
    群晖啊,但是arm处理器的,不带docker

    校验提示文案

    提交
    还有3条回复
    收起所有回复
  • 我也是这样研究的,不过大多数人都是照搬教程复制粘贴

    校验提示文案

    提交
  • 好文,已关注坐等楼主更新 [赞一个]

    校验提示文案

    提交
  • 感谢分享,又学到东西了

    校验提示文案

    提交
  • 关注了。好文。

    校验提示文案

    提交
  • 好复杂的样子…

    校验提示文案

    提交
  • 多了个搞k8s

    校验提示文案

    提交
  • 支持,,

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
1.6K
扫一下,分享更方便,购买更轻松