?xml version="1.0" encoding="UTF-8"?
1.虚拟化技术是为了实现分时复用的技术。为了在一台物理机上跑更多的进程,并保证进程之间相互不影响。虚拟技术分为硬件虚拟和软件虚拟。硬件虚拟主要在操作系统层面,主要有VM,vritualBox等。软件虚拟是在操作系统上层应用部分进行虚拟。主要代表有docker。
2.镜像是docker里的文件系统。
3.docker是运行在操作系统里的一个进程,只是对资源进行了隔离和限制。三大核心功能:CGroups用来限定一个进程资源的使用情况。 当用户修改一个image时,一个新的层就会建立,这是一种增量式的修改,只需要发布差异,因此速度非常快。
docker exec 可以在指定的容器里运行命令。
用户自定义网络:桥接网络/Overlay网络/插件网络。
桥接网络形成一个私网,相互之间可以通信。
Overlay网络是一种虚拟交换技术,解决不同IP段的通信问题。
数据卷:提供一种主机和容器共享数据的方式。即使容器删除了,但是这部分的数据卷还保留着,因此特别要注意,避免产生垃圾数据。
4.docker commit之后就变成了image。
5.存储方式:
镜像层是只读的,可以共享,容器层是可写的。采用预分配存储空间的方式。容器在运行时,会生成一个容器层。镜像层采用加密哈希算法生成UUID,而容器层会随机分配一个UUID。
docker在管理镜像和容器时,使用写时复制技术。节约了镜像的存储空间,加快了容器的启动速度。
docker使用数据卷保证数据的持久性。
AUFS:在多个运行的容器中共享镜像,加速容器启动,节约存储空间。底层采用分页缓存技术。从镜像层复制文件到容器层。
Devicemapper:是对块设备进行操作。使用的数据块大小为64KB,每次分配的最小数据为64KB。
Btrfs:已经进入Linux内核中,很稳定。不支持共享页缓存,会造成N个容器访问同一个文件,需要在内存中保存该文件的N个复制文件。块的到小为1G。
6.docker daemon
修改的三种方式:命令行修改,修改启动项和修改配置文件。后面两种在生产环境建议使用。
用户建立自己的私有镜像仓库时,可以保证时安全的。一般不会设置TLS,如果从这些镜像仓库下载,需要把镜像仓库添加到—insecure-registry中。
系统会重新利用之前已经删除的文件占用空间,就像处理脏数据一样,一开始不回收,当空间不足的时候,系统会清理脏数据,释放空间。
7.编写dockerfile。
应该在尽量干净的目录下编译镜像,因为他会扫描系统上的所有文件。
8.docker过程中需要注意的事项:
每个容器只运行一个进程,多个容器可以使用link进行关联。
使用/把长的指令分成多行。
docker对CPU几乎无损耗。