Dockerfile 自动制作 Docker 镜像(一)—— 基本命令

前言

a. 本文主要为 Docker的视频教程 笔记。

b. 环境为 CentOS 7.0 云服务器

c. 上一篇:手动制作Docker镜像

Dockerfile 基本命令

编辑 Dockerfile 文件:

FROM centos:7
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
RUN curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
RUN yum install httpd
CMD ["httpd","-D","FOREGROUND"]

Dockerfile 中, FROM 表示要基于哪个镜像RUN 表示在容器中执行的命令CMD 表示执行命令,注意在 CMD 命令中每个参数都要使用引号和逗号隔开。

构建:

docker image build -t centos7_httpd .	# 可以使用 -t <NAME>:<TAG> 格式的参数表示构建出的镜像名

构建过程:

Sending build context to Docker daemon 2.048kB

Step 1/5 : FROM centos:7

---> 5e35e350aded

Step 2/5 : RUN curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

---> Running in 2d8d6373ba83

...... # 此处省略

Removing intermediate container 2d8d6373ba83 # 注意此处

---> 44dd8be815d9

Step 3/5 : RUN curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

---> Running in 7f04af4134f5

...... # 此处省略

Removing intermediate container 7f04af4134f5 # 注意此处

---> 5b6b8fadb9aa

Step 4/5 : RUN yum install httpd -y

---> Running in 97c2e32381fc

...... # 此处省略

Removing intermediate container 97c2e32381fc # 注意此处

---> 47a33ea682ed

Step 5/5 : CMD ["httpd","-D","FOREGROUND"]

---> Running in b62798cd6f92

Removing intermediate container b62798cd6f92 # 注意此处

---> 3a24eb0f4fa0

Successfully built 3a24eb0f4fa0

Successfully tagged centos7_httpd:latest

再次构建时会对不变的命令使用缓存,快了很多。

Sending build context to Docker daemon 2.048kB

Step 1/5 : FROM centos:7

---> 5e35e350aded

Step 2/5 : RUN curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

---> Using cache

---> 44dd8be815d9

Step 3/5 : RUN curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

---> Using cache

---> 5b6b8fadb9aa

Step 4/5 : RUN yum install httpd -y

---> Using cache

---> 47a33ea682ed

Step 5/5 : CMD ["httpd","-D","FOREGROUND"]

---> Using cache

---> 3a24eb0f4fa0

Successfully built 3a24eb0f4fa0

Successfully tagged centos7_httpd1:latest

运行镜像 docker run -d -p 8890:80 centos7_httpd,可以访问成功。

注意以上特别标注的地方:Docker 执行每个 RUN 命令时实际上都是在上一个基础上新建一个容器,执行完成后立即保存,在此基础上再执行下一个,直至完成。

因此需要注意的是,很多命令是不生效的,比如 cd 命令,在下一条命令又会变回原始工作路径。如果一定要执行,可以在 dockerfile 中使用 WORKDIR 命令来设置目录,或使用 “&&” 符号关联多条命令。同时注意修改 host 文件也是不会生效的,因为 Docker 每次启动新容器都会修改它的 host 以设置网络

TIPS: 使用 docker image prune 删除名字和标签均为 “<none> ” 的镜像(强制删除有容器使用的镜像 和 构建过程中被终止时会产生)。

后记

这篇应该是发布时间在一天中最早的了。身为上班社畜,感觉周六似乎是睡不了懒觉的了,又是工作日的时间起床,233333。不过这篇是提前写好的,因为感觉学习不是一个线性的过程,很多时候前面的内容需要学习后面内容后才能理解的更加深刻和透彻,在写后面内容有关文章时,也在不断补充和完善之前的文章(也包括文章结构的调整,这也许就是传说中的重构doge)。

Dockerfile 自动制作 Docker 镜像(一)—— 基本命令的更多相关文章

  1. Dockerfile自动制作Docker镜像(二)—— 其它常用命令

    Dockerfile自动制作Docker镜像(二)-- 其它常用命令 前言 a. 本文主要为 Docker的视频教程 笔记. b. 环境为 CentOS 7.0 云服务器 c. 上一篇:Dockerf ...

  2. Dockerfile 自动制作 Docker 镜像(三)—— 镜像的分层与 Dockerfile 的优化

    Dockerfile 自动制作 Docker 镜像(三)-- 镜像的分层与 Dockerfile 的优化 前言 a. 本文主要为 Docker的视频教程 笔记. b. 环境为 CentOS 7.0 云 ...

  3. dockerfile自动创建docker镜像

    特点:类似于ansible 剧本,大小几kb 而,手动做的镜像,要几百M,甚至上G ,传输不方便 dockerfile 支持自定义容器的初始命令 dockerfile只要组成部分: 基础镜像信息 FR ...

  4. 在docker hub,用github的dockerfile自动生成docker镜像

    简介: 我已经深深的爱上了docker技术. 在日常使用中,经常看到docker hub 中有很多autobuild的镜像.基本使用是在github中上传dockerfile,过一会儿,docker ...

  5. SpringBoot系列: 制作Docker镜像的全过程

    本文主要参考了 https://segmentfault.com/a/1190000016449865 , 感谢作者的付出. 另外,  在本文中, 演示了Windows+Maven+Docker To ...

  6. 制作Docker镜像的两种方式

    此文已由作者朱笑天授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 一.使用docker commit命令制作docker镜像 1. pull一个centos6.6的基础镜像, ...

  7. [开源]制作docker镜像不依赖linux和Docker环境

    背景 最近群友们经常反馈docker镜像制作起来有点麻烦,我开源的antdeploy工具虽然可以制作镜像但是必须有一个提前:有一台安装好docker的linux服务器.因为大家开发环境基本上都是win ...

  8. 体验SpringBoot(2.3)应用制作Docker镜像(官方方案)

    关于<SpringBoot-2.3容器化技术>系列 <SpringBoot-2.3容器化技术>系列,旨在和大家一起学习实践2.3版本带来的最新容器化技术,让咱们的Java应用更 ...

  9. 详解SpringBoot(2.3)应用制作Docker镜像(官方方案)

    关于<SpringBoot-2.3容器化技术>系列 <SpringBoot-2.3容器化技术>系列,旨在和大家一起学习实践2.3版本带来的最新容器化技术,让咱们的Java应用更 ...

随机推荐

  1. 使用simg2img win提取安卓官方ROM包中独立的系统软件

    一.背景 今天是七夕情人节诶,但是与我一只单身老狗有啥关系呢?一大早发现手机系统更新了(MIUI12.5 增强版),但是更新完后感觉充电速度不是很妙(你们懂得),为了恢复之前的充电速度,首先想到将手机 ...

  2. 关于数字化工厂&智能工厂建设 IT 经验总结

    最近疫情闹得胆战心惊,前不久客户给我开了一个玩笑,当天我们同桌会议了一天,晚上客户回家之后就被隔离了,当他给我发这个消息的时候背都凉了一截,害怕之余在机场呆了一个晚上,捅乐鼻孔插了嗓子之后确认无事,后 ...

  3. 关于knn算法的总结思考

    更多的关于k近邻算法的思考 KNN(K- Nearest Neighbor)法即K最邻近法,数据挖掘分类技术中最简单的方法之一 对k近邻算法的总结: 优点部分 其可以解决分类问题,同时可以天然的解决多 ...

  4. Spring 学习笔记(3)Spring MVC

    一.什么是 MVC MVC 实际上就是一种设计模式 Model-View-Controller Model 模型其实就是数据,Dao,Bean 等等 View 视图就是所看到的东西,网页,JSP,展示 ...

  5. Xilinx约束学习笔记(一)—— 约束方法学

    <Xilinx约束学习笔记>为自己阅读 Xilinx 官方 UG903 文档后的学习笔记,大多数为翻译得来,方便大家学习. 1 约束方法学 1.1 组织约束文件 Xilinx 建议将时序约 ...

  6. 三个线程按循序一个打印A一个打印B一个打印C 循环打印?

    第一种 public static volatile int flag = 1; public static void printABC1(){ Thread t1 = new Thread(() - ...

  7. redis支持的数据类型有哪些?

    string,list,hash,set,zset 底层实现数据结构 数据结构 String sds struct sdshdr{ //等于 SDS 保存字符串的长度 int len; //记录 bu ...

  8. C# 异步锁

    参考网址: https://www.cnblogs.com/Alicia-meng/p/13330640.html 使用SemaphoreSlim 实现 当多个任务或线程并行运行时,难以避免的对某些有 ...

  9. element ui loading加载开启与关闭

    参考:https://blog.csdn.net/qq_41877107/article/details/87690555 Vue项目引入element-ui,之后,将以下代码写入 mounted() ...

  10. ASP net core面试题汇总及答案

    在dot net core中,我们不需要关心如何释放这些服务, 因为系统会帮我们释放掉.有三种服务的生命周期. 单实例服务, 通过add singleton方法来添加.在注册时即创建服务, 在随后的请 ...