专栏首页龙首琴剑庐Dockerfile构建镜像及相关命令

Dockerfile构建镜像及相关命令

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Docker使用命令

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

    斯武丶风晴
  • Zookeeper ACL权限配置及zkclient示例

    zk做为分布式架构中的重要中间件,通常会在上面以节点的方式存储一些关键信息,默认情况下,所有应用都可以读写任何节点,在复杂的应用中,这不太安全,ZK通过ACL机...

    斯武丶风晴
  • AQS (AbstractQueuedSynchronizer)源码导读:锁的获得与释放

    AbstractQueuedSynchronizer简称AQS是一个抽象同步框架,可以用来实现一个依赖状态的同步器。

    斯武丶风晴
  • Docker 使用指南 (五)—— Dockerfile 详解

    制作Docker image 有两种方式:一是使用 Docker container,直接构建容器,再导出成 image 使用;二是使用 Dockerfile,...

    田飞雨
  • 参数化(二):执行查询的方式

    前面一篇我介绍了执行计划缓存以及执行之前批处理经过的流程。这篇将用几个最普通的例子介绍查询的几种执行方式。 请看下面这个我使用的这个查询: SELECT Id...

    用户1217611
  • NLP中的词向量对比:word2vec/glove/fastText/elmo/GPT/bert

    一、文本表示和各词向量间的对比 1、文本表示哪些方法? 2、怎么从语言模型理解词向量?怎么理解分布式假设? 3、传统的词向量有什么问题?怎么解决?各种词向量的...

    zenRRan
  • 好好编程-物流项目12【用户管理-分页实现】

      通过前面的介绍我们实现了用户信息的CRUD操作,接下来我们介绍了用户信息的分页查询。

    用户4919348
  • TEE有没有商业模式?

    谈到TEE,许多人非常看好发展前途,但直面现实时又直摇头,有人认为商业模式不清晰,比如盈利模式单一,业务模式太重,发展模式......等等,安智客想对TEE商业...

    安智客
  • 如何快速搭建 hexo 博客

    本文将简介如何自己的服务器、腾讯云COS及Github Page上部署hexo博客。

    脸滚键盘dj
  • 高性能网络编程(一)—-accept建立连接

    最近在部门内做了个高性能网络编程的培训,近日整理了下PPT,欲写成一系列文章从应用角度谈谈它。

    陶辉

扫码关注云+社区

领取腾讯云代金券