制作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镜像里面配置好,以后同步环境就 ...
随机推荐
- Seafile安装踩坑
欢迎大家访问我的博客新地址: 博客:http://monsterlin.com/ 原文地址:http://monsterlin.com/archives/HowToInstallSeafile.htm ...
- Innobackupex全备恢复(原理、演示)
一. Innobackupex恢复原理 After creating a backup, the data is not ready to be restored. There might b ...
- 推荐五款Android 应用的自动化测试工具
如今自动化测试已经应用到每天的测试中.这不足为奇,因为自动化测试在测试过程中节约了时间,还能避免包括人为因素造成的测试错误和遗漏. 自动化测试工具选择很多.一些是开源的,一些非常贵.一些自动化工具是几 ...
- 读Zepto源码之样式操作
这篇依然是跟 dom 相关的方法,侧重点是操作样式的方法. 读Zepto源码系列文章已经放到了github上,欢迎star: reading-zepto 源码版本 本文阅读的源码为 zepto1.2. ...
- Mac OS中使用VScode配置C语言开发环境
个人博客 chinazt.cc 闲话少叙,直奔主题 下载VSCode https://code.visualstudio.com/download 安装C/C++插件 需要两个插件: 1. cppto ...
- 工作流调度引擎---Oozie
Oozie使用教程 一. Oozie简介 Apache Oozie是用于Hadoop平台的一种工作流调度引擎. 作用 - 统一调度hadoop系统中常见的mr任务启动hdfs操作.shell调度. ...
- Realm的一对多配置以及版本兼容
前言:本篇博客将介绍Realm的一些高级用法,基本使用在这里 一.配置一对多关系 // // Teacher.h #import <Realm/Realm.h> #import " ...
- 就是要你懂Java中volatile关键字实现原理
原文地址http://www.cnblogs.com/xrq730/p/7048693.html,转载请注明出处,谢谢 前言 我们知道volatile关键字的作用是保证变量在多线程之间的可见性,它是j ...
- 基于FPGA的IIR滤波器
基于FPGA的IIR滤波器 by方阳 版权声明:本文为博主原创文章,转载请指明转载地址 ...
- jeecg项目子窗口获得父窗口元素id
jeecg项目子窗口获得父窗口元素id, var parentWin = frameElement.api.opener;alert($(parentWin.document).find(" ...