Docker Dockerfile(没写完)

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

使用Dockerfile定制镜像

定制一个nginx镜像(构建好的镜像内会有一个/user/share/nginx/html/index.html文件)

在一个空的目录下,新建一个名为Dockerfile文件,并在文件内添加以下内容:

FROM nginx
RUN echo '这是一个本地构建的nginx镜像' > /user/share/nginx/html/index.html

参数分析:

  • FROM:定制的镜像都是基于FROM的镜像,这里的nginx就是定制需要的基础镜像。后续的操作都是基于nginx。
  • RUN:用于执行后面跟着的命令行命令,有以下两种格式:
    shell格式:
RUN <命令行命令>
# <命令行命令> 等同于,在终端操作的shell命令

exec格式:

RUN ["可执行文件", "参数1", "参数2"]
# 例如:
# RUN ["./test.php", "dev", "offline"] 等价于 RUN ./test.php dev offline

注意:Dockerfile的指令每执行一次都会在docker上新建一层,所以过多无意义的层会造成镜像膨胀过大。例如:

FROM centos
RUN yum -y install wget
RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
RUN tar -xvf redis.tar.gz

以上会创建三层镜像,可简化为以下格式:

FROM centos
RUN yum -y install wget
    && wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz"
    && tar -xvf redis.tar.gz

如上,以&&符号连接命令,这样执行后,只会创建1层镜像。

开始构建镜像

在Dockerfile文件的存放目录下,执行构建动作。
以下实例,通过目录下的Dockerfile构建一个nginx:v3(镜像名称:镜像标签)

docker build -t nginx:v3 .

注:最后的.代表本次执行的上下文路径。

上下文路径

docker build -t nginx:v3 .

上下文路径是指docker在构建镜像,有时候想要使用到本机的文件(比如复制),docker build 命令得知这个路径后,会将路径下的所有内容打包。
解析:由于docker的运行模式C/S。我们本机是C,docker引擎是S。实际的构建过程是在docker引擎下完成的,所以这个时候无法用到我们本机的文件。这就需要把我们本机的指定目录下的文件一起提供给docker引擎使用。

指令详解

COPY

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

COPY [--chown=<user>:<group>]   <源路径>...<目标路径>

[--chown=:]:可选参数,用户改变复制到容器内文件的拥有者和数组。
例如:

COPY hom* /mydir/
COPY hom?.txt /mydir/
posted @   vetra  阅读(30)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示