Dockerfile构建镜像及相关命令

Stella981
• 阅读 586

Dockerfile 镜像描述文件

Dockerfile是一个包含用于组合镜像的命令的文本文档 Docker通过读取Dockerfile中的指令按步自动生成镜像

docker build -t 机构/镜像名<:tags> Dockerfile目录 

Dockerfile 基础命令

  • FROM - 基于基准镜像

    #制作基准镜像(基于centos:lastest) FROM centos #不依赖任何基准镜像base image FROM scratch

    基于 采用openjdk8 + tomcat 9.0.22 的镜像

    FROM tomcat: 9.0.22-jdk8-openjdk

尽量使用官方提供的Base Image

  • LABEL & MAINTAINER - 说明信息

    MAINTAINER SvenAugustus LABEL version = "1.0" LABEL description = "XXX"

  • WORKDIR - 设置工作目录

    WORKDIR /usr/local #自动创建 WORKDIR /usr/local/newdir

尽量使用绝对路径

  • ADD & COPY - 复制文件

    #复制到/root ADD hello /root #添加根目录并解压 ADD test.tar.gz /

ADD 除了复制,还具备添加远程文件功能

  • ENV- 设置环境常量

    ENV JAVA_HOME /usr/local/openjdk8 RUN ${JAVA_HOME}/bin/java -jar test.jar

尽量使用环境常量,可提高程序维护性

  • EXPOSE - 暴露容器端口

    将容器内部端口暴露给物理机

    EXPOSE 8080

    docker run -p 8000:8080 tomcat

Dockerfile 执行指令

  • RUN & CMD & ENTRYPOINT

    • RUN : 在Build构建时执行命令
    • ENTRYPOINT : 容器启动时执行的命令
    • CMD : 容器启动后执行默认的命令或参数
  • RUN-构建时运行 RUN yum install -y vim #Shell 命令格式

    示例:

    RUN ["yum","install","-y","vim"] #Exec命令格式

  • ENTRYPOINT启动命令

ENTRYPOINT(入口点)用于在容器启动时执行命令

Dockerfile中只有最后一个ENTRYPOINT会被执行

# 示例:
ENTRYPOINT ["ps"] #推荐使用Exec格式
  • CMD默认命令

CMD用于设置默认执行的命令,如果docker run 携带了参数,那么 CMD 设置的参数命令就会被忽略

Dockerfile中出现多个CMD,则只有最后一个被执行

如容器启动时附加指令,则CMD被忽略

# 示例:
CMD ["ps" , "-ef"] #推荐使用Exec格式

by Sven Augustus https://my.oschina.net/langxSpirit

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
Dockerfile 说明
1.基本说明  Dockfile是一个用于编写docker镜像生成过程的文件,其有特定的语法。在一个文件夹中,如果有一个名字为Dockfile的文件,其内容满足语法要求,在这个文件夹路径下执行命令:dockerbuildtagname:tag.,就可以按照描述构建一个镜像了。name是镜像的名称,tag是镜像的版本或者是标签号,
Stella981 Stella981
2年前
Docker容器化【Docker镜像与容器相关命令】
\Docker学习目标:掌握Docker基础知识,能够理解Docker镜像与容器的概念完成Docker安装与启动掌握Docker镜像与容器相关命令掌握TomcatNginx等软件的常用应用的安装掌握docker迁移与备份相关命令能够运用Dockerfile编写创建容器的脚本能
Stella981 Stella981
2年前
Docker:dockerfile构建php项目 [八]
一、把项目封装成docker镜像的步骤把项目封装成docker镜像的步骤:1、先运行一个基础容器,手动制作docker镜像2、编写dockerfile,构建镜像3、测试运行二、dockerfile常用指令参考1、dockerfile常用指令:
Stella981 Stella981
2年前
Dockerfile 详解
一.Dockerfile基本结构一般的,Dockerfile分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。’’为Dockerfile中的注释。先看下面一个小例子:ThismyfirstnginxDockerfileVersion1.0
Stella981 Stella981
2年前
Docker学习——多阶段构建(六)
之前的做法在Docker17.05版本之前,我们构建Docker镜像时,通常会采用两种方式:全部放入一个Dockerfile一种方式是将所有的构建过程编包含在一个Dockerfile中,包括项目及其依赖库的编译、测试、打包等流程,这里可能会带来的一些问题:1、Dockerfile特别长,可维护性降低2、镜像层次多,镜像体积较大,
Wesley13 Wesley13
2年前
01_docker镜像命令
docker镜像命令1\.dockerimages参数:\a:列出本地所有的镜像\q:只显示镜像id\digests:显示镜像的摘要信息\notrunc:显示完整的镜像信息dockerimagesd
Stella981 Stella981
2年前
Dockerfile指令:
Dockerfile指令:第一行注释,指令是大写字母开头,FROM指令:FROM<image,后面跟镜像名,FROM<image:<tag,后面跟镜像名和标签名,必须是已经存在的镜像,后续指令都是基于这个镜像来执行的,这个镜像也叫基础镜像,必须是第一条非注释指令,FROMubuntu:14.0
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_