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.

如何建立你自己的Docker镜像相关推荐

  1. docker镜像了解(建立私有仓库,基于已有镜像创建,Docker的数据管理) 基于Dockerfile创建,基于本地模板创建,端口映射,容器互联)

    文章目录 docker镜像 制作镜像的过程 基于已有镜像创建 基于本地模板创建 基于Dockerfile创建 Dockerfile操作指令 Docker的数据管理 数据卷 docker的网络通信 容器 ...

  2. 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上

    一个用于构建和推送Docker镜像的Maven插件. 使用Maven插件构建Docker镜像,将Docker镜像push到DockerHub上,或者私有仓库,上一篇文章是手写Dockerfile,这篇 ...

  3. 构建Docker镜像(三)

    作者:李晓辉 联系方式:Xiaohui_li@foxmail.com QQ:939958092 一.建立Dockerfile 1.准备文件 新建一个目录和一个 Dockerfile mkdir /st ...

  4. 大规模集群中Docker镜像如何分发管理?试试Uber刚开源的Kraken

    Docker注册表的主要目的是存储和分发Docker镜像,看似是一个相对简单的任务,但是如果遇到了像Uber这样的大规模计算集群,就很容易成为可伸缩性的瓶颈.在多区域和混合云系统的计算环境中,镜像分发 ...

  5. docker 镜像修改的配置文件自动还原_原创 | 全网最实在的docker入门教程四

    作者:潘吉祥 上一篇我们学习了如何使用Dockerfile制作自己的镜像,不过这种方式更像纯粹的运维方式,作为开发者来说,未免有些小繁琐,一个不小心写错些命令就执行失败,我们还不知道错误在哪,这着实有 ...

  6. Docker镜像基本使用

    使用 Docker 镜像 Docker 运行容器前需要本地存在对应的镜像,如果本地不存在该镜像,Docker 会从镜像仓库下载该镜像. 获取镜像 docker pull [选项] [Docker Re ...

  7. docker 镜像重命名_Docker镜像管理(二)

    在<Docker镜像管理(一)>中介绍了使用Docker Hub来管理你的Docker镜像,小伙伴们在创建仓库时,细心的同学可能已经发现再次创建private类型的仓库时,不能创建了,如下 ...

  8. Docker源码分析(十):Docker镜像下载

    http://www.infoq.com/cn/articles/docker-source-code-analysis-part10 1.前言 说Docker Image是Docker体系的价值所在 ...

  9. docker 导入镜像_官方下一代Docker镜像构建神器 -- BuildKit

    BuildKit是Docker官方社区推出的下一代镜像构建神器--可以更加快速,有效,安全地构建docker 镜像.Docker v18.06已经集成了该组件.BuildKit可用于多种导出格式(例如 ...

最新文章

  1. python表白程序-python如何写出表白程序
  2. Eclipse通过JDWP调试Dalvik
  3. 由社区推动的 .NET 6 新 API
  4. Centos7下安装Python3.5
  5. 运算放大器基本参数—压摆率(直观解释)
  6. Kubernetes 的网络原理 (五)---CNI网络模型
  7. 使命召唤4:现代战争
  8. Tasker Android系统增强神器,Android系统增强神器 Tasker
  9. 新的一年,如何做好日计划、月计划与年计划?
  10. 基于51单片机WIFI遥控防盗电子密码锁APP控制方案原理图设计
  11. java 微信 jar_weixin-java-tools
  12. 如何让Join跑的更快?(文末送书)
  13. Relax中的量化管理
  14. ip addr命令解析
  15. Onestage Grounding
  16. 中国疫苗行业发展态势及供需前景预测报告2022-2027年
  17. html表格怎么控制文字大小,如何用html设置文本输入框输入字体的大小
  18. java-net-php-python-java在线花店网站计算机毕业设计程序
  19. 竖脊肌(02):俯卧两头起
  20. 请大神帮我看看这是什么问题

热门文章

  1. 图像处理与识别的算法中若有非线性变换,那么请一定注意归一化的处理会影响结果
  2. opsforlist 存在贼覆盖_RedisTemplate常用集合使用说明-opsForList(三)
  3. linux搭建--ubuntu下安装libvirt注意事项(二)
  4. 应用语言学 计算机语言学,应用语言学的名词解释
  5. PHP使用CURL案例
  6. ubuntu设置字体编码GBK和UTF-8
  7. 基于XMPP协议的aSmack源码分析
  8. android源码的目录
  9. makefile中命令的显示
  10. 【转载】从康耐视(NASDAQ : CGNX)看国内视觉识别行业的机会