使用Dockerfile定制镜像

镜像的定制实际上就是定制每一层所添加的配置、文件。我们可以把每一层修改、安装、构建操作的命令都写入一个脚本,这个脚本就是 Dockerfile。

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

接下来我们以官方nginx镜像为例,使用Dockerfile来定制。

1、创建目录:
mkdir mynginx
cd mynginx/
2、创建文件:
touch Dockerfile
3、编辑文件:
vim Dockerfile
内容为:
FROM nginx
RUN echo ‘<h 1>Hello, Docker!<h 1>’ /usr/share/nginx/html/index.html
4、保存编辑的文件
5、在Docker文件所在目录执行:
docker build -t nginx:v3 .
6、查看镜像:
docker images
7、运行镜像:
docker run --name mynginx -p 80:80 mynginx:2.0
8、查看容器:
docker ps -a
9、进入容器:
docker exec -it mynginx /bin/bash

其他制作镜像方式

在这里插入图片描述

Dockerfile 指令详解

FROM 指定基础镜像
所谓指定镜像,一定是以一个镜像为基础,在其上进行定制。基础镜像是必须指定的,而FROM就是指定基础镜像,因此一个Dockerfile中FROM是必备的指令,并且必须是第一条指令。在Docker Hub上有非常多的高质量的官方镜像,有可以直接拿来使用的服务类的镜像,如nginx、redis、mysql、tomcat等;可以在其中寻找一个最符合我们最终目标的镜像为基础镜像进行定制。
如果没有找到对应服务的镜像,官方镜像中还提供了一些更为基础的操作系统镜像,如ubuntu、bebian、centos、alpine等,这些操作系统的软件库为我们提供了更广阔的扩展空间。

FROM scratch
除了选择现有镜像外,Docker还存在一个特殊镜像,名为scratch。这个镜像是虚拟的概念,并不实际存在,它表示一个空白的镜像。
如果你以scratch为基础镜像的话,意味着你不以任何镜像为基础,接下来所写的指令将作为镜像第一曾开始存在。
对于Linux下静态编译的程序来说,并不需要有操作系统提供运行时支持,所需的一切库都已经在可执行文件里了,因此直接FROM scratch会让镜像体积更加小巧。使用go语言开发的应用很多会使用这种方式来制作镜像,这也是为什么有人认为Go是特别适合容器微服务架构的语言的原因之一。

RUN执行命令
RUN指令是用来执行命令行命令的。由于命令行的强大能力,RUN指令在定制镜像时是最常用的指令之一。其格式有俩种:
shell 格式:RUN<命令>
RUN echo ‘<h 1>Hello,Docker!</h 1>’ > /usr/share/nginx/html/index.html
exec 格式:RUN[“可执行文件”,“参数1”,“参数2”]
RUN tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1
RUN make -C /usr/src/redis
RUN make -C /usr/src/redis install
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值