• Dockerfile 编写规范整理


    什么是 Dockerfile?

    相关文章:Docker 常用命令总结

    Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

    说到底,Dockerfile 就是一个名为 Dockerfile 且没有后缀名的文本文件,在 Linux 中,使用 vim Dockerfile,即可创建一个 Dockerfile。

    一个 Dockerfile 示例

    通过一个示例,来学习如何编写 Dockerfile。

    先通过 vim Dockerfile, 创建 Dockerfile,再写入如下内容:

    # 这是基础镜像
    FROM centos:7.6.1810
    
    # 将元数据添加到镜像, LABEL 是键值对。
    LABEL "author"="you170917"
    LABEL "version"="1.0"
    LABEL "email"="you170917@gmail.com"
    
    # 将当前目录下的 jar 包添加进来,并重命名
    ADD readinglist-0.0.1-SNAPSHOT.jar readinglist.jar
    
    # 将当前目录下的 jdk 包添加进来,重命名,再配置环境变量
    ADD jdk1.8.0_261 jdk8
    ENV PATH jdk8/bin:$PATH
    
    # 配置环境变量支持中文
    ENV LANG="en_US.UTF-8"
    
    # 暴露 8080 端口
    EXPOSE 8080
    
    # 运行时的命令
    ENTRYPOINT ["java","-jar","readinglist.jar"]
    

    除了上面使用到的指令,Dockerfile 还有如下指令:

    RUN

    用于执行后面跟着的命令行命令,有以下俩种格式:

    shell 格式:

    RUN <命令行命令>
    # <命令行命令> 等同于,在终端操作的 shell 命令。
    

    exec 格式:

    RUN ["可执行文件", "参数1", "参数2"]
    

    COPY

    复制指令,从上下文目录中复制文件或者目录到容器里指定路径。

    CMD

    类似于 RUN 指令,用于运行程序,但二者运行的时间点不同:

    • CMD 在docker run 时运行。
    • RUN 是在 docker build。

    作用:为启动的容器指定默认要运行的程序,程序运行结束,容器也就结束。CMD 指令指定的程序可被 docker run 命令行参数中指定要运行的程序所覆盖。

    注意:如果 Dockerfile 中如果存在多个 CMD 指令,仅最后一个生效。

    VOLUME

    定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷。

    格式:

    VOLUME ["<路径1>", "<路径2>"...]
    VOLUME <路径>
    

    在启动容器 docker run 的时候,我们可以通过 -v 参数修改挂载点。

    WORKDIR

    指定工作目录。用 WORKDIR 指定的工作目录,会在构建镜像的每一层中都存在。(WORKDIR 指定的工作目录,必须是提前创建好的)。

    docker build 构建镜像过程中的,每一个 RUN 命令都是新建的一层。只有通过 WORKDIR 创建的目录才会一直存在。

    格式:

    WORKDIR <工作目录路径>
    

    通过 Dockerfile 部署运行 jar 包

    主要分为三步:

    1、编写 Dockerfile

    2、构建镜像

    3、运行容器

    这里,就使用上面那个 Dockerfile 。

    先构建镜像:

    docker build -t readinglist:2.0 .
    
    • docker build 是构建镜像的初始命令

    • -t readinglist:2.0 :指定镜像的名字和版本号,可任意取

    • 最后的 . 表示 Dockerfile 在当前目录下

    运行容器

    docker run --name=read -p 8000:8080 --restart=always -d readinglist:2.0
    
    • docker run:是运行容器的初始命令

    • --name=read:表示容器的名字叫做 name

    • -p 8000:8080:表示将主机 8000 端口,映射到容器内的 8080 端口

    • --restart=always:表示让容器一直运行

    • -d:表示容器后台运行

    • readinglist:2.0 这是运行容器的基础镜像和版本号

    参考资料

    Dockerfile参考 - 官方文档

    Dockerfile - 菜鸟教程

    Dockerfile编写规范 - 博客园

    Docker部署jar包运行 - CSDN

    每天学习一点点,每天进步一点点。

  • 相关阅读:
    sklearn—支持向量机
    sklearn—LinearRegression,Ridge,RidgeCV,Lasso线性回归模型简单使用
    技术文档翻译-------glove readme(1)
    python jieba分词(结巴分词)、提取词,加载词,修改词频,定义词库 -转载
    Word2Vec模型参数 详解
    aws ec2 硬盘扩容
    记一个python requests模块请求的报错
    ubuntu安装mysql, 修改初始密码一条龙服务
    mysql 创建用户, 分配权限, 删除用户
    sqlite删除数据
  • 原文地址:https://www.cnblogs.com/youcoding/p/13815512.html
Copyright © 2020-2023  润新知