摘要:
五、网络 (一)none和host网络的适用场景 我们会首先学习 Docker 提供的几种原生网络,以及如何创建自定义网络。然后探讨容器之间如何通信,以及容器与外界如何交互。 Docker 网络从覆盖范围可分为单个 host 上的容器网络和跨多个 host 的网络,本章重点讨论前一种。对于更 阅读全文
摘要:
(九)实现容器的底层技术 为了更好地理解容器的特性,本节我们将讨论容器的底层实现技术。 cgroup 和 namespace 是最重要的两种技术。cgroup 实现资源限额, namespace 实现资源隔离。 (1)cgroup cgroup 全称 Control Group。Linux 阅读全文
摘要:
(八)限制容器的 Block IO 前面学习了如何限制容器对内存和CPU的使用,本节我们来看 Block IO。Block IO 是另一种可以限制容器使用的资源。Block IO 指的是磁盘的读写,docker 可通过设置权重、限制 bps 和 iops 的方式控制容器读写磁盘的带宽,下面分别讨 阅读全文
摘要:
(七)限制容器对CPU的使用 默认设置下,所有容器可以平等地使用 host CPU 资源并且没有限制。Docker 可以通过 -c 或 --cpu-shares 设置容器使用 CPU 的权重。如果不指定,默认值为 1024。 与内存限额不同,通过 -c 设置的 cpu share 并不是 C 阅读全文
摘要:
(六)限制容器对内存的使用 一个 docker host 上会运行若干容器,每个容器都需要 CPU、内存和 IO 资源。对于 KVM,VMware 等虚拟化技术,用户可以控制分配多少 CPU、内存资源给每个虚拟机。对于容器,Docker 也提供了类似的机制避免某个容器因占用太多资源而影响其他容器 阅读全文
摘要:
(五)一张图搞懂容器所有操作 前面我们已经讨论了容器的各种操作,对容器的生命周期有了大致的理解,下面这张状态机很好地总结了容器各种状态之间是如何转换的 。 如果掌握了前面的知识,要看懂这张图应该不难。不过有两点还是需要补充一下: 可以先创建容器,稍后再启动。 root@cuiyongchao:/ 阅读全文
摘要:
(四)容器常用操作 (1)stop/start/restart 容器 root@cuiyongchao:/dockerfile# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 872ebb8a83c1 ubuntu " 阅读全文
摘要:
(三)运行容器的最佳实践 (1)容器分类 按用途容器大致可分为两类:服务类容器和工具类的容器。 1.服务类容器以 daemon 的形式运行,对外提供服务。比如 web server,数据库等。通过 -d 以后台方式启动这类容器是非常合适的。如果要排查问题,可以通过 exec -it 进入容器 阅读全文
摘要:
(二)进入容器的方法 我们经常需要进到容器里去做一些工作,比如查看日志、调试、启动其他进程等。有两种方法进入容器:attach 和 exec。 (1)docker attach 通过 docker attach 可以 attach 到容器启动命令的终端,例如: root@cuiyongchao: 阅读全文
摘要:
(一)运行容器方法 上一章我们学习了如何构建 Docker 镜像,并通过镜像运行容器。本章将深入讨论容器:学习容器的各种操作,容器各种状态之间如何转换,以及实现容器的底层技术。 (1)运行容器 docker run 是启动容器的方法。在讨论 Dockerfile 时我们已经学习到,可用三种方式指 阅读全文