Docker学习笔记——轻量级虚拟化

前言

学习笔记,工作需要学习一下Docker,学习内容有

  • Docker官网
  • 尚硅谷Docker视频
  • https://juejin.im/post/5a43037b5188252bca05239a#heading-15(一,二,三讲的很清楚)
    [学的不深,仅供工作使用]

学习思路:找到了优秀的猿还原的老师上课的思维导图(b站搜尚硅谷docker很多优秀的朋友写了学习笔记),非常齐全。看看思维导图,定期问问自己问题。如果工作中遇到相关难点,会补充在这里。
ps:看视频真的费时间,可能最近太浮躁了吧,嫌看视频繁琐,看书又不能静下心。

Docker类比理解

建房子软件带环境安装
在一片空地上建房子在一个操作系统上配环境:依赖,各种库,程序
搬家了在另一台机子上配环境
房子镜像
装房子的背包仓库
拿出背包里的房子再复制一个房子容器

直接拎包入住,不会出现"在我的机器上可以跑,在你的机器上不能跑。"解决开发与运维的问题。
除系统核心外,需要的系统环境由下而上打包,做到应用程式跨平台无缝接轨运作。

Docker

个人心得:和git思路基本一致,与linux命令行差不多。容器,仓库,镜像,Dockerfile。容器和镜像是千层饼一样的东西[一层一层编译,节约],轻量级虚拟轻就轻在不用kernel,用宿主机的kernel。是个文件系统,union 文件系统。一个centos虚拟机(虚拟硬件,os,及一些应用)和一个centos镜像:用宿主机的kernel,rootfs(内核基础上多的一些配置让他变成了centos,基础少量)。

理解:ubuntu,centos这些linux的不同发行版本,可以看作(bootfs+rootfs+kernel)。其中只有rootfs不同。

Docker问答环节

  1. 虚拟机与Docker?
  2. 解决的问题:开发与运维
  3. Docker的本质:环境+应用
  4. 和房子的类比,和集装箱的类比(隔离)
  5. Docker架构图:镜像(本地),仓库,容器
  6. Docker是怎样工作的?
  7. Docker为什么比VM快?
  8. docker exec与docker attach的区别?
  9. 容器和主机的文件交互?cp(容器——>主机)&容器数据卷(指定两个文件夹进行互动)
  10. docker镜像是什么?
  11. docker镜像的加载原理?
  12. docker镜像为什么采用分层结构?
  13. docker容器数据卷两种添加方式?

Docker读书学习笔记

  1. 容器客居于操作系统,只能运行与底层宿主机相同或相似的操作系统(因为你要用他的内核)。比如在ubuntu服务器上运行Microsoft Windows是不行的
  2. 随着越来越多的技术引入,容器不再是单纯的运行环境,更像是一个完整的宿主机。与宿主机隔离更加彻底,有毒里的网络和存储栈,自己的资源管理能力。
  3. docker镜像是由文件系统叠加而成,最底端是引导文件系统,即bootfs。第二层是root文件系统rootfs。docker利用联合加载技术在rootfs上加载更多的read-only fs。[呼应了镜像是只读的,容器不过是在镜像最顶层加载一个读写文件系统]。联合加载将各层文件系统叠加
  4. 想在docker中运行的程序就是在读写层中执行的
  5. 如何理解**写时复制|copy-on-write?**修改一个文件,先找,从只读层复制到读写层,只读版本依然存在,但是被读写层中的该文件副本所隐藏。
  6. 以ubuntu为例,并不是一个完整的os,只是一个裁剪版本,仅包含最低限度的支持系统运行的组件。tag用于区分
  7. (都放在远端)用户仓库和顶层仓库:用户仓库放的是用户自己制作的镜像,未通过确认,可能有风险,顶层仓库=Docker公司+优质厂商管理,可基于这些镜像自己构建,顶层仓库保证了镜像是架构良好的,安全且最新的。还有存在本地的镜像,docker commit提交的镜像就在本地,push以后到达远端
  8. docker commit提交的只是创建容器的镜像与容器的当前状态之间有差异的部分,使得更新非常轻量。【轻量,资源共享…】
  9. DockerFile的构建:镜像——>(生成)容器-——>(对容器操作)——>(docker commit)新的镜像 循环。每一条RUN指令都要这么一次
  10. 对docker守护进程和C/S模式的理解:docker命令,你发出你需要的服务,守护进程完成(在docker服务器上),返回结果给你。比如docker build等【我的理解,不一定准确】
  11. Dockerfile和构建缓存:镜像层看做缓存,调试错误,会从正确的最后一个位置开始,节约大量时间,如果做了修改,从修改地方的前一个镜像开始构建。【再次提现千层饼资源共享,节约,不冗余各方面优势】,有时需要略过缓存功能,可以设置
  12. CMD指令:把运行的命令放在数组结构中,如果不按数组结构Docker会在命令前加上/bin/sh -c。所以建议数组语法设置。这个地方需要学习shell命令。一条CMD,多条CMD只有最后一条会执行。想在启动容器时运行多个进程或者多条命令,考虑Supervisor这样的服务管理工具。多条会覆盖只有最后一条有效,run指令+命令一样覆盖。
  13. ENTRYPOINT指令也是数组形式写,会把run后面的命令自觉加入数组结构,不覆盖。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值