美文网首页docker程序员工具癖
docker,你真正懂了吗?

docker,你真正懂了吗?

作者: robot_test_boy | 来源:发表于2018-01-19 22:47 被阅读1276次

    docker是PaaS提供商dotCloud开源的一个基于LXC的高级容器引擎,基于go语言并遵循Apache2.0协议,源码托管于GitHub

    docker解决什么问题

    docker解决什么问题?容器是怎么运行的?和虚机有什么不同?老外眼里的container是集装箱不是中国人说的容器。docker有哪些优缺点?

    容器和虚机的不同

    虚机有自己的OS操作系统,独立于主机OS,宿主型hypervisor将虚机当作一个个进程运行在主机上,虚机内核可以和主机不同。

    宿主型hypervisor包括开源OpenStack的kvm,VMware的vSphere,微软的Hyper-V、思杰Citrix的XenServer 、IBM的PowerVM、Red Hat的Enterprise Virtulization、华为的FusionSphere,中兴的TECS KVM。

    裸机型hypervisor本文先不介绍。

    虚机运行在宿主型hypervisor

    容器之间共享主机的OS操作系统,容器引擎将容器当作一个个进程运行在主机上,虚机内核是使用的主机内核,因此依赖于主机内核版本,且不便于升级。

    容器引擎包括docker,CoreOS的rkt和Mesos的Mesos containerizer。当然主流还是docker。

    容器运行在docker上

    容器运行在host操作系统的用户空间,与操作系统其他进程隔离。在容器启动时不需要启动内核空间,所以启动时比虚机较快,开销少,易迁移。

    对比完虚机和容器的不同,我们还是回到主咖docker来介绍。

    Docker 将集装箱思想(分类管理货物,不受运输时外界带来的损坏)运用到软件打包(容器特性build onece can run anywhere意味着环境隔离,运行一次后打包可在其他环境上运行)上,为代码提供了一个基于容器的标准化运输系统。

    docker并不是全能的,局限在于无法在33位的Windows/Linux环境下使用,基于Linux 64位的。cgroup的CPU和CPUset提供的CPU功能相比KVM等虚拟化方案难以度量(dotCloud主要按照内存收费),docker对磁盘管理能力有限,container随着用户进程的停止销毁导致用户log不便收集。docker网络管理简单,主要是基于namespace隔离。

    docker架构篇

    docker架构篇Docker 采用的是 Client/Server 架构,包含client,docker daemon服务端,image镜像,registry软件仓库,docker container共5部分。客户端向服务器发送请求,服务器负责构建、运行和分发容器。客户端和服务器可以运行在同一个 Host 上,客户端也可以通过 socket 或 REST API 与远程的服务器通信。

    docker架构
    docker镜像篇

    docker如何构建镜像什么是base镜像?Linux系统包含内核空间kernel和用户空间rootfs两部分,容器只使用各自的rootfs但共用host的kernel,这就产生镜像结构分成,但为何产生镜像结构分层如何查查看镜像分层结构

    Linux 操作系统组成

    所有容器都共用 host 的 kernel,在容器中没办法对 kernel 升级。

    容器共用host的内核

    base 镜像有两层含义:不依赖其他镜像,从 scratch 构建。其他镜像可以之为基础进行扩展。base镜像最小到10M,是不是很神奇,你见过这么精简镜像嘛?

    新镜像从 base 镜像一层一层叠加生成的,每安装一个软件,就在现有镜像的基础上增加一层。如果多个镜像从相同的 base 镜像构建而来,那么 Docker Host 只需在磁盘上保存一份 base 镜像,同时内存中也只需加载一份 base 镜像,就可以为所有容器服务了,而且镜像的每一层都可以被共享。

    镜像分层结构

    如果多个容器共享一份基础镜像,当某个容器修改了基础镜像的内容,比如 /etc 下的文件,这时其他容器的 /etc 是否也会被修改?

    这当然不行,也就产生了可写的容器层。当容器启动时,一个新的可写层被加载到镜像的顶部。这一层通常被称作“容器层”,“容器层”之下的都叫“镜像层”。

    可写的容器层

    镜像的分层结构即镜像制作过程中的操作,通过docker history 镜像名称即可。

    了解完理论,该实践了!

    It is docker time!

    下期预告“docker实践篇“!

    docker hello world!-已新鲜出炉了!

    docker can run anywhere in the pod!

    docker image!

    docker storage!

    docker cpu and memory!

    docker network!

    相关文章

      网友评论

        本文标题:docker,你真正懂了吗?

        本文链接:https://www.haomeiwen.com/subject/bzyxoxtx.html