摘要:
Data Volume Data Volume 本质上是 Docker Host 文件系统中的目录或文件,能够直接被 mount 到容器的文件系统中。 Data Volume 有以下特点: 1、Data Volume 是目录或文件,而不是没有格式化的磁盘(块设备) 2、容器可以读写 volume 中 阅读全文
摘要:
存储资源 Docker 为容器提供了两种存放数据的资源: 由 storage driver 管理的镜像层和容器层 Data Volume 1、storage driver 容器由最上面一个可写的容器层,以及若干只读的镜像层组成,容器的数据就存放在这些层中。 这样的分层结构最大的特性是 Copy-on 阅读全文
摘要:
外部世界访问容器 docker 可将容器对外提供服务的端口映射到 host 的某个端口,外网通过该端口访问容器。 容器启动时通过-p参数映射端口:容器启动后,可通过 docker ps 或者 docker port 查看到 host 映射的端口。 docker run -d -p 80 httpd 阅读全文
摘要:
容器访问外部世界 当前的环境下,docker host 是可以访问外网的。 测试一下,容器默认就能访问外网。 注意:外网指的是容器网络以外的网络环境,并非特指 internet。 docker host 上的 iptables 规则,在 NAT 表中: -A POSTROUTING -s 172.1 阅读全文
摘要:
容器间通信的三种方式 (1)IP 通信 两个容器要能通信,必须要有属于同一个网络的网卡。 满足这个条件后,容器就可以通过 IP 交互了。具体做法是在容器创建时通过 --network 指定相应的网络,或者通过 docker network connect 将现有容器加入到指定网络。 (2)Docke 阅读全文
摘要:
容器的连通性 (0)当前的拓扑结构如下 (1)同一网络下的容器可以互通,不同网络下的容器互不相通 例如: 172.20.22.6和172.20.22.58 都在my_net2下是互通的 172.17.0.2在docker0下和172.20.22.2在my_net2下是不通的 (2)不同网络下的容器想 阅读全文
摘要:
自定义容器网络 除了 none, host, bridge 这三个自动创建的网络,用户也可以根据业务需要创建 user-defined 网络。 Docker 提供三种 user-defined 网络驱动: bridge overlay macvlan overlay 和 macvlan 用于创建跨主 阅读全文
摘要:
bridge 网络 Docker 安装时会创建一个 命名为 docker0 的 linux bridge。如果不指定--network,创建的容器默认都会挂到 docker0 上。 创建一个容器 一个新的网络接口 vethef69121 被挂到了 docker0 上,vethef69121就是新创建 阅读全文
摘要:
none和host网络的适用场景 Docker 安装时会自动在 host 上创建三个网络,用 docker network ls 命令查看: none 网络 none 网络就是什么都没有的网络。挂在这个网络下的容器除了 lo,没有其他任何网卡。容器创建时,可以通过 --network=none 指定 阅读全文
摘要:
实现容器的底层技术 cgroup 和 namespace 是最重要的两种技术。 cgroup 实现资源限额 namespace 实现资源隔离 cgroup cgroup 全称 Control Group。 Linux 操作系统通过 cgroup 可以设置进程使用 CPU、内存 和 IO 资源的限额。 阅读全文
摘要:
限制容器的 Block IO Block IO 是另一种可以限制容器使用的资源。 Block IO 指的是磁盘的读写,docker 可通过设置权重、限制 bps 和 iops 的方式控制容器读写磁盘的带宽。 注:目前 Block IO 限额只对 direct IO(不使用文件缓存)有效。 block 阅读全文
摘要:
限制容器对CPU的使用 默认设置下,所有容器可以平等地使用 host CPU 资源并且没有限制。 Docker 可以通过 -c 或 --cpu-shares 设置容器使用 CPU 的权重。如果不指定,默认值为 1024。 与内存限额不同,通过 -c 设置的 cpu share 并不是 CPU 资源的 阅读全文
摘要:
限制容器对内存的使用 一个 docker host 上会运行若干容器,每个容器都需要 CPU、内存和 IO 资源。 对于 KVM,VMware 等虚拟化技术,用户可以控制分配多少 CPU、内存资源给每个虚拟机。 对于容器,Docker 也提供了类似的机制避免某个容器因占用太多资源而影响其他容器乃至整 阅读全文
摘要:
一张图搞懂容器所有操作 下面这张状态机很好地总结了容器各种状态之间是如何转换的。 有两点还是需要补充一下 docker create 创建的容器处于 Created 状态。 docker start 将以后台方式启动容器。 docker run 命令实际上是 docker create 和 dock 阅读全文
摘要:
容器常用操作 stop/start/restart 容器 通过 docker stop 可以停止运行的容器。 容器在 docker host 中实际上是一个进程,docker stop 命令本质上是向该进程发送一个 SIGTERM 信号。 如果想快速停止容器,可使用 docker kill 命令,其 阅读全文
摘要:
运行容器的最佳实践 容器按用途可分为两类: 服务类容器 工具类的容器 服务类容器 以 daemon 的形式运行,对外提供服务。比如 web server,数据库等。 通过 -d 以后台方式启动这类容器是非常合适的。 如果要排查问题,可以通过 exec -it 进入容器。 工具类容器 通常给能我们提供 阅读全文
摘要:
两种进入容器的方法 docker attach 通过 docker attach 可以 attach 到容器启动命令的终端,例如: 通过 “长ID” attach 到了容器的启动命令终端,看到的是echo 每隔一秒打印的信息。 !!!注:可通过 Ctrl+p 然后 Ctrl+q 组合键退出 atta 阅读全文
摘要:
运行容器 docker run 是启动容器的方法。可用三种方式指定容器启动时执行的命令: #容器启动时执行 pwd,返回的 / 是容器中的当前目录 执行 docker ps 或 docker container ls 可以查看 Docker host 中当前运行的容器: 如果没有容器。用 docke 阅读全文
摘要:
镜像小结 镜像的常用操作子命令: images 显示镜像列表 history 显示镜像构建历史 commit 从容器创建新镜像 build 从 Dockerfile 构建镜像 tag 给镜像打 tag pull 从 registry 下载镜像 push 将 镜像 上传到 registry rmi 删 阅读全文
摘要:
Docker Hub 虽然非常方便,但还是有些限制,比如: 解决方案就是搭建本地的 Registry。 在 Docker Hub 上也有官方的镜像 registry。我们可以在 Docker 中运行自己的 registry。 启动 registry 容器 使用的镜像是 registry:2。 -d 阅读全文