随笔分类 -  docker技术

摘要:我们从本章开始讨论 Docker 存储。 Docker 为容器提供了两种存放数据的资源: 由 storage driver 管理的镜像层和容器层。 Data Volume。 我们会详细讨论它们的原理和特性。 容器由最上面一个可写的容器层,以及若干只读的镜像层组成,容器的数据就存放在这些层中。这样的分 阅读全文
posted @ 2019-05-26 18:04 bwzbk 阅读(464) 评论(0) 推荐(0)
摘要:1、遍历整个列表 1.可使用Python中的for循环遍历整个列表 2.避免缩进错误 Python根据缩进来判断代码行于前一个代码行的关系。 2、创建数字列表 1.Python函数range()让你能够轻松地生成一系列的数字。 函数range()让Python从你指定的第一个值开始数,并在达到你指定 阅读全文
posted @ 2019-05-26 17:05 bwzbk 阅读(182) 评论(0) 推荐(0)
摘要:上节我们学习了容器如何访问外部网络,今天讨论另一个方向:外部网络如何访问到容器? 答案是:端口映射。 docker 可将容器对外提供服务的端口映射到 host 的某个端口,外网通过该端口访问容器。容器启动时通过-p参数映射端口: 容器启动后,可通过 docker ps 或者 docker port  阅读全文
posted @ 2019-05-25 18:21 bwzbk 阅读(712) 评论(0) 推荐(0)
摘要:前面我们已经解决了容器间通信的问题,接下来讨论容器如何与外部世界通信。这里涉及两个方向: 容器访问外部世界 外部世界访问容器 容器访问外部世界 在我们当前的实验环境下,docker host 是可以访问外网的。 我们看一下容器是否也能访问外网呢? 可见,容器默认就能访问外网。 请注意:这里外网指的是 阅读全文
posted @ 2019-05-25 17:47 bwzbk 阅读(852) 评论(0) 推荐(0)
摘要:容器之间可通过 IP,Docker DNS Server 或 joined 容器三种方式通信。 IP 通信 从上一节的例子可以得出这样一个结论:两个容器要能通信,必须要有属于同一个网络的网卡。 满足这个条件后,容器就可以通过 IP 交互了。具体做法是在容器创建时通过 --network 指定相应的网 阅读全文
posted @ 2019-05-25 17:23 bwzbk 阅读(328) 评论(0) 推荐(0)
摘要:两个 busybox 容器都挂在 my_net2 上,应该能够互通,我们验证一下: 可见同一网络中的容器、网关之间都是可以通信的。 my_net2 与默认 bridge 网络能通信吗? 从拓扑图可知,两个网络属于不同的网桥,应该不能通信,我们通过实验验证一下: 原因就在这里了:iptables DR 阅读全文
posted @ 2019-05-24 17:11 bwzbk 阅读(250) 评论(0) 推荐(0)
摘要:除了 none, host, bridge 这三个自动创建的网络,用户也可以根据业务需要创建 user-defined 网络。 Docker 提供三种 user-defined 网络驱动:bridge, overlay 和 macvlan。overlay 和 macvlan 用于创建跨主机的网络,我 阅读全文
posted @ 2019-05-24 15:48 bwzbk 阅读(182) 评论(0) 推荐(0)
摘要:Docker 安装时会创建一个 命名为 docker0 的 linux bridge。如果不指定--network,创建的容器默认都会挂到 docker0 上。 apt-get install bridge-utils 当前 docker0 上没有任何其他网络设备,我们创建一个容器看看有什么变化 一 阅读全文
posted @ 2019-05-24 12:53 bwzbk 阅读(376) 评论(0) 推荐(0)
摘要:我们会首先学习 Docker 提供的几种原生网络,以及如何创建自定义网络。然后探讨容器之间如何通信,以及容器与外界如何交互。 Docker 网络从覆盖范围可分为单个 host 上的容器网络和跨多个 host 的网络,本章重点讨论前一种。对于更为复杂的多 host 容器网络,我们会在后面进阶技术章节单 阅读全文
posted @ 2019-05-24 10:50 bwzbk 阅读(472) 评论(0) 推荐(0)
摘要:为了更好地理解容器的特性,本节我们将讨论容器的底层实现技术。cgroup 和 namespace 是最重要的两种技术。cgroup 实现资源限额, namespace 实现资源隔离。 cgroup cgroup 全称 Control Group。Linux 操作系统通过 cgroup 可以设置进程使 阅读全文
posted @ 2019-05-23 20:24 bwzbk 阅读(275) 评论(0) 推荐(0)
摘要:Block IO 是另一种可以限制容器使用的资源。Block IO 指的是磁盘的读写,docker 可通过设置权重、限制 bps 和 iops 的方式控制容器读写磁盘的带宽,下面分别讨论。 注:目前 Block IO 限额只对 direct IO(不使用文件缓存)有效。 默认情况下,所有容器能平等地 阅读全文
posted @ 2019-05-23 15:36 bwzbk 阅读(506) 评论(0) 推荐(0)
摘要:默认设置下,所有容器可以平等地使用 host CPU 资源并且没有限制。 Docker 可以通过 -c 或 --cpu-shares 设置容器使用 CPU 的权重。如果不指定,默认值为 1024。 与内存限额不同,通过 -c 设置的 cpu share 并不是 CPU 资源的绝对数量,而是一个相对的 阅读全文
posted @ 2019-05-23 14:13 bwzbk 阅读(350) 评论(0) 推荐(0)
摘要:一个 docker host 上会运行若干容器,每个容器都需要 CPU、内存和 IO 资源。对于 KVM,VMware 等虚拟化技术,用户可以控制分配多少 CPU、内存资源给每个虚拟机。对于容器,Docker 也提供了类似的机制避免某个容器因占用太多资源而影响其他容器乃至整个 host 的性能。 内 阅读全文
posted @ 2019-05-23 13:57 bwzbk 阅读(430) 评论(0) 推荐(0)
摘要:前面我们已经讨论了容器的各种操作,对容器的生命周期有了大致的理解,下面这张状态机很好地总结了容器各种状态之间是如何转换的。 如果掌握了前面的知识,要看懂这张图应该不难。不过有两点还是需要补充一下: 可以先创建容器,稍后再启动。 ① docker create 创建的容器处于 Created 状态。② 阅读全文
posted @ 2019-05-23 10:17 bwzbk 阅读(324) 评论(0) 推荐(0)
摘要:stop/start/restart 容器 通过 docker stop 可以停止运行的容器。 容器在 docker host 中实际上是一个进程,docker stop 命令本质上是向该进程发送一个 SIGTERM 信号。如果想快速停止容器,可使用 docker kill 命令,其作用是向容器进程 阅读全文
posted @ 2019-05-22 10:22 bwzbk 阅读(204) 评论(0) 推荐(0)
摘要:1. 服务类容器以 daemon 的形式运行,对外提供服务。比如 web server,数据库等。通过 -d 以后台方式启动这类容器是非常合适的。如果要排查问题,可以通过 exec -it 进入容器。 2. 工具类容器通常给能我们提供一个临时的工作环境,通常以 run -it 方式运行,比如: 运行 阅读全文
posted @ 2019-05-22 09:13 bwzbk 阅读(164) 评论(0) 推荐(0)
摘要:我们经常需要进到容器里去做一些工作,比如查看日志、调试、启动其他进程等。有两种方法进入容器:attach 和 exec。 docker attach 通过 docker attach 可以 attach 到容器启动命令的终端,例如: 注:可通过 Ctrl+p 然后 Ctrl+q 组合键退出 atta 阅读全文
posted @ 2019-05-22 09:07 bwzbk 阅读(582) 评论(0) 推荐(0)
摘要:上一章我们学习了如何构建 Docker 镜像,并通过镜像运行容器。本章将深入讨论容器:学习容器的各种操作,容器各种状态之间如何转换,以及实现容器的底层技术。 运行容器 docker run 是启动容器的方法。在讨论 Dockerfile 时我们已经学习到,可用三种方式指定容器启动时执行的命令: CM 阅读全文
posted @ 2019-05-22 08:53 bwzbk 阅读(688) 评论(0) 推荐(0)
摘要:本节我们对 Docker 镜像做个小结。 这一部分我们首先讨论了镜像的分层结构,然后学习了如何构建镜像,最后实践使用 Docker Hub 和本地 registry。 下面是镜像的常用操作子命令: images 显示镜像列表 history 显示镜像构建历史 commit 从容器创建新镜像 buil 阅读全文
posted @ 2019-05-21 10:08 bwzbk 阅读(360) 评论(0) 推荐(0)
摘要:Docker Hub 虽然非常方便,但还是有些限制,比如: 需要 internet 连接,而且下载和上传速度慢。 上传到 Docker Hub 的镜像任何人都能够访问,虽然可以用私有 repository,但不是免费的。 安全原因很多组织不允许将镜像放到外网。 解决方案就是搭建本地的 Registr 阅读全文
posted @ 2019-05-21 09:56 bwzbk 阅读(579) 评论(0) 推荐(0)