想使用Docker容器?先看看这些注意事项
Docker容器无疑是最近十年来最引人注目的技术之一,因为有了它,对我们思考设计、开发和运维软件的方式产生了非常有益的影响。
但是就像每一个开发工具一样,为了充分利用这些工具,需要注意一些使用中问题,Docker容器也是如此。下面是您需要关注的一些地方:
一个Docker容器只对应一个进程
每个Docker容器的核心都是一个进程,尽管每个Docker容器可以使用多个进程,但是这种方法不值得推荐。为了提高效率,每个容器应该只有一个特定的目标进程。其中一个非常重要的原因是如果只使用一个进程的话想在其他项目中迁移使用该Docker将变得容易很多。
尽管在容器中运行多个进程在技术上是可行的,但是单进程体系结构具有显著的优势,具体说来:
1)易扩展
如果容器被隔离到一个单一的功能,水平调整容器会容易得多。 假设您需要另一个Tomcat容器,在其他地方迁移一个即可。但是,如果你的Tomcat容器也运行你的数据库服务,并且其它的数据也需要被迁移走,那么这就变得非常复杂。
2)更好的复用行
如果一个容器只有一个功能,容器可以容易地重新用于其他项目。
3)易问题定位
开发人员能够在本地环境下解决那些在生产中的单个组件出现的问题,而不是从整个应用程序环境中定位问题来解决。
使用磁盘进行数据存储
在容器内部保存数据几乎没有什么用处,因为容器不断地被停止和销毁。无论什么时候需要存储数据,都要在磁盘上进行,因为磁盘可以在多个容器之间更安全地共享。磁盘是将数据存储在容器的可写层中的更好选择,因为使用磁盘不会增加容器的大小,并且磁盘的数据存在于给定容器的生命周期之外。
Docker容器通信
每当一个Docker容器需要与另一个容器通信时,传递信息最好使用名称或环境变量。Docker容器当然也有IP地址,但是无论何时启动和停止容器,都是不会依赖IP地址的。
以普通用户身份运行Docker
默认情况下,Docker容器以root用户身份运行,众所周知,以root用户运行的容器完全可以控制主机系统。如果黑客访问容器内的“root”用户,他将获得对运行Docker的主机的root权限,为了避免这种情况,请始终以普通用户身份运行Docker容器。
注意容器的体积
选择一个容器的主要原因之一是它的体积小。但是,如果你把它做得更大,它的主要优势就没了。当您在群集中部署数千个容器时,如果需要容器相互通信并定期更新容器,这是一个非常严重的问题。
所以需要确保只有所需的文件和库来运行对应的应用程序/进程。不要安装不必要的软件包或运行yum update等命令,将不需要的文件下载到新的映像层。
打个比方:一个冰箱中是无法装下一个大型集装箱的。
制定监测策略
开发和部署Docker容器不是你的工作的结束。您需要持续监控已部署的容器以及整个系统的运行状况。选择合适的工具并制定一个策略来有效地监控您的Docker容器,以确保最短的停机时间,从而使客户满意。
Docker容器的安全问题
只要Docker容器在本地开发环境中运行,就没有安全问题。因为测试环境是与外部连接隔离的,是无法确定在外部是否完全的。当您的Docker镜像部署在生产环境中时,因为需要处理外部网络访问,安全性自然成为一个问题。为了预防这个问题,首先需要确保Docker容器所在的主机被修补了最新的安全更新,其次Docker容器中也更新了安全补丁。