主要内容:

  • 什么是 Dockerfile
  • 查看 DockerHub 中镜像的 Dockerfile
  • Dockerfile 编写
  • Dockerfile 常用命令

什么是 Dockerfile

使用 Docker 经常需要基于已经有的镜像去定制新的镜像,Dockerfile 可以保存这种镜像定制的过程。编写好 Dockerfile 后,可以重复使用这个文件在不同的机器上构建同样的镜像。

查看 DockerHub 中镜像的 Dockerfile

可以在 DockerHub 中的任意一个镜像页面点击标签,查看 Dockerfile 文件,比如点击 nginx 的 latest 标签,看到 nginx 的 Dockerfile:

Dockerfile 编写

接下来,我可以在官方的 nginx 镜像基础上做定制。 默认的 nginx 页面打开是这样的:

我希望达到的效果是页面显示:

I have changed the nginx page.

首先准备好要替换的 index.html 页面:

<html>
  <head><title>hello</title></header>
  <body>I have changed the nginx page.</body>
</html>

编写 Dockerfile:

# 从 nginx 镜像开始编写
FROM nginx:latest # 指定容器的默认工作目录
WORKDIR /usr/share/nginx/html # 复制本地文件到 docker 中
COPY index.html index.html

在 index.html 和 Dockerfile 同级目录执行构建指令:

docker image build -t nginx_custom:latest .

接下来,通过 nginx_custom 这个名字标签运行容器, 访问 8000 端口就可以看到定制后的效果了。

docker container run -p 8000:80 nginx_custom:latest

Dockerfile 常用命令

FROM

必须写,表示从哪个基镜像开始构建。

FROM untuntu
# 从 0 开始
FROM scratch

WORKDIR

工作目录

WORKDIR /usr/share
# 相当于运行 cd /usr/share

COPY / ADD

添加本地文件。一般使用 COPY

COPY localfile /dest/file

ENV

添加环境变量。

ENV <key> <value>
ENV <key>=<value> ...

EXPOSE

开放端口。容器可以监听的端口。 EXPOSE 80/udp , 协议可以不填。注意和运行程序的 -p 区分。

VOLUME

数据卷。

RUN

要运行的指令,可以是 shell 格式,也可以是 exec 格式。

RUN yum install wget
RUN ["yum", "install", "wget"]

CMD

一个 Dockerfile 中只出现一次,容器开启时运行的命令。比如启动一个 python 程序: python run.py。 格式也支持 shell 和 exec 格式。

CMD python run.py

Docker 入门:Dockerfile的更多相关文章

  1. Docker入门-Dockerfile的使用

    使用Dockerfile定制镜像 镜像的定制实际上就是定制每一层所添加的配置.文件.我们可以把每一层修改.安装.构建.操作的命令都写入一个脚本,这个脚本就是Dockerfile. Dockerfile ...

  2. docker入门-Dockerfile入门

    1.dockerfile 构建基础命令 2. 构建镜像命令 Usage: docker image build [OPTIONS] PATH | URL | -Options:-t, --tag li ...

  3. (转)Docker入门——Dockerfile详解

    转:https://www.cnblogs.com/sorex/p/6481407.html 基本示例 FROM MAINTAINER LABEL RUN ADD COPY CMD ENTRYPOIN ...

  4. Docker入门教程(三)Dockerfile

    Docker入门教程(三)Dockerfile [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第三篇,介绍了Dockerfile的语法,DockerOn ...

  5. Docker入门之七Dockerfile

    Dockerfile是一个文本格式的配置文本,可以使用它来创建自定义的镜像.首先我们可以先看一个dockerfile是什么样子.这里可以有一个网站不错:http://dockerfile.github ...

  6. Docker入门系列之三:如何将dockerfile制作好的镜像发布到Docker hub上

    这个系列的前两篇文章,我们已经把我们的应用成功地在Docker里通过nginx运行了起来,并且用dockerfile里制作好了一个镜像. Docker入门系列之一:在一个Docker容器里运行指定的w ...

  7. Docker入门教程(六)另外的15个Docker命令

    Docker入门教程(六)另外的15个Docker命令 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第六篇,继续介绍Docker命令.之前的第二篇文章 ...

  8. Docker入门教程(四)Docker Registry

    Docker入门教程(四)Docker Registry [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第四篇,介绍了Docker Registry,它 ...

  9. Docker入门教程(一)介绍

    http://dockone.io/article/101 Docker入门教程(一)介绍 [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第一篇,介绍了 ...

  10. Docker入门命令

    Edit Docker入门命令 # 安装镜像sudo docker pull ubuntu:12.04# 镜像列表sudo docker images# 运行镜像sudo docker run -t ...

随机推荐

  1. POJ 2955 区间DP必看的括号匹配问题,经典例题

    Brackets Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 14226 Accepted: 7476 Description ...

  2. UVA-1 #1. A + B Problem

    给你两个数 aa 和 bb,请输出他们的和. 输入格式 一行,两个用空格隔开的整数 aa 和 bb. 输出格式 一个整数,表示 a+ba+b. 样例一 input 2 3 output 5 限制与约定 ...

  3. 涉及secureCRT中文显示的一些设置

    1.secureCRT中文显示乱码: 如果你的linux本身是显示着中文的,可进行如下设置: 选项->会话选项 外观->字符编码改为UTF-8,确定即可 2.secureCRT中文横向显示 ...

  4. qt creator源码全方面分析(4-3)

    内外命名空间 QtCreator源码中,每一个子项目都有内外两层命名空间,一个是外部的,一个是内部的. 示例如下 namespace ExtensionSystem { namespace Inter ...

  5. M - Little Pony and Harmony Chest 状压dp

    M - Little Pony and Harmony Chest 怎么感觉自己越来越傻了,都知道状态的定义了还没有推出转移方程. 首先这个a的范围是0~30   这里可以推出 b数组的范围 0~60 ...

  6. springboot设置banner

    下图是springboot项目启动的的打印数据,在log中可以清楚的看到有一个spring的banner图案,这个图案其实我们是可以自己进行设置的 我们在项目目录的resources目录下创建一个ba ...

  7. basicRF双向灯光控制

    题目: 实现基于BasicRF无线点对点通信的双向灯光控制,具体要求如下: 1> 节点A 和节点B 的PANID设置为0x1234,通道号设置为17,节点地址自定义.<2> 按下节点 ...

  8. 王颖奇 20171010129《面向对象程序设计(java)》第十六周学习总结

    实验十六  线程技术 实验时间 2018-12-8 理论部分: 并发⚫ 线程的概念⚫ 中断线程⚫ 线程状态⚫ 多线程调度⚫ 线程同步 1.线程的概念 程序是一段静态的代码,它是应用程序执行的蓝本. 进 ...

  9. AbstractList源码分析

    AbstractList 1 类图 2 字段 // 默认容量 private static final int DEFAULT_CAPACITY = 10; // 共享的空数组 private sta ...

  10. 【基础】excel如何根据数据内容显示不同颜色。

    需求: 店柜完成率排名相比上阶段升降,升显示绿色“↑“,降显示红色“↓”,持平显示黑色“-”. 步骤: 第一步 先计算两次排名的差值(本次排名-上次排名). 第二步 对差值列设置单元格格式,设置格式如 ...