docker(三)定制私有镜像

Docker的整个生命周期由三部分组成:镜像(image)+容器(container)+仓库(repository)。
容器等于镜像加上可读层,容器是由镜像实例化而来的。以java类比来说,镜像是类,容器是对象,容器是基于镜像创建的,即容器中的进程依赖于镜像中的文件。

镜像的定制实际上就是定制每一层所添加的配置、文件。我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,这个脚本就是 Dockerfile。
Dockerfile 是一个文本文件,其内包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。

定制镜像,是以一个镜像为基础,在其上进行定制。

我们以tomcat为例,在tomcat镜像里定制一个index.html文件:
1、创建 Dockerfile 文件

mkdir -p /data/mytomcat
cd mytomcat/
vim Dockerfile

2、Dockerfile内容为

FROM tomcat
RUN mkdir -p /data/tomcat/webapps/ROOT/
RUN echo 'He1lo  Docker' > /data/tomcat/webapps/ROOT/index.htm1
WORKDIR /data/tomcat/webapps/

FROM:指定基础镜像。

除了选择现有镜像为基础镜像外,Docker 还存在一个特殊的镜像,名为 scratch。这个镜像是虚拟的概念,并不实际存在,它标识一个空白的镜像。
如果以 scratch 为基础镜像的话,意味着你不以任何镜像为基础,接下来所写的指令将作为镜像的第一层开始存在。

RUN :执行命令。
WORKDIR :指定工作目录,没有则创建。

3、构建镜像
在 Dockerfile 文件所在目录执行:

docker build -t mytomcat:v1 .

构建一个名为mytomcat,版本号为V1的镜像。.是指明Dockerfile文件在哪个路径之下,因为我们是在当前路径下创建的,所以只需要填写.就好。
构建成功后,docker images查询如下:
在这里插入图片描述
4、Dockerfile指令总结

FROM 指定基础镜像来源
RUN 执行命令,可以使用shell格式或exec格式
COPY 拷贝文件
ADD 拷贝文件并解压
CMD 容器启动命令
ENV 设置镜像环境变量
USER 指定使用的账号,需要在构建时使用useradd创建用户才能使用
ARG 构建参数,类似ENV,但只在Dockerfile构建镜像时参数生效,完成的镜像内部不存在此参数
EXPOSE 声明端口号
ENTRYPOINT 命令入口点
WORKDIR 指定工作目录
VOLUME 指定匿名数据卷,在未使用-v定义数据卷时自动挂载到匿名卷,避免相关数据因容器重启而丢失
HEALTHCHECK 健康检查,用于运行在容器内的进程状态检查
ONBUILD 用于延迟构建命令的执行

详细请参考:https://www.yisu.com/zixun/573807.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值