dockerfile构建镜像的命令_Dockerfile命令(上)

本文介绍了Dockerfile的用途和基本结构,通过实例展示了如何创建和使用Dockerfile来定制nginx镜像。重点讲解了FROM、RUN、MAINTAINER和LABEL指令的用法,以及如何通过RUN指令执行多条命令。此外,还提及了Docker镜像的构建、查看和运行。Dockerfile使得镜像构建过程更加透明、可重复且易于管理。
摘要由CSDN通过智能技术生成

Dockerfile简介

  • Dockerfile 是一个文本文件,其内包含了一条条的指令Instruction,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。

  • 我们可以使用Dockerfile定制镜像,镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像,那么无法重复的问题、镜像构建透明性的问题、体积的问题就都会解决。

Dockerfile制作

这里我们以制作nginx镜像为例子,首先我们创建一个自定义nginx目录,然后创建Dockerfile文件。

mkdir mynginx 
cd mynginx
touch Dockerfile

然后在Dockerfile进行编辑,替换原始的nginx页面内容

FROM nginx 
RUN echo '

Hello, Docker!

' > /usr/share/nginx/html/index.html

关于上面中的命令FROMRUN 后面我们会进行详细讲解。

编译Dockerfile

mgtv@ubuntu:~/mynginx$ sudo docker build -t nginx:V1 .
[sudo] password for mgtv:
Sending build context to Docker daemon 2.048kB
Step 1/2 : FROM nginx
---> 62f816a209e6
Step 2/2 : RUN echo '

hello,Dcoker!

' > /usr/share/nginx/html/index.html
---> Running in 24c99f45946b
Removing intermediate container 24c99f45946b
---> 2010f87c2c59
Successfully built 2010f87c2c59
Successfully tagged nginx:V1
  • -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。

  • 最后的.号,其实是在指定镜像构建过程中的上下文环境的目录

查看制作好的ngnix镜像

mgtv@ubuntu:~/mynginx$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx V1 2010f87c2c59 2 minutes ago 109MB
ubuntu latest 4c108a37151f 3 weeks ago 64.2MB

运行新的镜像,打开地址:ip:8081即可看到最新修改之后的效果

sudo docker run --name ngnix_v1 -d -p 8081:80 nginx:V1

90365463fa9be6568e73f5b35f8348ec.png

Dockerfile 命令

FROM 指定基础镜像

所谓定制镜像,那一定是以一个镜像为基础,在其上进行定制。就像我们之前运行 了一个 nginx 镜像的容器,再进行修改一样,基础镜像是必须指定的。而 FROM 就是指定基础镜像,因此一个 Dockerfile 中 FROM 是必备的指令,并 且必须是第一条指令。

FROM nginx

Docker 还存在一个特殊的镜像,名为 scratch 。这个镜像是虚拟的概念,并不实际存在,它表示一个空白的镜像。

FROM scratch

MAINTAINER 设置镜像作者

我们设置了镜像的作者后,可以通过 docker inspect 命令查看镜像的信息,里面包含有作者信息。

命令格式如下:

MAINTAINER  <name>

例如我们创建Dockerfile内容如下:

FROM nginx
MAINTAINER sutune@qq.com

编译之后查看镜像信息

docker@default:~/mynginx$ docker build -t nginx:sutune . #编译镜像
Sending build context to Docker daemon 2.048kB
Step 1/2 : FROM nginx
---> 98ebf73aba75
Step 2/2 : MAINTAINER sutune@qq.com
---> Running in 23ebc293468b
Removing intermediate container 23ebc293468b
---> 4aaf6df34e72
Successfully built 4aaf6df34e72
Successfully tagged nginx:sutune
docker@default:~/mynginx$ docker inspect nginx:sutune #查看镜像信息

返回内容会比较多,我们截取部分查看,从返回的内容中找到Author对应的值,我们可以看到设置的作者信息已经生效。

"DockerVersion": "18.06.1-ce",
"Author": "sutune@qq.com",

LABEL 镜像标签

用来标明dockerfile的标签 可以使用Label代替Maintainer 最终都是在docker image基本信息中可以查看,命令格式如下:

LABEL = = = ...
LABEL version="1.0" description="nginx服务定制" #示例

使用LABEL指定元数据时,一条LABEL指定可以指定一或多条元数据,指定多条元数据时不同元数据之间通过空格分隔。推荐将所有的元数据通过一条LABEL指令指定,以免生成过多的中间镜像。

RUN

RUN 指令是用来执行命令行命令的。由于命令行的强大能力, RUN 指令在定制 镜像时是最常用的指令之一。其格式有两种:

  • shell 格式: RUN  ,就像直接在命令行中输入的命令一样。刚才写的 Dockrfile 中的 RUN 指令就是这种格式。

RUN echo '

Hello, Docker!

' > /usr/share/nginx/html/index.html
  • exec 格式: RUN ["可执行文件", "参数1", "参数2"] ,这更像是函数调用中 的格式。

  • 如果需要执行多个命令可以使用&&将命令串联起来,

FROM debian:jessie
RUN buildDeps='gcc libc6-dev make' \
&& apt-get update \
&& apt-get install -y $buildDeps \
&& wget -O redis.tar.gz "http://download.redis.io/releases/r
edis-3.2.5.tar.gz" \
&& mkdir -p /usr/src/redis \
&& tar -xzf redis.tar.gz -C /usr/src/redis --strip-component
s=1 \
&& make -C /usr/src/redis \
&& make -C /usr/src/redis install \
&& rm -rf /var/lib/apt/lists/* \
&& rm redis.tar.gz \
&& rm -r /usr/src/redis \
&& apt-get purge -y --auto-remove $buildDeps

命令的最后--auto-remove $buildDeps添加了清理工作的命令,删除了为了编译构建 所需要的软件,清理了所有下载、展开的文件,并且还清理了 apt 缓存文件。

更多干货

  • Docker简介

  • Docker 安装

  • Docker镜像

  • Python装饰器

  • Docker容器

  • Python实现LDAP认证

  • 接口Mock利器——Json Server

  • Locust接口性能测试

  • Python接口测试数据管理

  • Restful接口开发与测试—接口测试

  • Restful接口开发与测试—集成Swagger

  • Restful接口开发与测试—Django安装

  • Jmeter+Ant+Jenkins接口自动化测试平台

  • Postman批量执行与集成Jenkins

  • Mac 环境Appium自动化测试环境搭建

  • 众里寻他千百度—Appium Android 元素定位方式

  • Android自动化测试设备弹窗处理

  • Appium iOS 元素定位与操作

afd139bd0ff65f486128f7080b04346c.png

关注公众号,更多干货秒得到

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值