docker镜像制作

dockerfile的基本概念与常用命令 

一.Dockerfile 镜像描述文件

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

二.基础命令

  • FROM - 基于基准镜像
   #制作基准镜像(基于centos:lastest)
     FROM centos 
   #不依赖任何基准镜像base image
     FROM scratch 
   #基于采用openjdk8 + tomcat 9.0.22 的镜像
     FROM tomcat: 9.0.22-jdk8-openjdk
  • LABEL & MAINTAINER - 说明信息
    MAINTAINER SvenAugustus
    LABEL version = "1.0"
    LABEL description = "XXX"
  • WORKDIR - 设置工作目录
    WORKDIR /usr/local
    #自动创建
    WORKDIR /usr/local/newdir 
  • ADD & COPY - 复制文件【1.尽量使用绝对路径   2.ADD 除了复制,还具备添加远程文件功能】
   #复制到/root
   ADD hello /root
   #添加根目录并解压
   ADD test.tar.gz / 
  • ENV- 设置环境常量 【尽量使用环境常量,可提高程序维护性】
    ENV JAVA_HOME /usr/local/openjdk8
    RUN ${JAVA_HOME}/bin/java -jar test.jar
  • EXPOSE - 暴露容器端口
    # 将容器内部端口暴露给物理机
    EXPOSE 8080  (docker run -p 8000:8080 tomcat)
  • RUN & CMD & ENTRYPOINT

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

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

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

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

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

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

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

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

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

参考链接:Dockerfile构建镜像及相关命令 - 码农岛 (manongdao.com)
posted @ 2022-04-07 17:35  liubingPersonalBlog  阅读(19)  评论(0)    收藏  举报