LLEARNING NOTES

技术 · 思考 · 实践 · 成长

首页/Docker/正文

Docker Dockerfile 创建镜像

Docker658 次阅读

一、什么是Dockerfile

用来构建镜像文本文件,主要用来灵活方便构建自己需要的镜像


二、创建Dockerfile的步骤


通过dockerfile自定义的镜像后,使用 docker build 构建镜像

然后采用 docker save的命令打包

最后可以通过docker push 提交到私有镜像仓库或者 Docker Hub 



总结,构建镜像三部曲 

1、构建Dockerfile 文件

2、采用docker build 构建镜像

3、采用docker run 依据镜像运行容器 


Dockerfile 需要注意的编写规范:

1、# 表示注释

2、命令必须要大写 最少要带一个参数

3、执行顺序从上到下


三、dockerfile 构建镜像的格式

docker build -t 镜像名:版本号  Dockerfile路径

实例:. 表示当前路径

docker build -t work:v1 . 


四、Dockerfile的组成

主体内容四部分:基础镜像信息、维护者信息、镜像操作指令、和容器启动时执行指令


五、指令说明


FROM  指定构建新image是使用的基础image,必须是Dockerfile第一个有效指令,定义一个基础镜像
LABEL 附加到image之上的元数据,键值格式
ENV  键值对格式设定环境变量,可被其后的指令所调用,且基于新生成的image运行的Container中也会存在这些变量
RUN  以FROM中定义的image为基础环境运行指令命令,生成结果将作为新image的一个镜像层,并可由后续指令所使用。RUN后跟要执行的命令。
CMD  基于dockerfile生成的image运行的container时,CMD能够指定容器中默认运行的程序,因而其只应该定义一次。
ENTRYPOINT 类似cmd指令的功能,但不能被命令行指定要运行的应用程序覆盖,且与cmd共存时,cmd的内容将作为该指令中定义的程序的参数
WORKDIR 为RUN  CMD  ENTRPOINT COPY 和 ADD等指令设定工作目录
COPY 复制主机上或者前一阶段结果中文件或目录生成新的镜像层
ADD 与COPY指令相似,但ADD额外也支持使用URL指定的资源作为源文件
VOLUME  指定基于新生成的image运行Container时期望作为Volume使用的目录
EXPOSE 指定基于新生成的Image运行Container时期暴露的端口,但实际暴露与否取决于 docker run 命令选项 
USER  为Dockerfile中该指令后面的RUN、CMD和ENTRYPOING指令中要运行的应用程序指定运行者身份UID,以及一个可选的GID
ARG  定义专用于build过程中的变量,但仅对该指标之后的调用生效,其值可由命令行选项 --build-arg进行传递 
SEHLL 为容器定义运行时使用的默认shell程序,Linux系统默认使用["/bin/sh","-c"] windows默认使用["cmd","/S","/C"]



image.png


六、指令说明

1、FROM 

作用: 指定基础镜像,必须为第一个命令

格式: 

FROM <image> 

FROM <image>:<tag>

FROM <image>@<digest>

实例: 

FROM mysql5.6

注:

tag 或 digest 是可选的,如果不指定,将使用latest版本的基础镜像

2、RUN 

作用: 构建镜像时执行命令

格式: 

RUN <command>

格式:

RUN ["executable", "param1", "param2"]

实例: 

RUN ["executable", "param1", "param2"]

RUN apk update

RUN ["/etc/execfile", "arg1", "arg2"]

注意: 

RUN 指令创建的中间镜像会被缓存,并在下次构建中使用。如果不想使用这些缓存镜像,

可以在构建时指定 --no-cache 参数,如:docker build --no-cache


七、构建一个Ubuntu Dockerfile

FROM ubuntu:22.04

RUN apt-get -y update &&  \
    apt-get -y upgrade  && \
    apt-get instal -y   && \
    cmake git vim curl wget && \
    net-tools openssh-server && \ 
    apt-get install -y build-essential && \
    apt-get install -y python3
docker build -t myubuntu:v1 .


梦想在远方闪烁,脚步则需踏实前行。

评论交流

理性讨论,共同进步
验证码

相关文章

继续阅读