“码头工人”的Docker进阶之路:从轻装上路到网络、存储和安全

摘要:从2013年Docker的正式发布到如今的广泛应用,Docker的学习和使用变得尤其重要。来自Docker公司的技术专家姚义磊从Docker的网络、存储、安全等多个方面谈了他的看法以及一些学习和使用Docker的建议。

以下为精彩视频内容整理:

 

Docker介绍

“码头工人”的Docker进阶之路:从轻装上路到网络、存储和安全

“没有集装箱,就不会有全球化。”正如集装箱改变现实世界一样,Docker也正在改变IT世界。那Docker究竟有什么魔力能改变IT世界呢?下面从Docker的简介、发展历程、成绩和基本概念等方面了解一下Docker:

1、Docker的简介

Docker不仅仅是一个容器,它更是一个开源的技术平台,如今很多微服务都离不开Docker。Docker让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。如今Docker的生态已经非常的成熟和强大。

2、Docker的发展历程

“码头工人”的Docker进阶之路:从轻装上路到网络、存储和安全

Docker是站在巨人的肩膀上才有了今天的成功,2004年的时候在Solaris里面就开始有容器的概念了。2008年LXC(Linux Containers)发布了第一套完整的Linux容器管理实现方案。2013年的时候dotCloud公司内部创建了Docker项目,随后又将Docker开源,dotCloud公司也因Docker的发展而改名为Docker公司。2016年Docker公司发布了Docker Enterprise Edition(EE)和Docker Community Edition(CE)两个版本。

3、Docker取得的成绩

截止到目前,Docker已经变得非常流行,在整个GitHub上排名非常靠前。从2013年Docker的发布到如今,在全球有超过1400万主机安装了Docker,基于Docker所做的服务也超过了90万个,超过120亿的镜像被pull,而且使用Docker的场景还在不断地增加。作为一个开源项目,Docker的成功离不开Docker爱好者的帮助。

4、Docker的基本概念

1、image(镜像):主要用来构建container的只读模板。包含了container启动所需的所有信息,例如运行的程序和配置、数据等。

2、container(容器): 负责应用程序的运行,以及它们对应的运行环境。是根据images构建,会在顶层创建读写层。

3、Engine(引擎):Docker架构中的运行引擎,同时也是Docker运行的核心模块。它扮演Docker container存储仓库的角色,并且操纵管理容器。

4、repository(仓库):集中存放image的地方

5、Registry(注册服务器):管理repoistory的程序

当了解基本概念之后再去看如下进阶知识:Docker networking、Composing Services Using Compose、Docker Logging、Docker Debugging And Troubleshooting、Docker API、Docker Security等等。另外还有很多Docker的相关资料可以从以下网址获得:

1、Docker documentation:https://docs.docker.com

2、Docker training:https://training.docker.com

3、PWD training:http://training.play-with-docker.com/ 

4、Docker学习路线图:https://yq.aliyun.com/articles/40494 

Docker进阶心得

随着Docker的应用场景越来越多,学习和使用Docker是非常有必要的,那如何才能学习和掌握Docker的使用呢?下面是我对学习和使用Docker的一些心得体会:

1、轻装上阵

对于初学者来说,从最简单的开始学起,例如pulling和pushing。pull一个项目到image,做些变更,打个tag,再push到Dockerhub,这样对初学者来说是非常有帮助的,因为Docker很多基本知识实际上是基于Linux的知识。

2、学习Docker网络

Docker网络是一切基础,大多数Docker操作实际上都跟网络有关的,例如跨主机容器间如何互相访问、如何设计高可用的容器服务、如何提高容器服务的宽带利用率和减小延时、服务如何快速扩容并减小对系统的影响。围绕这些问题不断学习Docker,你将对Docker有更深刻的理解。

3、学习Docker存储

Docker的存储很难也很重要,当你使用Docker的时候将会面临aufs、devicemapper 和 overlay2该如何选择、top writable layer具体是什么、镜像和容器区别在哪里、镜像Cope on write怎么弄、共享存储如何设计等一系列问题。围绕这些问题,从graph drivers、volumes和registry三个方面去学习Docker存储,你会取得一个更大的进阶。

4、学习Docker安全

“码头工人”的Docker进阶之路:从轻装上路到网络、存储和安全

很多人都认为容器跟虚拟机比起来不安全、Docker安全是个大问题。这其中有基于Linux系统的安全、Docker本身的安全和镜像的安全。其实只要在你做Docker设计的时候,从这些安全方面进行考虑,是可以使得Docker更安全的。Docker公司内部也有一些建议,例如对镜像进行签名、扫描,对外不要暴露太多的端口,主机不要暴露远程开放等,对客户端和服务端之间的通信进行加密等等。

“码头工人”的Docker进阶之路:从轻装上路到网络、存储和安全

从技术角度来说,当你掌握以上内容之后还是不够的,你会发现更大的话题,例如如何创建高效的镜像、监视整个系统、在CI/CD和serverless中利用Docker等等。有句话叫做:Learning is better when it's social。Docker本身是一个开源技术,因此对大家来说,如果想技术进阶,最好是加入这个社区,对社区进行贡献有以下四种方式:

1、加入例如Docker community的slack channel或者阿里云的云栖社区等一些其它论坛;

2、参加一些Docker活动。例如Dockercon活动,这个活动汇聚了世界上很多对Docker有着丰富经验的人,他们经常会在活动中发布自己的观点和做出自己的贡献。

3、参加本地的meet up。国内很多公司都会不定时的组织meet up, 如果有机会跟有经验的大年探讨问题,这也是一个非常好的机会。

4、关注Docker公司的公众号号:Docker公司。里面会经常发布一些最新的Docker信息动态。

在今年Docker公司也推出了一个Docker认证,具体可在Docker公司官网查看,通过这样的认证对技术的进阶也是一种很好的见证。


本文由云栖社区志愿者小组黄小凡整理,毛鹤审校。编辑:郭雪梅。

上一篇:Dropout技术为什么能防止过拟合?


下一篇:为啥你总是抢不到语音红包?