随笔分类 -  Docker

摘要:容器的连通性 (0)当前的拓扑结构如下 (1)同一网络下的容器可以互通,不同网络下的容器互不相通 例如: 172.20.22.6和172.20.22.58 都在my_net2下是互通的 172.17.0.2在docker0下和172.20.22.2在my_net2下是不通的 (2)不同网络下的容器想 阅读全文
posted @ 2019-02-25 18:51 gsophy 阅读(176) 评论(0) 推荐(0)
摘要:自定义容器网络 除了 none, host, bridge 这三个自动创建的网络,用户也可以根据业务需要创建 user-defined 网络。 Docker 提供三种 user-defined 网络驱动: bridge overlay macvlan overlay 和 macvlan 用于创建跨主 阅读全文
posted @ 2019-02-21 17:53 gsophy 阅读(201) 评论(0) 推荐(0)
摘要:bridge 网络 Docker 安装时会创建一个 命名为 docker0 的 linux bridge。如果不指定--network,创建的容器默认都会挂到 docker0 上。 创建一个容器 一个新的网络接口 vethef69121 被挂到了 docker0 上,vethef69121就是新创建 阅读全文
posted @ 2019-02-14 16:52 gsophy 阅读(195) 评论(0) 推荐(0)
摘要:none和host网络的适用场景 Docker 安装时会自动在 host 上创建三个网络,用 docker network ls 命令查看: none 网络 none 网络就是什么都没有的网络。挂在这个网络下的容器除了 lo,没有其他任何网卡。容器创建时,可以通过 --network=none 指定 阅读全文
posted @ 2019-02-14 16:24 gsophy 阅读(285) 评论(0) 推荐(0)
摘要:实现容器的底层技术 cgroup 和 namespace 是最重要的两种技术。 cgroup 实现资源限额 namespace 实现资源隔离 cgroup cgroup 全称 Control Group。 Linux 操作系统通过 cgroup 可以设置进程使用 CPU、内存 和 IO 资源的限额。 阅读全文
posted @ 2019-01-29 21:17 gsophy 阅读(229) 评论(0) 推荐(0)
摘要:限制容器的 Block IO Block IO 是另一种可以限制容器使用的资源。 Block IO 指的是磁盘的读写,docker 可通过设置权重、限制 bps 和 iops 的方式控制容器读写磁盘的带宽。 注:目前 Block IO 限额只对 direct IO(不使用文件缓存)有效。 block 阅读全文
posted @ 2019-01-29 20:20 gsophy 阅读(386) 评论(0) 推荐(0)
摘要:限制容器对CPU的使用 默认设置下,所有容器可以平等地使用 host CPU 资源并且没有限制。 Docker 可以通过 -c 或 --cpu-shares 设置容器使用 CPU 的权重。如果不指定,默认值为 1024。 与内存限额不同,通过 -c 设置的 cpu share 并不是 CPU 资源的 阅读全文
posted @ 2019-01-29 20:07 gsophy 阅读(268) 评论(0) 推荐(0)
摘要:限制容器对内存的使用 一个 docker host 上会运行若干容器,每个容器都需要 CPU、内存和 IO 资源。 对于 KVM,VMware 等虚拟化技术,用户可以控制分配多少 CPU、内存资源给每个虚拟机。 对于容器,Docker 也提供了类似的机制避免某个容器因占用太多资源而影响其他容器乃至整 阅读全文
posted @ 2019-01-22 23:57 gsophy 阅读(263) 评论(0) 推荐(0)
摘要:一张图搞懂容器所有操作 下面这张状态机很好地总结了容器各种状态之间是如何转换的。 有两点还是需要补充一下 docker create 创建的容器处于 Created 状态。 docker start 将以后台方式启动容器。 docker run 命令实际上是 docker create 和 dock 阅读全文
posted @ 2019-01-21 16:45 gsophy 阅读(220) 评论(0) 推荐(0)
摘要:容器常用操作 stop/start/restart 容器 通过 docker stop 可以停止运行的容器。 容器在 docker host 中实际上是一个进程,docker stop 命令本质上是向该进程发送一个 SIGTERM 信号。 如果想快速停止容器,可使用 docker kill 命令,其 阅读全文
posted @ 2019-01-18 23:40 gsophy 阅读(268) 评论(0) 推荐(0)
摘要:运行容器的最佳实践 容器按用途可分为两类: 服务类容器 工具类的容器 服务类容器 以 daemon 的形式运行,对外提供服务。比如 web server,数据库等。 通过 -d 以后台方式启动这类容器是非常合适的。 如果要排查问题,可以通过 exec -it 进入容器。 工具类容器 通常给能我们提供 阅读全文
posted @ 2019-01-18 15:38 gsophy 阅读(153) 评论(0) 推荐(0)
摘要:两种进入容器的方法 docker attach 通过 docker attach 可以 attach 到容器启动命令的终端,例如: 通过 “长ID” attach 到了容器的启动命令终端,看到的是echo 每隔一秒打印的信息。 !!!注:可通过 Ctrl+p 然后 Ctrl+q 组合键退出 atta 阅读全文
posted @ 2019-01-16 19:20 gsophy 阅读(214) 评论(0) 推荐(0)
摘要:运行容器 docker run 是启动容器的方法。可用三种方式指定容器启动时执行的命令: #容器启动时执行 pwd,返回的 / 是容器中的当前目录 执行 docker ps 或 docker container ls 可以查看 Docker host 中当前运行的容器: 如果没有容器。用 docke 阅读全文
posted @ 2019-01-15 13:19 gsophy 阅读(354) 评论(0) 推荐(0)
摘要:镜像小结 镜像的常用操作子命令: images 显示镜像列表 history 显示镜像构建历史 commit 从容器创建新镜像 build 从 Dockerfile 构建镜像 tag 给镜像打 tag pull 从 registry 下载镜像 push 将 镜像 上传到 registry rmi 删 阅读全文
posted @ 2019-01-14 19:21 gsophy 阅读(218) 评论(0) 推荐(0)
摘要:Docker Hub 虽然非常方便,但还是有些限制,比如: 解决方案就是搭建本地的 Registry。 在 Docker Hub 上也有官方的镜像 registry。我们可以在 Docker 中运行自己的 registry。 启动 registry 容器 使用的镜像是 registry:2。 -d  阅读全文
posted @ 2019-01-14 17:35 gsophy 阅读(165) 评论(0) 推荐(0)
摘要:保存和分发镜像的最直接方法就是使用 Docker Hub。https://hub.docker.com/ Docker Hub 是 Docker 公司维护的公共 Registry。用户可以将自己的镜像保存到 Docker Hub 免费的 repository 中。如果不希望别人访问自己的镜像,也可以 阅读全文
posted @ 2019-01-10 23:54 gsophy 阅读(210) 评论(0) 推荐(0)
摘要:为镜像命名 创建镜像时 docker build 命令时已经为镜像取了个名字,例如: 这里的 ubuntu-with-vi 就是镜像的名字。通过 dock images 可以查看镜像的信息。 这里注意到 ubuntu-with-vi 对应的是 REPOSITORY,而且还有一个叫 latest 的  阅读全文
posted @ 2019-01-09 23:32 gsophy 阅读(234) 评论(0) 推荐(0)
摘要:RUN、CMD 和 ENTRYPOINT 这三个 Dockerfile 指令看上去很类似,很容易混淆。 简单的说: RUN 执行命令并创建新的镜像层,RUN 经常用于安装软件包。 CMD 设置容器启动后默认执行的命令及其参数,但 CMD 能够被 docker run 后面跟的命令行参数替换。 ENT 阅读全文
posted @ 2019-01-08 13:26 gsophy 阅读(280) 评论(0) 推荐(0)
摘要:Dockerfile 常用指令 1、FROM 指定base镜像2、MAINTAINER 设置镜像的作者,可以为任意字符串3、COPY 从build context 复制到镜像 COPY 支持两种形式: COPY src dest COPY ["src", "dest"] 注意:src 只能指定 bu 阅读全文
posted @ 2019-01-07 17:56 gsophy 阅读(194) 评论(0) 推荐(0)
摘要:如何 debug Dockerfile 通过 Dockerfile 构建镜像的过程 如果 Dockerfile 由于某种原因执行到某个指令失败了,我们也将能够得到前一个指令成功执行构建出的镜像,可以运行最新的这个镜像定位指令失败的原因。 举个例子 Dockerfile 构建过程如下 21行出现错误, 阅读全文
posted @ 2019-01-04 18:51 gsophy 阅读(263) 评论(0) 推荐(0)