docker实战

?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几乎无损耗。

你可能感兴趣的:(docker实战)