docker容器 ———镜像制作

一、docker镜像

1.镜像的分层

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

  • Dockerfile中的每个指令都会创建一个新的镜像层
  • 镜像层将被缓存和复用
  • 当Dockerfile的指令修改了,复制的文件变化了,或者构建镜像时指定的变量不同了,对应的镜像层缓存就会失效
  • 某一层的镜像缓存失效之后,它之后的镜像层缓存都会失效
  • 镜像层是不可变的,如果在某一层中添加一个文件,然后在下一层中删除它,则镜像中依然会包含该文件。

在Dockerfile创建镜像过程中会产生临时容器缓存数据,但是创建完成后临时容器都会被删除。

2.docker镜像的创建方式

  • 基于已有镜像创建
  • 基于本地模板创建
  • 基于Dockerfile创建

3.Dockerfile

  • dockerfile文件结构

Dockerfile文件是由一组指令组成,文件结构分为四部分

① 基础镜像信息

② 维护者信息

③ 镜像操作指令

④ 容器启动时执行指令

  • dockerfile操作指令:
指令 含义
FROM 镜像 指定新镜像所基于的镜像,第一条指令必须为FROM指令,每创建一个镜像就需要一条FROM指令。
MAINTAINER 名字 说明新镜像的维护人信息
RUN命令 在所基于的镜像上执行命令,并提交到新的镜像中
CMD[“要运行的程序”," 参数1" “参数2”] 指令启动容器时要运行的命令或脚本,Dockerfile只能有一条CMD命令,如果指定多条则只能最后一条被执行
EXPOSE 端口号 指定新镜像加载到docker时要开启的端口
ENV 环境变量 变量值 设置一个环境变量的值,会被后边的RUN使用
ADD 源文件/目录 目标文件/目录 将源文件复制到目标文件,源文件要与Dockerfile位于相同目录中,或者是一个URL
COPY 源文件/目录 目标文件/目录 将本地主机上的文件/目录复制到目标地点,源文件/目录要与Dockerfile在相同的目录中
VOLUME [“目录”] 在容器中创建一个挂载点
USER 用户名/UID 指定运行容器时的用户
WORKDIR 路径 为后续的RUN、CMD、ENTRYPOINT指定工作目录
ONBUILD 命令 指定所生成的镜像作为一个基础镜像时所需要运行的命令
HEALTHCHECK 健康检查

二、创建镜像

1.基于已有的镜像容器进行创建

将容器中运行的程序及其环境打包生成新的镜像

格式:docker commit [选项] 容器ID/名称 仓库名称:[标签]

-m :说明信息

-a :作者信息

-p :生成过程中停止容器的运行

实例:

[root@localhost ~] # docker create -it centos:7 /bin/bash
6ac5bf4709ee39e9114ca118feae49b11d88f79a04d4970f2b322b911d6c3643
[root@localhost ~] # docker ps -a
CONTAINER ID   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要更新容器镜像,可以使用docker commit命令。这个命令可以根据当前容器制作一个新的镜像文件。例如,使用以下命令更新镜像: ``` docker commit -m="更新描述信息" -a="作者" 容器ID 新镜像名:标签 ``` 其中,-m参数用于提供更新的描述信息,-a参数用于指定镜像的作者,容器ID是要更新的容器的ID,新镜像名是你想要创建的目标镜像的名称,标签是镜像的标签。通过这个命令,你可以将容器中的更改保存为一个新的镜像,以便下次使用时使用最新的环境。\[2\] #### 引用[.reference_title] - *1* [docker 常用命令之镜像更新](https://blog.csdn.net/lybhit/article/details/122506469)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Docker基础知识及基本命令-2](https://blog.csdn.net/baidu_39236792/article/details/126102293)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [详解在docker中更新镜像——基于Prometheus](https://blog.csdn.net/sinat_16643223/article/details/120655976)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值