Dockerfile

Dockerfile 是一个文本格式的配置文件,用户可以使用 Dockerfile 快速创建自定义的镜像

Dockerfile 常用指令

FROM

作用:指定基础镜像,Dockerfile中FROM是必备指令,且必须是第一条指令;

格式:FROM <image>:[tag]

FROM busybox

LABEL

作用:设定元数据

格式:LABEL <key>=<vlaue> <key>=<value> ...

其中:LABEL指令将元数据以多个键值对方式指定

LABEL auther="du"

COPY

作用:将工作目录中的文件复制到所做得镜像的文件系统中

格式:COPY <src><src>... <dest>

COPY index.html  /usr/share/nginx/html/

其中:

  • <src>必须用相对路径,<dest>一般用绝对路径
  • 源文件必须在工作目录或工作目录的子目录(相对路径可以找到)
  • 支持通配符
  • <dest>可以不存在,会自动创建
  • <src>是一个目录,会自动复制目录下的文件到目标位置,
  • 如果复制多个文件,或者<src>中使用了通配符,那么<dest>必须以/结尾

ADD

格式:ADD <src><src>... <dest>

作用:复制指定的 <src> 到容器中的 <dest>

其中: <src> 可以是 Dockerfile 所在目录的一个相对路径(文件或目录);也可以是一个 URL;还可以是一个 tar 文件(自动解压)

ADD https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/at-sysvinit-3.1.13-24.el7.x86_64.rpm ./

WORKDIR

作用:相当于cd命令;指定工作目录;可以使用多个 WORKDIR 指令

格式:WORKDIR PSTH

WORKDIR /pack/nginx/

VOLUME

作用:创建并指定数据卷挂载点

格式:VOLUME ["/data1","/data2"]

VOLUME  /webroom

EXPOSE

作用:设置Docker容器内部暴露的端口号

格式:EXPOSE port port ...

EXPOSE 22 80

ENV

作用:设置环境变量

格式:ENV var1=value1 var2=value2 ...

ENV path=/usr/share/nginx/html/

ARG

作用:定义变量

格式:ARG key=value key=value

其中:ARG构建参数和 ENV 的效果一样,都是设置环境变量。所不同的是, ARG 所设置的构建的环境变量,在将来容器运行时是不会存在这些环境变量的

RUN

作用:基于镜像构建容器时运行命令

格式:RUN cmd && com

RUN touch testnginx

CMD

作用:定义容器启动以后要默认运行的程序,pid为1的程序

格式:CMD ["命令","参数","参数"]

CMD ["-g","daemon off;"]

其中:指定启动容器时执行的命令,每个 Dockerfile 只能有一条 CMD 命令。如果指定了多条 CMD 命令,只有最后一条会被执行。如果用户在启动容器时指定了要运行的命令,则会覆盖掉 CMD 指定的命令。

ENTRYPOINT

作用:配置容器启动后执行的命令和参数,类似CMD

区别:运行时CMD不能添加参数,而ENTRYPOINT可以添加参数 eg:docker run DockerFile -i

https://www.cnblogs.com/reachos/p/8609025.html

USER

作用:指定运行容器时的用户名和UID,

格式:USER username|uid

USER du

ONBUILD

作用:定义触发器,当本镜像被指定为基础镜像时触发

格式:ONBUILD cmd

...
ONBUILD ADD . /app/src
ONBUILD RUN /usr/local/bin/python-build –dir /app/src
...

创建镜像

第一步:编写dockerfile

╭─root@du-z ~
╰─➤ mkdir /nginx
╭─root@du-z ~
╰─➤ cd /nginx
╭─root@du-z /nginx
╰─➤ vim Dockerfile
FROM docker.io/nginx:latest
LABEL author=du
COPY ./passwd /data/
WORKDIR /pack/nginx/
ENV pkgname=nginx-1.14.0.tar.gz root=/data/mysql/mysql3306/data/
COPY nginx-1.14.0.tar.gz $root
VOLUME $root
EXPOSE 80/tcp
RUN tar xf $root$pkgname
CMD nginx -g "daemon off;"

第二步:构建镜像

╭─root@du-z /nginx
╰─➤ docker build -t nginx:v1 .

第三步:查看

# docker image ls
# docker history nginx:v1

Docker --Dockerfile(制作镜像)的更多相关文章

  1. Docker 0x05: Dockerfile制作镜像

    目录 Dockerfile制作镜像 一句话什么是dockerfile dockerfile脚本指令 小结 Dockerfile制作镜像 dockerfile 可以是制作自己镜像的脚本文件,按照这个脚本 ...

  2. docker(9)Dockerfile制作镜像

    前言 如果我们已经安装了一个python3的环境,如果另一台机器也需要安装同样的环境又要敲一遍,很麻烦,这里可以配置Dockerfile文件,让其自动安装,类似shell脚本 Dockerfile编写 ...

  3. docker-使用Dockerfile制作镜像

    最近项目中有使用docker,组内做了关于docker的培训,然后自己跟着研究了一下,大概了解如何使用.我是基于tomcat镜像制作(不需要安装jdk,配置环境变量),基于centos镜像制作需要安装 ...

  4. Docker Dockerfile 定制镜像(转)

    转自: https://yeasy.gitbooks.io/docker_practice/ 及 https://blog.csdn.net/wo18237095579/article/details ...

  5. docker Dockerfile 创建镜像

    Docker 组件 1. docker client : docker的客户端 2. docker server : docker daemon的主要组成部分,接受用户通过docker client发 ...

  6. Docker Dockerfile 定制镜像

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

  7. docker——Dockerfile创建镜像

    写在前面: 继续docker的学习,昨天用docker成功跑了tomcat,但是在centos中镜像跑的容器手动装jdk和tomcat,今天学习用Dockerfile创建镜像,并在上面搭建java环境 ...

  8. 通过dockerfile制作镜像

    Dockerfile是一个用于构建Docker镜像的文本文件,其中包含了创建Docker镜像的全部指令.就是将我们安装环境的每个步骤使用指令的形式存放在一个文件中,最后生成一个需要的环境. Docke ...

  9. Docker如何制作镜像-Dockerfile的使用

    1:什么是Dockerfile Dockerfile是一个文本文档,可以通过docker build 命令构建成一个镜像. 我们可以在Dockerfile中定义一系列的命令,构建出我们想要的镜像. 想 ...

  10. Docker部署运行springboot项目,并使用Dockerfile制作镜像

    前言: 本来是要搭建一个自动化部署分布式项目的服务器平台的,使用jenkins+k8s+ELK+springboot把一个简单的springboot项目给搞起来,由于工程太大,先分开把每个技术组件单独 ...

随机推荐

  1. Net/NetCore/.NET5 ORM 六大查询体系 - SqlSugar 高级篇

    框架介绍 SqlSugar ORM是一款老牌国产ORM框架,生命力也比较顽强,从早期ORM不成熟阶段,一直存活到现在,我为什么要一直坚持,那是因为还有很多用户在使用,本来我能够较早推出新开源框架 ,可 ...

  2. Linux目录的慨念

    1.路径 对文件进行访问时,要用到"路径"(Path)的慨念. 顾名思义,路径是指从树型目录中的某个目录层次到某个文件的一条道路. 此路径的主要构成是目录名称,中间用"/ ...

  3. 如何使用容器镜像服务 TCR 轻松实现容器 DevOps

    作者周明,腾讯云容器产品工程师.目前主要负责腾讯云TKE.TCR等产品控制台的相关研发工作. 概述 当你使用云厂商提供的容器服务部署业务服务后,是否对交付部署全链路的效率有更高的需求,例如实现基于容器 ...

  4. SparkSql自定义数据源之读取的实现

    一.sparksql读取数据源的过程 1.spark目前支持读取jdbc,hive,text,orc等类型的数据,如果要想支持hbase或者其他数据源,就必须自定义 2.读取过程 (1)sparksq ...

  5. 全网最牛X的!!! MySQL两阶段提交串讲

    目录 一.吹个牛 二.事务及它的特性 三.简单看下两阶段提交的流程 四.两阶段写日志用意? 五.加餐:sync_binlog = 1 问题 六.如何判断binlog和redolog是否达成了一致 七. ...

  6. Maven 中 install,package,deploy命令区别

    mvn clean package依次执行了clean.resources.compile.testResources.testCompile.test.jar(打包)等7个命令. mvn clean ...

  7. docker搭建前端环境

    开发环境的搭建,是新人入职后的第一道槛,有时一个小小的问题就能阻塞半天.如果能提供一个工具在短时间内搞定开发环境,势必提高新人对团队的印象分!docker就是这样一个工具. 镜像&容器 doc ...

  8. LeetCode278 第一个错误的版本

    你是产品经理,目前正在带领一个团队开发新的产品.不幸的是,你的产品的最新版本没有通过质量检测.由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的. 假设你有 n 个版本 [1, ...

  9. Head First 设计模式 —— 13. 代理 (Proxy) 模式

    思考题 如何设计一个支持远程方法调用的系统?你要怎样才能让开发人员不用写太多代码?让远程调用看起来像本地调用一样,毫无瑕疵? P435 已经接触过 RPC 了,所以就很容易知道具体流程:客户端调用目标 ...

  10. wpf 通过为DataGrid所绑定的数据源类型的属性设置Attribute改变DataGrid自动生成列的顺序

    环境Win10 VS2019 .Net Framework4.8 在wpf中,如果为一个DataGrid绑定到一个数据源,默认情况下DataGrid会为数据源类型的每个属性生成一个列(Column)对 ...