Docker1— 从入门到实践 我就是我 2022-06-03 00:26 194阅读 0赞 ## 什么是 Docker ## Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新,并于 [2013 年 3 月以 Apache 2.0 授权协议开源][2013 _ 3 _ Apache 2.0],主要项目代码在 [GitHub][] 上进行维护。Docker 项目后来还加入了 Linux 基金会,并成立推动 [开放容器联盟(OCI)][OCI]。 Docker 自开源后受到广泛的关注和讨论,至今其 GitHub 项目已经超过 4 万 6 千个星标和一万多个 fork。甚至由于 Docker 项目的火爆,在 2013 年底,[dotCloud 公司决定改名为 Docker][dotCloud _ Docker]。Docker 最初是在 Ubuntu 12.04 上开发实现的;Red Hat 则从 RHEL 6.5 开始对 Docker 进行支持;Google 也在其 PaaS 产品中广泛应用 Docker。 Docker 使用 Google 公司推出的 [Go 语言][Go] 进行开发实现,基于 Linux 内核的 [cgroup][],[namespace][],以及[AUFS][] 类的 [Union FS][] 等技术,对进程进行封装隔离,属于 [操作系统层面的虚拟化技术][Link 1]。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 [LXC][],从 0.7 版本以后开始去除 LXC,转而使用自行开发的 [libcontainer][],从 1.11 开始,则进一步演进为使用 [runC][] 和 [containerd][]。 Docker 在容器的基础上,进行了进一步的封装,从文件系统、网络互联到进程隔离等等,极大的简化了容器的创建和维护。使得 Docker 技术比虚拟机技术更为轻便、快捷。 下面的图片比较了 Docker 和传统虚拟化方式的不同之处。传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。 ![传统虚拟化][virtualization.png]图 1.4.1.1 - 传统虚拟化 ![Docker][]图 1.4.1.2 - Docker [2013 _ 3 _ Apache 2.0]: https://en.wikipedia.org/wiki/Docker_%28software%29 [GitHub]: https://github.com/moby/moby [OCI]: https://www.opencontainers.org/ [dotCloud _ Docker]: https://blog.docker.com/2013/10/dotcloud-is-becoming-docker-inc/ [Go]: https://golang.org/ [cgroup]: https://zh.wikipedia.org/wiki/Cgroups [namespace]: https://en.wikipedia.org/wiki/Linux_namespaces [AUFS]: https://en.wikipedia.org/wiki/Aufs [Union FS]: https://en.wikipedia.org/wiki/Union_mount [Link 1]: https://en.wikipedia.org/wiki/Operating-system-level_virtualization [LXC]: https://linuxcontainers.org/lxc/introduction/ [libcontainer]: https://github.com/docker/libcontainer [runC]: https://github.com/opencontainers/runc [containerd]: https://github.com/containerd/containerd [virtualization.png]: https://yeasy.gitbooks.io/docker_practice/content/introduction/_images/virtualization.png [Docker]: https://yeasy.gitbooks.io/docker_practice/content/introduction/_images/docker.png
还没有评论,来说两句吧...