如何选择合适的镜像

若习惯了使用虚拟机,首次接触容器可能会有些许不适应,以下列举了一些镜像的 FAQ 以供参考:

Q01:我用 ubuntu/centos/debian 镜像创建了服务(容器),居然连 vi/curl/ifconfig 等基础命令都没有?

A:容器是轻量级的解决方案,一般用于运行特定的服务,容器的镜像仅包含运行应用程序所需的上下文内容,因此不会包含一些额外的软件。

Q02:有没有那种打包好所有软件的镜像呢?

A:对于习惯了使用虚拟机的用户,如果需要镜像中包含一些常用的工具,我们也提供了一批镜像,已经预安装软件,帮助大家逐渐适容器场景。在 镜像中心 或者创建服务选择镜像的时候,请选择网易云官方镜像(仓库名为 public),然后选择 tag 后缀名为 -tools 的镜像,这些镜像一般情况下已经安装了 openssh-server、supervisor、vim、tar、wget、curl、rsync、bzip2、iptables、tcpdump、less、telnet、net-tools、lsof、sysstat、cron 等软件,具体请以镜像说明页为准。

Q03:我想要自己装一些东西,并且保存下来,该怎么处理呢?

A:对于没有预装的软件,可以尝试以下方案:

其他最佳实践详见下文。

Q04:为什么我的镜像这么大?

A:镜像使用分层存储,如果通过「容器保存为镜像」或者 commit 方式制作镜像,commit 一次就会产生一次数据导致镜像越来越大。而且时间一长任何人都不记得做过什么操作,违背了 Docker 最佳实践的初衷。建议学习 Dockerfile。

Q05:为什么对于生产环境最好选用轻量级的镜像?

A:轻量级的镜像好处不言而喻,快速交付或重建、节省空间、节省带宽、加快传输。

Q06:如何精简镜像?

A:选用更精小的镜像,串联 Dockerfile 运行指令,以及试着压缩你的镜像,最佳实践详见 7 步精简 Docker 镜像