制作Docker镜像
编写DockerFile
这个DockerFile是一个制作镜像的配方,用于描述这些文件,环境,和命令。在Linux、macOS的窗口终端中,或者windows的命令提示符下,执行下面的步骤,切记如果你使用的是macOS或者windows,你依然创建的是运行在Linux下的映像。
- 创建一个目录,在windows下使用md命令:
$ mkdir mydockerbuild
PS:构造镜像所需的所有东西都放在这个文件夹中。
- 切换到mydockerbulid目录中:
$ cd mydockerbulid
- 在当前目录中,创建编辑Dockerfile文本文件:
$ nano Dockerfile
- 复制下面这行,在文件中添加From 语句:
From docker/whalesay:lastet
PS:这个From 关键字告诉Docker你的映像是基于哪个映像。
- 添加RUN 语句来在映像中安装fortunes程序:
RUN apt-get -y update && apt-get install -y fortunes
这个whalesay映像是基于ubuntu的,使用
apt-get进行安装包。这两个命令用来刷新映像可用的包列表并安装fortunes程序,用来输出名言警句。 - 添加CMD 命令,这个告诉映像在它的环境被建立后,运行的命令,这个命令运行 fortune -a 且把它的输出传入cowsay程序。
CMD /usr/games/fortune -a | cowsay
- 验证,你的文件应该像这样:
FROM docker/whalesay:latest
RUN apt-get -y update && apt-get install -y fortunes
CMD /usr/games/fortune -a | cowsay
从Dockerfile中创建Image
当你mydockerbulid目录,使用docker bulid命令创建image,-t 参数来给你映像一个标签,因此之后你可以更容易地运行它。不要忘记.命令,这表示该命令是在当前命令来查找Dockerfile文件。
PS:使用docker images 就可以看到我们新创建的映像。
$ docker build -t docker-whale . Sending build context to Docker daemon 2.048 kB
...snip...
Removing intermediate container cb53c9d09f3b
Successfully built c2c3152907b5
关于bulid构建过程
- Docker检查并确保它有它构建所需要的一切,这会生称下面这条信息:
Sending build context to Docker daemon 2.048 kB
- Docker检查whalesay映像是否在本地安装,如果没有从Hub上进行获取。对应Dockerfile的FROM 语句,将会生成这样的消息:
Step : FROM docker/whalesay:latest
---> 6b362a9f73ebPS:执行每个步最后,将会打印ID,Dockerfile每一行对应于映像的每一图层,这个ID是每一步骤创建的图层。
- Docker启动临时容器来运行whalesay映像。在临时容器中,Docker运行Dockerfile中下一个命令,即RUN命令,用于安装fortune程序,当RUN命令完成时,将创建一个新图层,删除中间容器。
- 创建一个新的中间容器,Docker为Dockerfile中CMD行添加一个层,并删除中间容器。
运行新构建的映像
docker run docker-whale
制作Docker镜像的更多相关文章
- SpringBoot系列: 制作Docker镜像的全过程
本文主要参考了 https://segmentfault.com/a/1190000016449865 , 感谢作者的付出. 另外, 在本文中, 演示了Windows+Maven+Docker To ...
- 制作Docker镜像的两种方式
此文已由作者朱笑天授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 一.使用docker commit命令制作docker镜像 1. pull一个centos6.6的基础镜像, ...
- 体验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应用更 ...
- [开源]制作docker镜像不依赖linux和Docker环境
背景 最近群友们经常反馈docker镜像制作起来有点麻烦,我开源的antdeploy工具虽然可以制作镜像但是必须有一个提前:有一台安装好docker的linux服务器.因为大家开发环境基本上都是win ...
- Dockerfile 自动制作 Docker 镜像(三)—— 镜像的分层与 Dockerfile 的优化
Dockerfile 自动制作 Docker 镜像(三)-- 镜像的分层与 Dockerfile 的优化 前言 a. 本文主要为 Docker的视频教程 笔记. b. 环境为 CentOS 7.0 云 ...
- Dockerfile自动制作Docker镜像(二)—— 其它常用命令
Dockerfile自动制作Docker镜像(二)-- 其它常用命令 前言 a. 本文主要为 Docker的视频教程 笔记. b. 环境为 CentOS 7.0 云服务器 c. 上一篇:Dockerf ...
- Dockerfile 自动制作 Docker 镜像(一)—— 基本命令
Dockerfile 自动制作 Docker 镜像(一)-- 基本命令 前言 a. 本文主要为 Docker的视频教程 笔记. b. 环境为 CentOS 7.0 云服务器 c. 上一篇:手动制作Do ...
- 手动制作Docker镜像
手动制作 Docker 镜像 前言 a. 本文主要为 Docker的视频教程 笔记. b. 环境为 CentOS 7.0 云服务器(用来用去感觉 Windows 的 Docker 出各种问题,比如使用 ...
- 【玩转开源】制作Docker镜像
做嵌入式方向经常会遇到的一个问题,就是编译环境安装,如果换电脑,再重新安装环境是一个比较费时的事情,这个时候可以自己制作一个Docker镜像,然后把编译环境在Docker镜像里面配置好,以后同步环境就 ...
随机推荐
- poj3207
poj3207 题意 平面上,一个圆,圆的边上按顺时针放着n个点.现在要连m条边, 比如a,b,那么a到b可以从圆的内部连接,也可以从圆的外部连接. 给你的信息中,每个点最多只会连接的一条边.问能不能 ...
- 一起学习java
一.Servlet学习 下面是Servlet一个整体的继承结构 首先说一下Servlet这个接口这个主要包含的有init,service,destroy等方法,这里主要介绍这3个 ...
- Kotlin尝试之一:写代码前的准备
Kotlin是一种静态类型的编程语言,可在Java虚拟机上运行,也可以编译为JavaScript源代码. 其主要发展来自位于俄罗斯圣彼得堡的JetBrains程序员团队. 虽然语法与Java不兼容,但 ...
- [Leetcode] Binary search, Divide and conquer--240. Search a 2D Matrix II
Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo ...
- php面向对象1
类和对象的关系 首先看一段代码 var_dump()后的结果 注意 一个对象系统自动分配一个对象标识符!
- linux exec操作文件描述符
linux每一个打开文件都会关联一个文件描述符,需要的时候我们可以使用exec命令指定一个大于3的数字作为文件 linux默认文件描述符 每打开一个shell就会打开默认的三个文件描述符描0,1,2, ...
- React Native 仿天猫物流跟踪时间轴
最近心血来潮开始学习ReactNative,正好最近有一个项目可能会用到时间轴,页面原型类似于天猫的物流跟踪,如下图 分析之后决定使用ListView来实现,左边的时间轴则使用Art来绘制. 分析左边 ...
- Android Studio开发环境配置(win7)
由于近期,google网站封锁,导致eclipse配置android环境时,无法在线更新API和配置ADT.个人尝试之后,发现很多地方配置因为版本不合适而配置不成功,(ps:当然你FQ,或者下载到对应 ...
- codeM美团编程大赛初赛B轮D题
[编程题] 模 时间限制:1秒空间限制:32768K 给定四个正整数a,b,c,k,回答是否存在一个正整数n,使得a*n在k进制表示下的各位的数值之和模b为c.输入描述:第一行一个整数T(T < ...
- java 动态代理的实现
http://www.cnblogs.com/jqyp/archive/2010/08/20/1805041.html