docker镜像介绍_Dockerfile详解、构建nginx镜像、镜像优化

本文详细介绍了Docker镜像的分层结构及其优势,探讨了通过docker commit和Dockerfile两种方式构建镜像,并深入解析了Dockerfile常用指令。接着,通过构建nginx镜像的实践,展示了如何操作容器和数据卷。最后,讨论了镜像优化技术,包括选择精简基础镜像、减少层数、清理中间产物以及多阶段构建等策略,以实现更小、更高效的镜像。
摘要由CSDN通过智能技术生成

一、镜像的分层结构

1、共享宿主机的kernel
2、base镜像提供的是最小的Linux发行版
3、同一docker主机支持运行多种Linux发行版
4、采用分层结构的最大好处是:共享资源
在这里插入图片描述
5、Copy-on-Write 容器层可写
6、容器层以下所有镜像层都是只读的
7、docker从上往下依次查找文件
8、容器层保存镜像变化的部分,并不会对镜像本身进行任何修改
9、一个镜像最多127层
在这里插入图片描述

二、镜像的构建

1、docker commit 构建

用docker commit 构建镜像分为三步:
(1)运行容器
(2)修改容器
(3)将容器保存为新的镜像
-it:交互方式,Ctrl+D:退出容器,Ctrl+p+q:退出时让容器在后台运行

docker load -i busybox.tar  ##导入镜像
docker run -it --name test busybox:latest  ##以交互方式运行容器

echo helloworld > testfile  ##在容器中执行命令

docker commit test test:v1  ##容器保存为新的镜像
docker images  ##查看镜像

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

2、Dockerfile 构建

(1)创建一个Dockerfile

mkdir docker
vim docker/Dockerfile

FROM busybox
RUN echo westos > testfile

(2)构建镜像

docker build -t test:v2 /root/docker/
docker images

在这里插入图片描述

3、查看镜像的分层结构

  • 镜像都为三层结构,用docker commit创建的镜像容器层不会显示具体的操作命令,用Dockerfile创建的镜像容器会显示具体的操作命令
  • 删除镜像实质是删除了容器层,再次创建只是添加了容器层
docker history test:v2

在这里插入图片描述

docker history test:v2
docker rmi test:v2
docker history busybox:latest

在这里插入图片描述

三、Dockerfile详解

1、Dockerfile常用指令

  • FROM
    指定base镜像,如果本地不存在会从远程仓库下载
  • MAINTAINER
    设置镜像的作者,比如用户邮箱等
  • COPY
    把文件从建立Dockerfile的目录复制到镜像
    支持两种形式:COPY src destCOPY ["src", "dest"]
    src必须指定建立Dockerfile的目录中的文件或目录
echo hello linux > index.html
vim Dockerfile

FROM busybox
RUN echo westos > testfile  ##RUN后面可以跟shell语句
RUN echo hello word > testfile1
COPY index.html /  ##COPY复制当前目录的index.html到容器的根目录下

docker build -t test:v3 /root/docker/  ##构建容器
docker run -it --name test test:v3  ##运行容器

在这里插入图片描述

  • ADD
    用法与COPY类似,不同的是src可以是归档压缩文件,文件会被自动解压到dest,也可以自动下载URL并拷贝到镜像:
    ADD html.tar /var/www
    ADD http://ip/html.tar /var/www
vim Dockerfile

FROM busybox
RUN echo westos > testfile
RUN echo hello word > testfile1
COPY index.html /
ADD nginx-1.20.1.tar.gz /

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值