编写DockerFile

这个DockerFile是一个制作镜像的配方,用于描述这些文件,环境,和命令。在Linux、macOS的窗口终端中,或者windows的命令提示符下,执行下面的步骤,切记如果你使用的是macOS或者windows,你依然创建的是运行在Linux下的映像。

  1. 创建一个目录,在windows下使用md命令:

    $ mkdir mydockerbuild

    PS:构造镜像所需的所有东西都放在这个文件夹中。

  2. 切换到mydockerbulid目录中:
    $ cd mydockerbulid
  3. 在当前目录中,创建编辑Dockerfile文本文件:
    $ nano Dockerfile
  4. 复制下面这行,在文件中添加From 语句:
    From docker/whalesay:lastet

    PS:这个From 关键字告诉Docker你的映像是基于哪个映像。

  5. 添加RUN 语句来在映像中安装fortunes程序:
    RUN apt-get -y update && apt-get install -y fortunes

    这个whalesay映像是基于ubuntu的,使用apt-get进行安装包。这两个命令用来刷新映像可用的包列表并安装fortunes程序,用来输出名言警句。

  6. 添加CMD 命令,这个告诉映像在它的环境被建立后,运行的命令,这个命令运行 fortune -a 且把它的输出传入cowsay程序。
    CMD /usr/games/fortune -a | cowsay
  7. 验证,你的文件应该像这样:
    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构建过程

  1. Docker检查并确保它有它构建所需要的一切,这会生称下面这条信息:

    Sending build context to Docker daemon 2.048 kB
  2. Docker检查whalesay映像是否在本地安装,如果没有从Hub上进行获取。对应Dockerfile的FROM 语句,将会生成这样的消息:
    Step  : FROM docker/whalesay:latest
    ---> 6b362a9f73eb

    PS:执行每个步最后,将会打印ID,Dockerfile每一行对应于映像的每一图层,这个ID是每一步骤创建的图层。

  3. Docker启动临时容器来运行whalesay映像。在临时容器中,Docker运行Dockerfile中下一个命令,即RUN命令,用于安装fortune程序,当RUN命令完成时,将创建一个新图层,删除中间容器。
  4. 创建一个新的中间容器,Docker为Dockerfile中CMD行添加一个层,并删除中间容器。

运行新构建的映像

docker run docker-whale

制作Docker镜像的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. 手动制作Docker镜像

    手动制作 Docker 镜像 前言 a. 本文主要为 Docker的视频教程 笔记. b. 环境为 CentOS 7.0 云服务器(用来用去感觉 Windows 的 Docker 出各种问题,比如使用 ...

  10. 【玩转开源】制作Docker镜像

    做嵌入式方向经常会遇到的一个问题,就是编译环境安装,如果换电脑,再重新安装环境是一个比较费时的事情,这个时候可以自己制作一个Docker镜像,然后把编译环境在Docker镜像里面配置好,以后同步环境就 ...

随机推荐

  1. Wampserver红色橙色解决思路----端口冲突是关键

    Wampserver不是绿色:wampserver下载安装不需要配置环境,在这之前需要下载tomcat,并确保启动,不然会是红色.安装好wampserver(就是在安装过程不会弹出缺少什么文件,我的就 ...

  2. nodeJS之事件events

    前面的话 events模块是node的核心模块,几乎所有常用的node模块都继承了events模块,比如http.fs等.本文将详细介绍nodeJS中的事件机制 EventEmitter 多数 Nod ...

  3. 在linux中导入sql文件的方法分享(使用命令行转移mysql数据库)

    因导出sql文件 在你原来的网站服务商处利用phpmyadmin导出数据库为sql文件,这个步骤大家都会,不赘述. 上传sql文件 前面说过了,我们没有在云主机上安装ftp,怎么上传呢? 打开ftp客 ...

  4. SDWebImage源码阅读-第三篇

    这一篇讲讲不常用的一些方法. 1 sd_setImageWithPreviousCachedImageWithURL: placeholderImage: options: progress: com ...

  5. sqlmap用户手册 [详细]

    当给sqlmap这么一个url的时候,它会: 1.判断可注入的参数 2.判断可以用那种SQL注入技术来注入 3.识别出哪种数据库 4.根据用户选择,读取哪些数据 sqlmap支持五种不同的注入模式: ...

  6. Spring学习(8)--- @Autowired注解(一)

    可以将@Autowired注解为“传统”的setter方法 package com.mypackage; import org.springframework.beans.factory.annota ...

  7. php调用java

    PHP调用JAVA方式 1.     背景 在开发招商银行信用卡分期付款功能过程中,在支付成功之后需要对银行的返回数据进行签名验证,因签名加密方式招商银行是不提供的,只提供了相应的JAVA验证类测试例 ...

  8. MongoDB一个基于分布式文件存储的数据库(介于关系数据库和非关系数据库之间的数据库)

    1:MongoDB的官方网址:https://www.mongodb.com   MongoDB的中文社区:http://www.mongoing.com/(老外也很看重中国市场啊,知道大家英语不好, ...

  9. Java基础知识整理(一)

    Java开发环境JDK(Java编辑器.Java运行工具(JRE作用).Java文档生成工具.Java打包工具) 1.Java是严格区分大小写的.2.Java程序中一句连续的字符串不能分开在两行书写, ...

  10. 点击页面其它地方隐藏该div的方法

    思路一 第一种思路分两步 第一步:对document的click事件绑定事件处理程序,使其隐藏该div 第二步:对div的click事件绑定事件处理程序,阻止事件冒泡,防止其冒泡到document,而 ...