前言
有很多小伙伴听说过了Docker,也都用过,其实群晖Container Manager就是基于Docker容器的,群晖只是把做成了一个套件,方便普通用户运行、管理Docker容器,而不需要复杂专业的Docker知识。今天来简单聊聊Docker,读了这篇文章后,一定会对群晖Container Manager有更深的了解和全新的认识
Docker是什么
Docker,在开发人员中耳熟能详,它是一种开源的应用容器引擎,它可以将你的程序和依赖环境一起打包存放,构成一个全功能、独立的个体,并运行在系统上,每个体之间互不影响,也就是常说的docker容器

可能有人会问Docker和虚拟机有什么区别?Docker是直接运行在宿主机平台的操作系统层上,并与系统内核直接对话。所以它比虚拟机更轻量级,启动速度也更快,但对于隔离性要求不如虚拟机严格,而虚拟机则是在物理硬件和虚拟的操作系统之间添加了一层虚拟化的平台,所以虚拟机可以运行完全独立的操作系统,但相对的,其复杂性、资源消耗和启动时间都会更大
Docker能干什么
讲了Docker是什么之后,接下来看看它能做什么。Docker可以帮你把想要运行的程序和所有需要的环境打包成一个行李箱,就是常说的Docker容器。可以把这个箱子带到任何地方,无论是哪台电脑还是云端,只要打开这个行李箱,就可以直接运行了,这就是Docker的魔力,"Build once, run anywhere",一次打包,随处运行!
群晖Container Manager和Docker的关系
知道了Docker的概念,再来理解Container Manager就比较简单了,简单来说,群晖的Container Manager就像是Docker的管理者,它可以帮你轻松的查看、管理的所有Docker容器,而不需要去记很多复杂的指令
群晖命令行操作Docker
通过上面的知识知道了群晖Container Manager操作的其实就是Docker,接下来演示下如何在群晖上通过命令行操作Docker
首先需要在控制中心->终端机和SNMP下的终端机选项卡中打开SSH功能,端口保持22不变,点击应用

在终端中输入ssh 群晖用户名@群晖ip地址,然后输入密码进行登录(如果端口不是22需要使用 -p 来指定端口)

接下来需要登录root用户才能执行docker相关命令,输入sudo -i命令后,再输入管理员密码,就能切换为root用户了

现在就可以指向Docker相关的命令了,例如docker ps,可以看到当前的所有容器

docker images命令可以列出所有镜像

经常看到类似docker run -d --restart=always -p 12345:12345 -v /opt/FileCodeBox/:/app/data --name filecodebox lanol/filecodebox:beta这样的命令
简单介绍下这行命令,docker run:是Docker启动新容器的基本命令,-d: 表示以"Detached"模式运行容器,也就是运行在后台,--name filecodebox:这个选项为容器指定了名字,即filecodebox
也就是说执行这条命令后,会以后台模式创建运行一个名为filecodebox的新容器,使用lanol/filecodebox:beta镜像,如果容器停止,Docker会自动尝试重启它,容器会使用主机的12345端口,并将主机的/opt/FileCodeBox/目录挂载为容器的/app/data目录
细心的小伙伴可以发现这和Container Manager中运行容器之前设置参数一样,不过使用docker命令来操作docker更为快捷、简单。执行成功后,使用docker ps看到的容器状态和Container Manager运行的容器的状态是一致的

更多的docker命令可以参考https://blog.csdn.net/BThinker/article/details/123355362这篇文章,使用docker命令可以方便的创建和管理docker容器,而省去单独设置映射文件等简单重复的操作
Docker-compose又是什么
你可能想,Docker已经很方便了,还有什么呢?答案是:Docker-compose。Docker Compose是一个Docker官方编排的工具,主要用于定义和管理多个Docker容器,在docker-compose.yml中编排好指令,只需通过一个命令,就可以创建并启动所有的服务
如果只是单单的启动一个容器,可能没有什么感觉,但要同时启动多个容器,并且它们之间有依赖关系,Docker-compose的优势就体现出来了,比如下面的docker-compose.yml文件,分别要启动web-server、imageproxy-server、backend-server等服务

启动单个容器也可以使用docker-compose,比如前面的docker命令,改造为docker-compose.yml文件如下

运行也很简单,只需在docker-compose.yml文件的同级目录输入docker-compose up -d命令,就能在后台运行容器了,更多的命令可以查看https://www.jianshu.com/p/c51d92a9f91d这篇文章
后记
通过这篇文章,相信大家对docker容器有了一个简单的认识。docker技术被广泛应用于软件开发上,对于普通用户,学会简单的使用就能满足日常需求了,如果还是觉得有点复杂,那么强大且友好的群晖Container Manager将会是你的理想选择!