返回 登录
0

如何建立你自己的Docker镜像

图片描述
Alpine Linux的什么是Docker社区所钟爱?轻量级容器意味着更多的计算资源。Alpine Linux的确是轻型的,也就是说Alpine Linux是面向安全应用的轻量级 Linux 发行版。

你喜欢存钱吗?我喜欢存钱。更好地资源利用就像拥有幸福的银行账户。

让我们对Docker上的Alpine Linux一探究竟。在Alpine Linux上可以建立属于我们自己的镜像。

创建你自己的容器

建立一个镜像的第一步是创建一个新的目录,并打开Dockerfile。接来下,用你最喜爱的文本编辑器取代“atom”行。

cd ~
mkdir buildingDockers
cd buildingDockers
atom Dockerfile

在atom中,添加以下代码到文件中并保存。

FROM iron/base

这是Iron.io容器的基础镜像,但你实际上可以命名任意Docker repo里你想要的的镜像。

我喜欢iron/base镜像,因为这是一个Iron.io博客。但也因为它增加了必要的库,当我们开始添加和构建其他包的时候可以派上用场。

我们首先需要FROM命令。让我们创建容器!在命令行中键入:

docker build -t namehere .

身披Shell的勇士

好了,我们已经有一个容器。现在,我们用它做什么?

访问shell是一个很棒的方法,并且很有成就感。它也很方便进行故障排除。打开镜像并释放shell,试试:

docker build -t namehere .

注意,这不是Bash

有许多有用的命令来创建Docker镜像。为了简化,本文只介绍FROM和RUN命令。这绝对是值得查看整个列表选项的官方文档。

生而为RUN

RUN如何执行一个命令。例如,Alpine Linux 有一个很棒的存储类包,类似apt-get之类。为了看已安装的东西,尝试添加以下代码到你的Dockerfile:

RUN apk info

我们的安装包是如此有用。让我们添加一些东西。为此,从Alpine Linux packages repo中选择一个包。现在,将它添加至Dockerfile:

RUN apk add packageNameHere

最佳的实践和警告

Docker本身就有一个伟大的最佳实践指南。在这篇文章中,他们指出保持镜像小的重要性。避免膨胀很简单和直观。没问题,对吧?只是安装你需要的软件。

你也在Dockerfile中限制RUN命令的数量?Dockerfile 建立在层中。每个命令添加一个新的层。更多的层意味着更多的工作要做,你要将它们干净利落的合并在一起。

层可多可少

减少分层,我建议对命令分组。我们希望添加一个单独的层解决尽可能多的工作。以下是分组命令:

RUN command1 && command2

通过使用“ ”和回车使它更具可读性:

RUN command1 
 && command2 
 && command3

直到变成脑力负担之前,分组命令都是伟大的。当那种情况发生,优先考虑维护性。如果它减少了认知负荷,使用一个额外的RUN命令。Kelsey Hightower在《12 Fractured Apps》中指出,扭转一个RUN命令到shell脚本中是一个稍显逊色的方法来保证镜像的可维护性。

删除缓存,没人会因此受伤

没必要在Docker-land中安装缓存包。所以,让我们删除缓存。在你的Dockerfile结尾处添加以下语句:

RUN rm -rf /var/cache/apk/*

Musl Milk

如果你敢于用官方之外的Alpine Linux apk生态系统,你就有很大的机会选择从源代码进行编译。请注意,Alpine Linux依赖于Musl而不是GCC。

照着这么编译。

Busy Beat Boxin’

Alpine Linux在发行版大小上作出一些牺牲。他们选择BusyBox,而不是安装*Nix实用工具的标准套件。BusyBox是常用的实用工具中不错的精简型。

那就意味着一些实用工具可能不接受一般的GNU标记。这也意味着有些实用工具可能会完全消失。想要curl在你的镜像中?那你必须安装它。

保持学习

维基百科上有Alpine Linux的资料,你可以自己寻找更方便的技巧。

最后,有我们便利的IronWorker指南,很容易检视Docker镜像。如果你想看看我们如何写Dockerfiles,访问github.com/iron-io/dockers.



原文地址:How to Build Your Own Docker Images

评论