Dockerfile是用来构建Docker镜像的文件,是由一系列命令和参数构成的脚本。每条指令都必须为大写字母且后面要跟随至少一个参数,每条指令都会创建一个新的镜像层,并对镜像进行提交。

Dockerfile指令

FROM

初始化一个新的构建阶段,并为后续指令设置基本镜像。

RUN

容器构建时需要运行的命令。将在当前镜像之上的新层中执行任何命令并提交结果。生成的提交镜像将用于Dockerfile中的下一步。

EXPOSE

当前容器在运行时监听指定的网络端口,可以指定端口监听TCP还是UDP,如果没有指定协议,则默认为TCP。

WORKDIR

指定在创建容器后,终端默认登录进来的工作目录。

ENV

用来在构建镜像过程中设置环境变量。

ADD

将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包。

COPY

类似ADD,拷贝文件和目录到镜像中。

VOLUME

容器数据卷,用于数据保存和持久化工作。

CMD

指定一个容器启动时运行的命令。一个Dockerfile中只能有一条CMD指令,如果有多条CMD指令,那么只有最后一个CMD会生效,并且CMD会被docker run之后的参数替换。

ENTRYPOINT

指定一个容器启动时运行的命令。docker run的命令行参数将追加到ENTRYPOINT中的所有元素之后。

ONBUILD

当构建一个被继承的DockerFile时运行命令,父镜像在被子继承后父镜像的onbuild被触发。

USER

设置用户名(或UID)和可选的用户组(或GID),以便在运行镜像时使用。

构建一个SpringBoot镜像

1.编写dockerfile文件:

FROM centos
WORKDIR /myjar
RUN yum -y install java-1.8.0-openjdk.x86_64
COPY ./demo-0.0.1-SNAPSHOT.jar /myjar/demo.jar
EXPOSE 8080
CMD ["java","-jar","demo.jar"]

2.构建镜像

docker build -f dockerfile -t buhe/demo:1.0 .

输出:

Sending build context to Docker daemon  17.58MB
Step 1/6 : FROM centos
---> 470671670cac
Step 2/6 : WORKDIR /myjar
---> Running in 1f4ecc625997
Removing intermediate container 1f4ecc625997
---> 51d72f80b218
Step 3/6 : RUN yum -y install java-1.8.0-openjdk.x86_64
---> Running in 5988467076a7
......

3.查看构建的镜像

4.运行

docker run -d -p 8080:8080  buhe/demo:1.0

5.访问

curl -i http://localhost:8080/hello

输出:

HTTP/1.1 200
Content-Type: text/plain;charset=UTF-8
Content-Length: 14
Date: Tue, 18 Feb 2020 08:56:02 GMT Hello World!!!

Docker学习笔记(2):使用Dockerfile构建镜像的更多相关文章

  1. Docker学习笔记之通过 Dockerfile 创建镜像

    0x00 概述 由于 Docker 镜像的结构优势,使它的占用空间远小于普通的虚拟机镜像,而这就大幅减少了 Docker 镜像在网络或者其他介质中转移所花费的时间,进而提高了我们进行迁移部署的效率.不 ...

  2. docker学习笔记(2) 构建镜像

    一.手动构建一个简单镜像 我们以构建nginx的docker镜像为例:手动构建镜像 docker pull centos    安装基础镜像docker run --name mynginx -it ...

  3. DOCKER 学习笔记2 认识dockerfile自定义镜像

    Dockerfile 概念 Dockerfile 是一个文本文件,但包含所构建容器在运行时候的参数.库.资源配置.可以简单理解为我们现有的镜像,比如Centos/Nginx 但我们需要构建一个容器的时 ...

  4. Docker学习(六)Dockerfile构建自定义镜像

    Docker学习(六)Dockerfile构建自定义镜像 前言 通过前面一篇文章可以知道怎么去使用一个镜像搭建服务,但是,如何构造自己的一个镜像呢,docker提供了dockerfile可以让我们自己 ...

  5. docker学习笔记17:Dockerfile 指令 ONBUILD介绍

    ONBUILD指令可以为镜像添加触发器.其参数是任意一个Dockerfile 指令. 当我们在一个Dockerfile文件中加上ONBUILD指令,该指令对利用该Dockerfile构建镜像(比如为A ...

  6. Docker学习笔记_使用Dockerfile创建flask的一个镜像

    一.实验环境 1.宿主机OS:Win10 64位 2 .虚拟机OS:Ubuntu18.04 64位    虚拟机名称:Ubuntu18VM1   虚拟机IP:192.168.8.25 3.账号:doc ...

  7. docker学习笔记18:Dockerfile 指令 VOLUME 介绍

    在介绍VOLUME指令之前,我们来看下如下场景需求: 1)容器是基于镜像创建的,最后的容器文件系统包括镜像的只读层+可写层,容器中的进程操作的数据持久化都是保存在容器的可写层上.一旦容器删除后,这些数 ...

  8. docker学习笔记14:Dockerfile 指令 ENV介绍

    ENV指令用来在镜像构建过程中设置环境变量.我们来看一个Dockerfile的例子: #test FROM ubuntu MAINTAINER hello ENV MYDIR /mydir RUN m ...

  9. docker学习笔记13:Dockerfile 指令 WORKDIR介绍

    Dockerfile中的WORKDIR指令用于指定容器的一个目录, 容器启动时执行的命令会在该目录下执行. 相当于设置容器的工作目录了.我们来看一个dockerfile文件 #test FROM ub ...

  10. docker学习笔记12:Dockerfile 指令 ENTRYPOINT介绍

    本文介绍Dockerfile的 ENTRYPOINT指令的含义. 先回顾下CMD指令的含义,CMD指令可以指定容器启动时要执行的命令,但它可以被docker run命令的参数覆盖掉. ENTRYPOI ...

随机推荐

  1. Cacti 安装插件

            Cacti本身可以以图形化界面显示出流量状态,cacti也可以安装插件,通过插件,cacti的功能被进一步强大:可以监控服务器状态:发送邮件通知:短信通知等.        0.88之 ...

  2. CentOS6.5下部署SVN

    查看系统版本,安装SVN软件及创建目录 [root@A-linux ~]# uname -r 2.6.32-431.el6.x86_64 [root@A-linux ~]# cat /etc/redh ...

  3. 关键两步+6个要点,让Windows应用程序享有K8S的绝佳优势

    本文来自Rancher Labs 前  言 实际上,没有一个迁移路径能够适用于将所有传统应用程序迁移到云.这些应用程序通常在物理机.虚拟机或本地.虽然一般情况下是重新设计应用程序架构以适用云原生服务, ...

  4. vertical-align和line-height的理解及实例

    line-height 字符实际大小和font-size的关系: 下图中不同字体font-size都是100px 测量了一下每个 span 的高度:Helvetica 115px,Gruppo 97p ...

  5. mysql必知必会--联 结 表

    联结 SQL最强大的功能之一就是能在数据检索查询的执行中联结(join) 表.联结是利用SQL的 SELECT 能执行的最重要的操作,很好地理解联结 及其语法是学习SQL的一个极为重要的组成部分 外键 ...

  6. 第10章 DOM

    第10章 DOM 10.1 节点层次 10.1.1 Node 类型 10.1.2 Document 类型 10.1.3 Element 类型 10.1.4 Text 类型 10.1.5 Comment ...

  7. 【Java】简易Socket连接实现

    客户端: import java.io.*; import java.net.Socket; import java.text.SimpleDateFormat; import java.util.D ...

  8. ECharts展示后台数据

    /** * Created by Administrator on 2015/11/10 010. */ var home = function () { //项目预警分析 var getProAla ...

  9. mysql第五课

    修改表中一行或多行数据: SELECT*FROM student;+----+------+------+| id | name | ban  |+----+------+------+|  1 | ...

  10. AE神奇插件TypeMonkey—抖音点赞100W+的文字视频特效是如何做出来的?

    现在最火的东西,短视频必须要拥有姓名啦,抖音这些短视频平台风头正盛,我们也常常在上面看到一些文字动画Vlog,看着并不复杂,但是有些却有上百万的点击量,今天介绍的一款神奇插件——TypeMonkey, ...