针对Docker的特性,对于开发人员来说需要注意哪些方面能让产品能在container中很好的运行?


刚刚接触Docker,有个疑问是可不可认为程序在container中运行时的环境和直接运行时(资源不做限制的前提下)是一样的?

如果有差别,差别在哪些方面?

在设计产品架构与开发的过程中,需要注意哪些问题?
已邀请:

icebolt - Docker爱好者暗黑

赞同来自: DockOne paperage 田浩浩


程序运行在容器里,有独立的PID, IPC和网络空间,和直接运行在宿主是不同。比如你的root用户并不是宿主的root用户,你的目录也不是宿主的目录。

在设计产品架构与开发的过程中,最好别把虚机的架构方案直接搬过来,还要注意容器特有的一些优势。namespace虽然是进行了资源的隔离,但是也可以通过很简单的方式进行共享。

比如,可以直接通过-volumn共享卷,而不需要通过网络mount,可以通过--net直接共享网络等。另外,跨宿主的容器,不能直接通讯,还需要进行额外控制,这个在产品架构的时候也要注意一下。

至于产品开发,代码级别没有什么影响。

容器里开发的优势在于,容器相当于独立的沙箱环境。你的开发环境,可以放在任何地方(云、你的笔记本或者服务器....),上线的时候,只要你代码运行的容器和你开发时是相同的,代码运行就不会有问题。

要回复问题请先登录注册