Docker基础知识-学习笔记

本文介绍了Docker的三大要素——Images、Containers和Registry,深入讲解了UnionFS及其在Docker镜像中的作用。Docker采用分层结构以实现资源共享和效率提升。此外,还讨论了如何自定义Docker镜像、容器数据卷的持久化以及Dockerfile中的关键指令,如FROM、RUN、EXPOSE和VOLUME。
摘要由CSDN通过智能技术生成

Docker三要素

  • Images:镜像,是容器的一个“静态版本”,即容器可操作,而镜像不可操作。

  • Containers:容器,是镜像的一个运行实例,一个简易版的Linux环境和运行在其上面的应用程序。

  • Registry:仓库,上面存放着各种各样的镜像版本供用户下载。



UnionFS(联合文件系统)

UnionFS是一种分层,轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层叠加。同时可以将不同目录挂载到同一个虚拟文件系统下。Union文件系统是Docker镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。

特性:一次加载多个文件系统,但是在外部看来,只能看到一个文件系统,联合文件系统加载各层文件并叠加起来,这样最终的文件系统会包含

  • BootFS主要包括BootLoaderKernelBootLoader主要是引导加载KernelLinux刚启动时会加载BootFS文件系统,Docker最底层就是BootFS这一层与典型的Linux/Unix系统是一样的,包括BootLoaderKernel。当BootLoader加载完Kernel之后,整个内核就在内存中了,此时内存使用权由BootLoader交由Kernel,此时系统将卸载Kernel
  • RootFS包含了Linux系统的/dev, /proc, /bin, /etc, /usr等标准目录和文件,即Linux系统不同的发行版本,如CentOSUbuntu等。
  • Docker中的Linux镜像之所以小,是因为可以与宿主机子公用BootFS内核部分,而镜像只需要提供不同发行版本不同的RootFS即可。



Why?为什么Docker要使用这种分层结构?

为了资源共享,每个单独镜像所包含的文件并不是绝对独立的,比如ZookeeperTomcat,他们都依赖于CentOSKernel内核与JDK,则他们会进行资源共享,共同用同一份资源,节省了资源。



Docker自定义镜像

  • docker commit
  • 通过编写docker filedocker build

Docker容器数据卷Volume

Docker容器数据持久化与数据共享

  • 数据持久化(将Docker容器数据与宿主机文件进行共享传递)
    • docker run -v [宿主机文件夹]:[docker容器内文件夹] [image]:[version]
    • 编写dockerfile-volumes创建多个数据卷文件夹
  • 数据共享
    • docker run -it --name xxx volumes-from xxx [image]:[version]实现继承
    • 继承的父子容器间(整个有关联到的继承体系)都存在数据卷共享
    • 数据卷的生命周期一直持续到没有容器使用它为止

Docker 保留字指令

  1. FROM

    基础镜像

  2. MAINTAINER

    镜像维护者的姓名与邮箱

  3. RUN

    容器构建时需要运行的命令

  4. EXPOSE

    对外暴露端口

  5. WORKDIR

    初始化容器之后默认进入的目录

  6. ENV

    在构建镜像的过程设置环境变量

  7. COPY

    将文件拷贝进镜像内

  8. ADD

    将文件拷贝进镜像内,并解压缩

  9. VOLUME

    容器数据卷,用于数据保存和持久化工作

  10. CMD

    指定一个容器启动时要运行的命令, dockerfile中可以有多个CMD指令,但只有最后一个会生效,CMD会被docker run 之后的参数所替换

  11. ENTRYPOINT

    指定一个容器启动时要运行的命令,ENTRYPOINT目的与CMD一样,都是在指定容器启动程序及参数,但是ENTRYPOINT不会覆盖之前的参数,而是追加

  12. ONBUILD

    当构建一个子镜像继承于父镜像时,父镜像在被子镜像继承后,父镜像的ONBUILD命令触发

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值