[云原生·Docker] Dockerfile制作镜像详解

发布于:2022-11-28 ⋅ 阅读:(267) ⋅ 点赞:(0)

前言:
😄作者简介:小曾同学.com,小伙伴们也可以叫我小曾,一个致力于测试开发的博主⛽️
如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。😊
座右铭:不想当开发的测试,不是一个好测试✌️。
如果感觉博主的文章还不错的话,还请点赞、收藏哦!👍

1. Dockerfile 概念

Dockerfile是一个文本文件,文本中包含了一条条的指令,根据每一条指令构建出一个新的镜像。
给大家展示一个例子就可以明白,例如 ubuntu 的 Dockerfile ,可以点击链接
ubuntu的dockerfile,或者进入官网hub.docker.com,搜想要了解的镜像即可。下图展示的是ubuntu对应的dockerfile。该dockerfile中有以下几个关键字构成。

FROM scratch   =>  scratch表示空镜像( Dockerfile 以 FROM 开头 )
ADD            =>  将包添加到当前跟目录下
RUN.           =>  执行命令,创建文件并写入内容
CMD            =>  容器启动命令 默认会执行 /bin/bash(所以有时我们在启动 Docker 时,可以不写 /bin/bash)

在这里插入图片描述

2. Dockerfile的优势

使用同一个Dockerfile 无论是开发人员、测试、还是运维人员,均可以提供了一个完全一致的开发环境。这样就不会出现“开发说在我这边好好的,怎么到你那边就不行”的问题。

3. Dockerfile常用关键字

关键字 作用 备注
FROM 指定父镜像 指定dockerfile基于哪个image构建
MAINTAINER 作者信息 用来标注dockerfile是谁写的
LABEL 标签 用来标明dockerfile的标签,可以使用label标签代替Maintainer
RUN 执行命令 执行一段命令,默认是/bin/sh格式,
CMD 容器启动命令 启动容器时的默认命令,和ENTRYPOINT配合使用,
ENTRYPOINT 入口 一般在制作一些执行关闭的容器中使用
COPY 复制文件 build的时候复制文件到image中
ADD 添加文件 build的时候添加文件到image中,可以来源于远程服务
ENV 环境变量 指定build时的环境变量,可以在启动容器时时候,通过-e覆盖
ARG 构建参数 只在构建的时候使用的参数,如果有ENV,那么ENV的相同名字的值始终覆盖arg的参数
VOLUME 定义外部可以挂载的数据卷 指定build的image那些目录可以启动时华仔到文件系统中,启动容器时使用-v绑定
EXPOSE 暴露端口 定义容器运行时监听的端口,启动容器 使用-p来绑定暴露端口
WORKDIR 工作目录 指定容器内部的工作目录,如果没有创建则自动创建,如果指定/使用的是绝对地址,如果不是/开发,那么是在上一条workdir的路径的相对路径
USER 指定执行用户 指定build或者启动时用户在RUN CMD ENTRYPONT执行的时的用户
HEALTHCHECK 健康检查 指定检测当前容器的健康检测命令,基本上没用,因为应用本身有健康检测机制
ONBUILD 触发器 当存在ONBUILD关键字的镜像作为基础镜像的时候,当执行FROM完成之后,会执行ONBUILD的命令,但是不影响当前镜像,用处不大
STOPSIGNAL 发送信息量到宿主机 该STOPSIGNAL指令设置将发送到容器的系统调用信息以退出
SHELL 指定执行脚本的shell 指定RUN CMD ENTRYPOINT执行命令的时使用的shell

4. Dockerfile的使用

4.1 案例需求

1. 自定义centos镜像
2. 默认登录路径为/usr/zeng
3. 可以使用vim

4.2 实现步骤

第一步:创建一个dockerfile名为 dockerfile-centos

第二步:在dockerfile-centos文件中输入以下内容

  1. 定义父镜像

    FROM centos:7
    
  2. 定义作者信息

    MAINTAINER zeng <2502441091@qq.com>
    
  3. 执行安装vim命令

    RUN yum install -y vim
    
  4. 定义默认的工作目录

    WORKDIR /usr/zeng
    
  5. 定义容器启动执行的命令

    CMD /bin/bash
    

例如

在这里插入图片描述
第三步:使用docker build 构建镜像

docker build -f ./dockerfile-centos -t jenny_centos:1 .

在这里插入图片描述

第四步:查看镜像,并启动容器

docker images

docker run -it --name="jenny_centos" 镜像名

在这里插入图片描述

小伙伴们觉的不错的话,点赞收藏哦!


网站公告

今日签到

点亮在社区的每一天
去签到