docker镜像创建以及搭建registry私有仓库

本文详细介绍了Docker镜像的分层结构及其好处,并讲解了三种创建镜像的方法,特别是基于Dockerfile的创建过程。此外,还阐述了如何搭建registry私有仓库,以及讨论了Docker数据卷、数据容器卷的作用和容器间的通信方式。
摘要由CSDN通过智能技术生成

一、docker镜像分层

docker里的镜像绝大部分都是在别的镜像的基础上去创建的,也就是使用镜像的分层结构。一个docker镜像由多个可读的镜像层组成,然后运行的容器会在这个docker的镜像上面多加一层可写的容器层,任何的对文件的更改都只存在此容器层。因此任何对容器均不会影响到镜像。如果需要获取某个文件,那么容器会从上到下去下一层的镜像层去获取文件,如果改层文件不存在,那么就会去下一层镜像层去继续寻找,直到最后一层。对于用户而言,用户面向的是一个叠加后的文件系统。
在这里插入图片描述

二、镜像分层的好处

1、基本上每个软件都是基于镜像去运行的,因此一旦某个底层的环境处了故障,就不需要去修改全部基于这个镜像的软件的镜像,只需要修改底层环境的就好了

2、资源共享。其他相同环境的软件镜像都共同去享用同一个环境镜像,而不需要每个软件镜像去创建一个底层环境。

三、docker镜像的创建方法

3.1 基于已有的镜像容器创建

[root@localhost ~]# docker commit -m "test" -a "yun" 41 nginx:new 
sha256:aabae718c1f67ec9fcd3264e350721c95422cb155820a9321cdfe72649c4ef96
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginx        new       aabae718c1f6   2 seconds ago   133MB
nginx        latest    871e34536e32   3 minutes ago   133MB

3.2 基于本地模板创建

[root@localhost ~]# ll
total 964
-rw-------. 1 root root   1259 Feb 18 21:09 anaconda-ks.cfg
-rw-r--r--. 1 root root 981687 Mar 11 10:12 nginx-1.12.2.tar.gz
[root@localhost ~]# cat nginx-1.12.2.tar.gz | docker import - nginx:newsha256:f8ddca0f19d9ca95049ecffa743c6bcf5548e82509a1ca06266a34c3a2c36d9e
[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
nginx        new       f8ddca0f19d9   7 seconds ago   5.8MB

3.3 基于Dockerfile创建

3.3.1 什么是dockerfile?

dockerfile是一个包含用于组合映像的命令文本文档。可以使用在命令行中调用任何命令。docker通过读取dockerfile中的指令自动生成映像。docker bulid命令用于从dockerfile构建映像。可以在docker build命令中使用-f标志指向文件系统中任何位置的dockerfile

3.3.2 dockerfile的基本机构

dockerfile一般分为四个部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行的指令。“#”为dockerfile中的注释

3.3.3 dockerfile常用的指令

  • FROM——指定基础镜像,必须为第一个命令
## 格式
   FROM <image>
   FROM <image>:<tag>
   FROM <image>@<digest>

## 注意:tag或digest是可选的,如果不使用这两个值时,会使用latest版本的基础镜像
  • MAINTAINER: 维护者信息
 MAINTAINER <name>
  • RUN:构建镜像时执行的命令
    run用于在镜像容器中执行命令,有两种命令执行方式:
## shell执行
RUN <command>
## exec执行
RUN ["executable", "param1", "param2"]

## 注意:RUN指令创建的中间镜像会被缓存,并会在下次构建中使用。如果不想使用这些缓存镜像,可以在构建时指定--no-cache参数
  • ADD:将本地文件添加到容器中,tar类型文件会自动解压(网络压缩资源不会被解压),可以访问网络资源,类似wget
    ADD <src>... <dest>
    ADD ["<src>",... "<dest>"] 用于支持包含空格的路径
  • COPY:功能类似ADD,但是是不会自动解压文件,也不能访问网络资源
  • CMD:构建容器后调用,也就是在容器启动时才进行调用
    CMD ["executable","param1","param2"] (执行可执行文件,优先)
    CMD 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值