OSC 第 138 期高手问答 — Docker 容器实践

局长 发布于 2016/12/22 15:15
阅读 6K+
收藏 26

OSCHINA 本期高手问答( 2016 年 12 月 23 日 — 12 月 29 日)我们请来了@廖煜老师@晏东老师为大家解答关于 Docker 方面的问题。

廖煜,电子科技大学计算机硕士,Ghostcloud 联合创始人。从事虚拟化技术研究十多年,拥有丰富的虚拟化、云计算及存储技术经验。国内首批研究 Docker 容器技术的专家,Docker 开源项目贡献者。先后供职于 Intel、Symantec、EMC 等 IT 公司。从 2006 年开始,在 Intel MCP 实验室研究虚拟化技术。在 Symantec 期间,作为核心成员研发了 Symantec 首款虚拟化产品 VxVI;并负责研发 Symantec 首款存储一体机 N8000 系列。在 EMC 期间,主要从事 VNX 系列产品的研发测试工作。

晏东,Ghostcloud 创始人,超过 20 年编程经验,熟悉多种编程语言,全栈工程师。国内早一批 Go 语言使用者,Docker 项目 Committer,Beego 项目 Committer,阿里云社区 Docker 技术专家。曾任索贝数码分布式文件系统及高可用中间件资深架构师,曾任 Symantec/Veritas 技术负责人,拥有超过 12 年分布式系统行业经验。

在 2013 年 3 月,Docker 项目正式开源。短短的三年中,Docker 已经迅速普及开来,云计算、大数据、互联网等相关 IT 技术公司纷纷开始拥抱 Docker。在硅谷,有 200 多家 Docker 相关的创业公司。Google、Microsoft、AWS、IBM 等大型技术公司都已经加入 Docker 生态圈,开始使用 Docker,并为 Docker 社区共享。OpenStack、Hadoop 等云计算、大数据框架也开始向 Docker 迁移。

在国内,从 Docker 诞生之日起,各大技术公司和极客们就开始紧密关注这项技术。从 2014 年下半年开始,陆续有公司开始把现有系统迁移到 Docker 平台。BAT、华为、新浪、京东都有 Docker 相关产品上线。Docker 的普及愈演愈烈,大有掀起第二次云计算革命之势。

为了鼓励踊跃提问,@博文视点 会在问答结束后从提问者中抽取 5 名幸运会员赠予《Docker容器实战:原理、架构与应用》一书。

购买链接:https://item.jd.com/12072458.html

OSChina 高手问答一贯的风格,不欢迎任何与主题无关的讨论和喷子。

下面欢迎大家就 Docker 方面问题向@廖煜老师@晏东老师 提问,请直接回帖提问。

加载中
0
博文视点
博文视点
OSC 第 138 期高手问答 -- Docker 容器实践


@Ryan-瑞恩  @p2ng  @西南茂  @萝卜K  @灵魂架构师  


恭喜以上五位网友或获得《Docker容器实战:原理、架构与应用》图书一本 


请私信 @博文视点   告知快递信息(格式:姓名+电话+地址)! 


灵魂架构师
灵魂架构师
回复@博文视点 : 已经发给你啦
0
Ryan-瑞恩
Ryan-瑞恩
@廖煜老师 :Docker 由于在资源的隔离方面,主要是与namespace 和 cgroup 打交道,进而系统的安全性,主要依赖于容器中的应用,,,,,我想问的是,1. 如何做好容器的安全性管理?2. 跨主机容器间通信如何来管理(比如:ip 分配,划vlan 等)?3. 对于 k8s 我了解的比较少,可以说没有接触过,对于容器的监控和集群管理,该如何来做?谢谢老师。
Ryan-瑞恩
Ryan-瑞恩
回复 @廖煜老师 : 我的理解是:如果不借助类似 k8s 这样的工具,那就需要自己写脚本来管理。。。。。工作量对于运维来说,还是挺大的。不知道,老师你们是不是有什么好的方案和方式?
Ryan-瑞恩
Ryan-瑞恩
回复 @廖煜老师 : 一般的做法都是dockerfile 启动时,映射出端口,和挂载数据目录。。。。这样的话,在很多容器的情况下,工作量是非常大的。请问老师,你们是如何进行批量(跨主机)来管理这些容器的?
廖煜老师
廖煜老师
容器跨主机通信可以使用ip加端口的方式。此外还有swarmkit、calico、ovs等方式管理网络。
廖煜老师
廖煜老师
关于安全性问题,主要是通过导出端口的方式进行控制。只有等容器中的端口被导出到主机上的对应端口,外部才能访问。所以在导出端口时,不要导出不提供服务的端口。 1.推荐启动容器时,使用-p显性导出端口,不要使用-P导出镜像中的所有端口。 2.启动容器时,当需要挂载卷时,不要把宿主机的/,/root等重要目录挂载到容器中。
Ryan-瑞恩
Ryan-瑞恩
回复 @Manlge : 好的。。谢谢。。docker 更新迭代真快。
下一页
0
巴拉迪维
巴拉迪维
Docker是个好东西,大家有问题赶紧来问!
0
善良超哥哥
老师,swarm 和 k8s 哪个更主流?
廖煜老师
廖煜老师
swarm是Docker自带的集群管理工具。k8s是google研发的容器管理系统。目前k8s比较流行。
0
p2ng
p2ng

@廖煜老师 :

同事在弄利用docker生成系统镜像,然后被jenkins下发打包任务。

1.场景是移动开发相关的,确实需要大量的打包次数。假如是web开发场景,倒觉得使用docker反而多此一举的样子(觉得只限在升级到生产环境时有小许作用。而像一些环境的东西(jdk版本,maven版本,等等...),基本较长时间不会变的)这么理解有错误吗?

2.利用docker来生成环境(安装hadoop生态圈应用、MySQL等),这些数据是保存在哪里等?镜像内部吗?还是又有一个共享存储空间呢?求科普

 谢谢老师。

廖煜老师
廖煜老师
2. 使用Dockerfile生成镜像以后,你所添加的主程序、依赖包等都保存在镜像中。可以理解镜像就是一个文件,包含了你放进去的所有东西。
廖煜老师
廖煜老师
1. 在web开发过程中,也存在持续更新的情况。比如,开发人员引进了新的sdk或者依赖包,运维人员会花费很多精力在生产环境准备这些,因为他不知道开发具体做了哪些更改。改成以镜像的方式提交产品以后,开发提交镜像给运维,运维直接在生产环境下载镜像,启动容器。就能晚上产品更新。时间从以前的几个小时可以缩减到几分钟甚至几十秒。这就是现在提出的devops概念。
Raphael_goh
Raphael_goh
如果只使用docker的虚拟化隔离,的确没有任何卵用,如果没有成熟的编排工具和管理平台,不如不用docker
Raphael_goh
Raphael_goh
你只看到了docker的隔离环境、依赖,但是没有看到docker的水平扩展、分发、动态编排等等功能,况且docker镜像自带版本管理,随时可以回退到上个版本,等等功能就是最大的优势
0
c
caqis
@廖煜老师 :windows10自带的 linux shell 如何安装docker?
廖煜老师
廖煜老师
win10下一般是在图形见面安装docker,可以参考网上的一篇教程。 http://www.cnblogs.com/linjj/p/5606687.html
Feng_Yu
Feng_Yu
装不了的,目前win10自带的bash连网络连接都一堆bug
0
采蘑菇的大叔
采蘑菇的大叔

@廖煜老师 : 您好,能不能用很浅显的语言解释下什么是docker?docker的一个运行原理是什么?

docker如果是一个可以打包镜像的软件,那么云平台卖的docker又是怎么回事?

我是一个docker初级接触者,整天听别人谈论docker,但是这几个问题还是一只不理解~

采蘑菇的大叔
采蘑菇的大叔
回复 @廖煜老师 : 哦 懂了,谢谢老师了。
廖煜老师
廖煜老师
回复 @采蘑菇的大叔 : 目前的云是提供虚拟主机,使用的隔离技术有kvm、xen、openstack等。容器云是提供容器,使用的隔离技术是容器。
采蘑菇的大叔
采蘑菇的大叔
回复 @廖煜老师 : 谢谢,那现在很火的容器云和docker有什么关系呢?
廖煜老师
廖煜老师
Docker镜像可以理解为一个盒子,里面包含了主程序、依赖包、环境变量等。Docker镜像帮助我们解决程序迁移的问题,当我们在不同平台上下载同一个镜像以后,主程序都可以跑起来。Docker本身可以运行在各种平台,比如Linux、CentOS、Fedora、Ubuntu等。Docker帮我们解决的底层操作系统的异构性问题,在不同平台跑同一个镜像,可以到达同样的效果。
采蘑菇的大叔
采蘑菇的大叔
@Feng_Yu 回复@Feng_Yu : 查了很多了,但是一直都没有理解到位~还是希望老师能用通俗的语言解释一下
下一页
0
xausky
xausky
@廖煜老师 :请问现在在生产环境Docker容器内运行应用可不可以使用Root权限,还是都应该建一个低权限用户再运行进程。
廖煜老师
廖煜老师
在容器内部可以使用root权限。此时应该注意启动容器时,不要把宿主机上的重要目录挂载到容器中。
Feng_Yu
Feng_Yu
docker官方的最佳实践是使用gksu这个小巧的工具实现低权限账户运行。你可以去看看官方的最佳实践文档,以及官方维护的docker image
0
jamesmine
jamesmine

@廖煜老师 :docker对于web开发有啥帮助?

廖煜老师
廖煜老师
Docker可以实现目前提倡的devops。我们把传统的软件提交变成Docker镜像提交方式。开发人员交个测试人员的不仅仅是一个软件包,而是一个可以直接运行的镜像。这样测试人员不需要花时间搭建自己的测试环境,下载镜像以后,直接启动,就可以达到和开发一样的效果。这样为测试人员节约了时间,提高了整个软件开发效率。
Feng_Yu
Feng_Yu
讲真,对开发没啥帮助。对敏捷交付帮助很大
0
xpbob
xpbob
@廖煜老师 :我看了一些docker的书,感觉他的优势就是快速恢复系统环境和保持系统环境。我的理解对吗
廖煜老师
廖煜老师
目前提倡的微服务化、devops、持续集成和持续发布等概念,使用容器技术是最容易实现的。我理解容器技术可以节约整个软件的开发时间。
返回顶部
顶部