Dockerfile 自动制作 Docker 镜像(一)—— 基本命令
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 镜像(一)—— 基本命令的更多相关文章
- Dockerfile自动制作Docker镜像(二)—— 其它常用命令
Dockerfile自动制作Docker镜像(二)-- 其它常用命令 前言 a. 本文主要为 Docker的视频教程 笔记. b. 环境为 CentOS 7.0 云服务器 c. 上一篇:Dockerf ...
- Dockerfile 自动制作 Docker 镜像(三)—— 镜像的分层与 Dockerfile 的优化
Dockerfile 自动制作 Docker 镜像(三)-- 镜像的分层与 Dockerfile 的优化 前言 a. 本文主要为 Docker的视频教程 笔记. b. 环境为 CentOS 7.0 云 ...
- dockerfile自动创建docker镜像
特点:类似于ansible 剧本,大小几kb 而,手动做的镜像,要几百M,甚至上G ,传输不方便 dockerfile 支持自定义容器的初始命令 dockerfile只要组成部分: 基础镜像信息 FR ...
- 在docker hub,用github的dockerfile自动生成docker镜像
简介: 我已经深深的爱上了docker技术. 在日常使用中,经常看到docker hub 中有很多autobuild的镜像.基本使用是在github中上传dockerfile,过一会儿,docker ...
- SpringBoot系列: 制作Docker镜像的全过程
本文主要参考了 https://segmentfault.com/a/1190000016449865 , 感谢作者的付出. 另外, 在本文中, 演示了Windows+Maven+Docker To ...
- 制作Docker镜像的两种方式
此文已由作者朱笑天授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 一.使用docker commit命令制作docker镜像 1. pull一个centos6.6的基础镜像, ...
- [开源]制作docker镜像不依赖linux和Docker环境
背景 最近群友们经常反馈docker镜像制作起来有点麻烦,我开源的antdeploy工具虽然可以制作镜像但是必须有一个提前:有一台安装好docker的linux服务器.因为大家开发环境基本上都是win ...
- 体验SpringBoot(2.3)应用制作Docker镜像(官方方案)
关于<SpringBoot-2.3容器化技术>系列 <SpringBoot-2.3容器化技术>系列,旨在和大家一起学习实践2.3版本带来的最新容器化技术,让咱们的Java应用更 ...
- 详解SpringBoot(2.3)应用制作Docker镜像(官方方案)
关于<SpringBoot-2.3容器化技术>系列 <SpringBoot-2.3容器化技术>系列,旨在和大家一起学习实践2.3版本带来的最新容器化技术,让咱们的Java应用更 ...
随机推荐
- Java8新特性(一)之Lambda表达式
.personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...
- Longhorn,Kubernetes 云原生分布式块存储
Longhorn 是用于 Kubernetes 的轻量级.可靠且功能强大的分布式块存储系统. Longhorn 使用容器(containers)和微服务(microservices)实现分布式块存储. ...
- Python脚本文件中使用中文
Python做图形用户界面(GUI)开发时经常要在界面上显示中文,需要做如下处理(详见[1]和[2]2.3节): 在py文件的首行写上:# -- coding:utf-8 -- 保存py文件时要存为u ...
- CGO入门和OCR文字识别(非第三方API,有源码,效果好)实战
这是我参与8月更文挑战的第5天,活动详情查看:8月更文挑战 系列文章见: [第四天] GDB调试指南:C++中如何调试生产环境的程序? [第三天] IM敏感词算法原理和实现 [第二天] 现代IM架构研 ...
- 在docker安装tomcat的时候,报错:Caused by: java.lang.IllegalArgumentException: The AJP Connector is configured with secretRequired="true
初识docker,试着在docker中安装tomcat(安装的tomcat8.5),并且挂载到宿主机的相关目录下,结果启动的时候报错: 12-May-2020 01:14:34.061 SEVERE ...
- .Net Core WebApi(二)
查看当前端口暴露的所有接口信息 https://localhost:5001/.well-known/openid-configuration 拿到信息如下
- WPF/Winform 图表库LiveCharts
早前的博客,自己动手写了几个图表饼状图,柱形图,折线图等,重在思路. 那么如果你不想这么麻烦自己动手,有没有现成的图表库那? 当然有,虽然我也刚开始用没多久,不过还是对这么良心的项目充满了敬佩!! g ...
- 【java虚拟机】jvm调优原则
转自:https://www.cnblogs.com/xiaopaipai/p/10522794.html 合理规划jvm性能调优 JVM性能调优涉及到方方面面的取舍,往往是牵一发而动全身,需要全盘考 ...
- Java随手记录
Spring @Configuration注解及配置方法 转自:https://www.jb51.net/article/184822.htm Spring @Configuration注解 Spri ...
- 在ubuntu18.04上部署项目时遇到的问题总结
因为在实验室中,有几台空闲的机子,我便选了一台准备做一个本地的服务器,因为买的阿里云学生机和之前用于FQ的机子感觉都不太顺手,阿里的学生机配置稍低,FQ用的服务器延迟太高.开始在centos和ubun ...