前言:
😄作者简介:小曾同学.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文件中输入以下内容
定义父镜像
FROM centos:7
定义作者信息
MAINTAINER zeng <2502441091@qq.com>
执行安装vim命令
RUN yum install -y vim
定义默认的工作目录
WORKDIR /usr/zeng
定义容器启动执行的命令
CMD /bin/bash
例如
第三步:使用docker build
构建镜像
docker build -f ./dockerfile-centos -t jenny_centos:1 .
第四步:查看镜像,并启动容器
docker images
docker run -it --name="jenny_centos" 镜像名
小伙伴们觉的不错的话,点赞收藏哦!