【Day 7】Dockerfile x 连千毅:从一排汉堡认识容器映像档

tags: 铁人赛 Docker Dockerfile 汉堡

概述

碎念时间

大麦克的启示(1) - 改善劳动条件、从麦当劳涨价开始

大麦克的启示(2) - 汉堡、结合人类智慧结晶於一身

  • 就我的观察,麦当劳之所以能够成为速食界典范,系因透过
    1. 制定生产标准 --> 不会因为麦当劳开在台南就会变成砂糖汉堡
    2. 模组化制造 --> 拿别人做的面包、别人生产的肉排、黄瓜进行组装
    3. 流线化生产 --> 我们需要将汉堡的生产管线化、自动化

    图片来源:Quora - How do you make McDonald's Big Mac?

Build Docker image - Dockerfile

制作原则

  • 制作汉堡之前,先来撰写食谱 -- Dockerfile
  • 做汉堡的概念就是,选择基底,和想吃的食物,一层一层堆叠起来。

    资料来源:https://docs.docker.com/develop/develop-images/dockerfile_best-practices/

  • 这个汉堡,最多 127 层。
  • 第一层FROM 选择 Base Image
    • 上图中的范例,选择透过 ubuntu:18.04 作为基底
    • 撰写 Dockerfile 同时浏览 Dockerhub 页面
    • 就是选择汉堡的基底,好像是潜艇堡的选择比较多齁?
  • 第二层COPY 在制作映像档阶段,进行资料拷贝
    • 把当前 Dockerfile 所在的目录下的所有资料,都放到容器内的 /app
  • 第三层RUN 在制作映像档阶段,运作的指令
    • 呼叫了 make 指令
    • 具体做了哪些事情,要看 Makefile 内容
    • 如果对於 make 稍微有困惑,可以看昨天发表的文章⋯⋯
  • 第四层CMD 定义容器执行後的预设行为
    • CMD 只会有一层
    • 我们先前提到,一个容器,只做一件事情、做好一件事⋯⋯
    • 一旦 CMD 所呼叫的指令,运作结束的时候,整个容器就会终止。
    • 不相信的话你可以试试看 kill -9 杀掉那个程序看看

不觉得很像汉堡吗?

结论

  • DevOps 的工作,脱离不了 Container 作为基础元件。
  • 还不刷一排汉堡

<<:  day16 : NATS 、NATS Streaming、JetStream服务应用 on K8S (下)

>>:  Day 0xF UVa10071 Back to High School Physics

AI ninja project [day 22] 变分自动编码器 Variational Autoencoder

如果讲了自动编码器(AE), 却不介绍变分自动编码器(VAE), 感觉有点太可惜了。 听到生成演算法...

虹语岚访仲夏夜-13(专业的小四篇)

看过的故事有好多 有的很悲 有的很爱 但对於自己 像是吃的午饭 又吐了一半 在这战场 还是不太习惯...

Day 2 Mac 环境小工具

写在前面 上课前就常常听说 Ruby on Rails 在 Window 作业系统环境里很麻烦很难用...

Day 15 Flask 回传参数

在网页中不可能只是按照设定好的 URL 去取得网页页面,在许多时候都需要带入不同的参数去取得不同的资...

【PHP Telegram Bot】Day16 - 基础(5):档案读取与写入、cURL

对程序来说,档案的处理与网络传输是差不多的,所以会有一些两者都通用的函式 内建函式 最主要就是这两...