Docker镜像的构建以及数据卷和端口映射

本文介绍了Docker的核心概念——镜像,详细讲解了镜像的分层原理以及如何创建镜像,包括基于已有镜像、本地模板和Dockerfile的创建方法。此外,还探讨了Docker数据卷的使用,特别是数据卷容器和端口映射的应用,以实现数据持久化和容器间的通信。最后,提到了私有仓库的建立,以便管理和分享镜像。
摘要由CSDN通过智能技术生成

前言

Docker 包含三个基本概念,分别是镜像(Image)、容器(Container)和仓库(Repository)。镜像是 Docker 运行容器的前提,仓库是存放镜像的场所,可见镜像更是Docker的核心。回到正题,Docker 镜像可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。要想更深入的了解 Docker 镜像,镜像的原理也必不可少,而这其中最重要的概念就是镜像层(Layers)(如下图)。镜像层依赖于一系列的底层技术,比如文件系统(filesystems)、写时复制(copy-on-write)、联合挂载(union mounts)等。镜像作为 Docker 最突出的创新之一,它变革了软件交付标准。理解镜像,对理解整个 Docker 的生命周期非常重要。

Docker镜像的分层

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

镜像创建

在这里插入图片描述
Docker镜像的创建方法

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

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

docker commit [选项] 容器ID/名称 仓库名称:[标签]
-m:说明信息
-a:作者信息
-p:生成过程中停止容器的运行

详细过程

[root@server1 ~]# docker commit -m "new" -a "zhong" 5ce0a250c414 centos:zhong
[root@server1 ~]# docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
centos                zhong               53d9614685d4        19 seconds ago      215MB
nginx                 latest              bc9a0695f571        32 hours ago        133MB
centos                latest              0d120b6ccaa8        3 months ago        215MB
paigeeworld/centos7   latest              4cbe7aa905e7        6 years ago         382MB

基于本地模板创建
[root@server1 ~]# cat debian-7.0-x86-minimal.tar.gz | docker import - docker:debi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值