FROM

FROM指令是最重要的一个并且必须为Dockerfile文件开篇的第一个非注释行,用于为镜像文件构建过程指定基础镜像,后续的指令运行于此基础镜像提供的运行环境

这个基础镜像可以是任何可用镜像,默认情况下docker build会从本地仓库找指定的镜像文件,如果不存在就会从Docker Hub上拉取

语法:

FROM <image>
FROM <image>:<tag>
FROM <image>@<digest>

COPY

用于从宿主机复制文件到创建的新镜像文件

语法:

COPY <src>...<dest>
COPY ["<src>",..."<dest>"]
# <src>:要复制的源文件或者目录,可以使用通配符
# <dest>:目标路径,即正在创建的image的文件系统路径;建议<dest>使用绝对路径,否则COPY指令则以WORKDIR为
其起始路径

注意:如果你的路径中有空白字符,通常会使用第二种格式

规则:

<src> 必须是build上下文中的路径,不能是其父目录中的文件
如果<src> 是目录,则其内部文件或子目录会被递归复制,但<src> 目录自身不会被复制
如果指定了多个<src> ,或在<src> 中使用了通配符,则<dest> 必须是一个目录,则必须以/符号结尾
如果<dest> 不存在,将会被自动创建,包括其父目录路径

ADD

基本用法和COPY指令一样,ADD支持使用TAR文件和URL路径

语法:

ADD <src>...<dest>
ADD ["<src>",..."<dest>"]

规则:

和COPY规则相同
如果<src> 为URL并且<dest> 没有以/结尾,则<src> 指定的文件将被下载到<dest>
如果<src> 是一个本地系统上压缩格式的tar文件,它会展开成一个目录;但是通过URL获取的tar文件不会自动展开
如果<src> 有多个,直接或间接使用了通配符指定多个资源,则<dest> 必须是目录并且以/结尾

EXPOSE

用于给容器打开指定要监听的端口以实现和外部通信

语法:

EXPOSE <port>[/<protocol>] [<port>[/<protocol>]...]

<protocol> 用于指定传输层协议,可以是TCP或者UDP,默认是TCP协议

EXPOSE可以一次性指定多个端口,例如: EXPOSE 80/tcp 80/udp

ENV

用来给镜像定义所需要的环境变量,并且可以被Dockerfile文件中位于其后的其他指令(如ENV、ADD、COPY等)所调用,调用格式:$variable_name或者${variable_name}

语法:

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

第一种格式中, <key> 之后的所有内容都会被视为<value> 的组成部分,所以一次只能设置一个变量

第二种格式可以一次设置多个变量,如果<value> 当中有空格可以使用\进行转义或者对<value> 加引号进行标识;另外\也可以用来续行

ARG

用法同ENV

语法:

ARG <name>[=<default value>]

指定一个变量,可以在docker build创建镜像的时候,使用--build-arg <varname>=<value> 来指定参数

RUN

用来指定docker build过程中运行指定的命令

语法:

RUN <command>
RUN ["<executable>","<param1>","<param2>"]

第一种格式里面的参数一般是一个shell命令,以/bin/sh -c 来运行它

第二种格式中的参数是一个JSON格式的数组,当中<executable> 是要运行的命令,后面是传递给命令的选项或者参数;但是这种格式不会用/bin/sh -c 来发起,所以常见的shell操作像变量替换和通配符替换不会进行;如果你运行的命令依赖shell特性,可以替换成类型以下的格式

RUN ["/bin/bash","-c","<executable>","<param1>"]

Dockerfile常用指令相关推荐

  1. 纯干货!Dockerfile常用指令清单

    Dockerfile常用指令 一.Dockerfile Docker可以通过Dockerfile自动构建镜像,Dockerfile是一个包含多个指令的文档.如下 # syntax=docker/doc ...

  2. Dockerfile 常用指令 - 每天5分钟玩转 Docker 容器技术(16)

    是时候系统学习 Dockerfile 了. 下面列出了 Dockerfile 中最常用的指令,完整列表和说明可参看官方文档. FROM 指定 base 镜像. MAINTAINER 设置镜像的作者,可 ...

  3. 7、《每天5分钟玩转Docker容器技术》学习-Dockerfile 常用指令

    ------------------------------------重要说明------------------------------------ 本文内容都是参考Cloudman系列进行学习, ...

  4. docker常用命令 | game2048网页游戏 | nginx镜像 | 数据卷管理 | docker网络管理 | 构建apache镜像 | Dockerfile常用的命令

    DOCKER https://www.docker.com http://www.runoob.com/docker/docker-command-manual.html docker命令大全 镜像用 ...

  5. docker基础——关于安装、常用指令以及镜像制作初体验

    为什么使用docker docker就是一个轻量级的虚拟机,他解决的是服务迁移部署的时候环境配置问题.比如常见的web服务依赖于jdk.Tomcat.数据库等工具,迁移项目就需要在新的机器重新配置这些 ...

  6. Docker——使用docker工具管理软件/组件的运行,镜像、容器、数据卷的基本概念,常用指令,使用docker搭建Java微服务运行环境

    Docker--使用docker工具管理软件/组件的运行,镜像.容器.数据卷的基本概念,常用指令,使用docker搭建Java微服务运行环境 一.docker的安装和卸载 1.卸载 2.安装 3. 导 ...

  7. Docker常用指令分析

    Docker常用指令 Docker 镜像使用 docker images 列出本地主机上的镜像, REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu 14.04 9 ...

  8. Debug常用指令和DOSBox使用步骤

    Debug是Dos系统中著名的调试程序,也可以运行在Windows系统实模下. 优点: 使用Debug程序,可以查看CPU各种寄存器的内容,内存的情况,并且在机器指令级跟踪程序的运行. DosBox: ...

  9. ubuntu中常用指令

    常用指令 清空命令行 Ctrl+L Conda 创建虚拟环境 conda create -n 虚拟环境名称 python=3.7.10 查看虚拟环境列表 conda info --envs 激活虚拟环 ...

最新文章

  1. 丢人现眼……GitHub阿波罗11号代码仓库惨遭中文灌水
  2. java 039 s rule_Java开发架构篇:DDD模型领域层决策规则树服务设计
  3. JAVA随机存储_java-如何将随机整数存储到类的实例中
  4. 电脑没有ps怎么改照片dpi_PS入门的小技巧来啦!小白们还在等什么呢?快进来啊!...
  5. Convert.ToInt32()与int.Parse()的区别 (转载)
  6. 【翻译】.NET Core3.1发布
  7. 蓝桥杯基础模块7:PWM脉宽调制
  8. 自己动手架设linux下Web服务器(图)4
  9. Spring data jpa Specification查询关于日期的范围搜索
  10. python免费课程全套-如何获取免费python课程?
  11. 越南山寨QQ,我今天才知道,太山寨了!
  12. Nginx 禁止国外 IP 访问网站
  13. 锐捷无线ap服务器怎么绑定mac,MacBook中的锐捷设置全攻略
  14. 使用Directshow + LAVFilter做一个万能格式的多媒体播放器
  15. JS 字符串变量全局替换
  16. 电容或电感的电压_眼见不一定为实!电阻、电容和电感的实际等效模型
  17. 中台是什么,到底要解决什么问题?
  18. html设置背景图片高度,如何使用CSS设置背景图像的大小?
  19. 1.3 OC与OD门(硬件基础系列)
  20. Java程序性能优化-概述

热门文章

  1. asp.net c# 打开新页面或页面跳转
  2. JAVA系统和DOMINO通过LDAP集成方
  3. 你写的前端到底用没用到这些
  4. Easyui 异步树直接所有展开
  5. 《Windows Phone 8 Development Internals》读书笔记-1-1-连载
  6. java 分层概念 要点
  7. Left join后用and和where的区别
  8. Linux服务器下搭建JDK、Tomcat环境和部署web应用
  9. (原創) 我有牙周病了 (日記)
  10. 芝麻HTTP:redis-py的安装