容器技术反例:哪些不适合利用Docker实现?

简介:

51CTO.com快译】 此篇文章,将为大家详细介绍那些不适合利用Docker实现的技术。

一)容器中的数据或者日志

容器适合处理无状态且仅需要短期运行的应用。这意味着我们不应将数据或者日志存储在容器内——否则其会在容器终止时一并消失。相反,利用分卷映射将其持久存储于容器之外。ELK堆栈可用于存储及处理日志。如果所管理分卷曾在测试流程中使用,那么请在dockerrm命令中添加-v将其移除。

二)容器IP地址

每套容器都拥有自己的IP地址。多套容器彼此通信以创建同一应用,例如部署在应用服务器上的应用即需要与数据库对话。在运行过程中,会不断有旧容器关闭,新容器开启。依靠容器IP地址意味着我们需要不断更新应用配置方能保持这种通信能力。相反,我们应当为其创建专门的服务,用于容纳动态变化的容器引用逻辑名称,并借此实现基本的负载均衡功能。

三)容器中运行单一进程

每个Dockerfile都会使用一个CMD与ENTRYPOINT。通常来讲,CMD会利用脚本以执行部分镜像配置,而后启动该容器。不要尝试在该脚本中使用多个进程。大家应当在创建Docker镜像时遵循分离原则的方针,否则会令容器在管理、日志收集以及更新方面遭遇更多难题。大家可以考虑将应用拆分成多套容器,并对其进行逐一管理。

四)不要使用docker exec

docker exec命令会在运行中的容器内开始一条新命令。其适用于利用docker exec -it {cid} bash实现shell附加。然而除此之外,容器本身应该已经运行有该进程。

五)保持镜像精简

创建一个新目录,并将Dockerfile及其它相关文件保存在其中。另外,考虑使用.dockeringore以移除任何日志、源代码等,而后再进行镜像创建。确保移除一切已经被解压的下载软件包。

六)利用运行中的容器创建镜像

应使用docker commit命令创建新镜像。这种方式适用于容器已经发生改变的情况。不过由此创建的镜像不可重现。相反,我们应在Dockerfile中进行修改,终止现有容器,并利用更新后的镜像启动新容器。

七)Docker镜像中的安全凭证

不要将安全凭证存储在Dockerfile当中。其将以明文形式存在并被检入存储库内,这将引发潜在的安全威胁。使用-e将密码指定为环境变更。而后,可利用--env-file读取文件中的环境变量。另一种方案是利用CMD或者ENTRYPOINT指定一套脚本。该脚本负责将凭证由第三方处提取出来并用于配置应用。

八)latest标签

很多朋友可能习惯利用couchbase启动镜像。如果未指定标签,那么容器会默认使用couchbase:latest镜像。此镜像可能并非最新,而是引用某个陈旧版本。需要强调的是,将应用引入生产流程要求配合一套采用特定镜像版本的完全受控环境。确保始终使用正确的标签以运行容器——例如使用couchbase:enterprise-4.5.1而非couchbase。

九)镜像不匹配

不要在开发、测试、分段以及生产环境内使用不同的图像或者标签。作为“选定来源”的镜像应仅创建一次,并被推送至存储库内。该镜像应被用于各类不同环境。在某些情况下,大家可以考虑在WAR文件上运行单元测试,而后再创建镜像。不过请注意,任何系统集成测试都应当在生产环境实际使用的镜像中完成。

十)发布端口

不要利用-P以发布全部公开端口,因为如此一来大家将能够运行多套容器并发布其公开端口。这样做亦意味着全部端口都将公开发布。相反,请使用-p以发布特定端口。

  
  
  
  作者:核子可乐译
来源:51CTO
相关实践学习
通过日志服务实现云资源OSS的安全审计
本实验介绍如何通过日志服务实现云资源OSS的安全审计。
目录
相关文章
|
5月前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
|
5月前
|
监控 Linux 调度
【赵渝强老师】Docker容器的资源管理机制
本文介绍了Linux CGroup技术及其在Docker资源管理中的应用。通过实例演示了如何利用CGroup限制应用程序的CPU、内存和I/O带宽使用,实现系统资源的精细化控制,帮助理解Docker底层资源限制机制。
513 6
|
5月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
671 5
|
5月前
|
Java Linux 虚拟化
【Docker】(1)Docker的概述与架构,手把手带你安装Docker,云原生路上不可缺少的一门技术!
1. Docker简介 1.1 Docker是什么 为什么docker会出现? 假定您在开发一款平台项目,您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。 您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。 您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。 **要求:**希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销 问题: 要如何确保应用能够在这些环境中运行和通过质量检测? 在部署过程中不出现令人头疼的版本、配置问题 无需重新编写代码和进行故障修复
491 2
|
5月前
|
存储 关系型数据库 MySQL
MySQL Docker 容器化部署全指南
MySQL是一款开源关系型数据库,广泛用于Web及企业应用。Docker容器化部署可解决环境不一致、依赖冲突问题,实现高效、隔离、轻量的MySQL服务运行,支持数据持久化与快速迁移,适用于开发、测试及生产环境。
809 4
|
Linux Docker 容器
Docker操作 :容器命令
Docker操作 (四)
403 56
|
安全 Shell Linux
docker进入容器命令
docker进入容器命令
1072 1