分类归档

Docker教程

FWQ
Docker教程
Docker的命令之插件管理 Plugin
Docker的一个重要特性是开箱即用,“开箱即用”是指什么呢?简单来说,安装好Docker就可以马上使用。不需要任何额外的操作,诸如网络、进程、文件系统隔离等繁杂事情也不在你担心的范围内。 不过,经过一段时间的使用,你可能开始会考虑更多——诸如自定义网络,自定义保留IP地址,分布式文件系统等等。这些需求会在你将Docker应用到生产或者做进一步准备时候浮现而出。 幸运的是,Docker不仅仅是开箱即用,其中的功能点也是可以进行调整的。如何调整呢?通过Docker的插件! “即使@Docker开箱即用,最终你还是想要更多。”—— @fntln 一、什么是Docker插件? 官方文档的描述是: Docker插件是增强Docker引擎功能的进程外扩展。 这就表示,插件不会运行在Docker daemon中。你可以随时随地(如果需要可以在另一台主机上)启动你的插件。你只需要通过Plugin Discovery(我们后面会深入讨论)通知Docker daemon这儿有一个新的插件可用即可。 进程外体系的另一个优点就是你甚至可以不用重新建立一个Docker daemon来增加一个插件。 “你不需要重新编译@Docker的守护进程来增加一个插件。” ——fntlnz 你可以创建带有如下功能的各种插件,参考:使用插件扩展Docker案例 Usage: docker plugin COMMAND Manage plugins Options: --help Print usage Commands:…
2024-11-18 阅读全文 →
FWQ
Docker教程
Docker的命令之安全管理 Docker secret
集中式管理Docker 容器需要使用的敏感信息,包括密码,证书等,敏感信息不会保存在镜像中,compose模版也可以不需要显式填写密码等敏感信息,只需要引用密码对象的名称。实现的方式是通过把密码等敏感信息以文件的方式挂载到容器的/run/secrets/目录内,使用该特性的镜像需要支持通过文件读取的方式来使用敏感信息的能力。   Usage:    docker secret COMMAND Manage Docker secrets Options:       --help   Print usage Commands:   create      Create a secret from a file or STDIN as content…
2024-11-18 阅读全文 →
FWQ
Docker教程
Docker的命令之集群管理 swarm
Swarm 是提供 Docker 容器集群服务,是 Docker 官方对容器云生态进行支持的核心方案。使用它,用户可以将多个 Docker 主机封装为单个大型的虚拟 Docker 主机,快速打造一套容器云平台。 作为容器集群管理器,Swarm 最大的优势之一就是 100% 支持标准的 Docker API。各种基于标准 API 的工具比如 Compose、docker-py、各种管理软件,甚至 Docker 本身等都可以很容易的与 Swarm 进行集成。这大大方便了用户将原先基于单节点的系统移植到 Swarm 上。同时 Swarm 内置了对 Docker…
2024-11-18 阅读全文 →
FWQ
Docker教程
Docker的命令之系统管理 Docker system
Docker system是Docker 1.13引进了新的管理命令,它有4个子命令分别是 df, events, info 和 prune 。命令 docker system df 提供Docker整体磁盘使用率的概况,包括镜像、容器和(本地)volume。所以我们现在随时都可以查看Docker使用了多少资源。 如果之前的命令展示出 docker 已经占用了太多空间,我们会开始清理。有一个包办一切的命令: docker system prune 这个命令会删除当前没有被使用的一切项目,它按照一种正确的序列进行清理,所以会达到最大化的输出结果。首先删除没有被使用的容器,然后是volume和网络,最后是挂起的镜像。通过使用 y 回复来确认操作。如果想在脚本中使用这个命令,可以使用参数 –force 或者 -f 告诉Docker不要发来确认请求。   Usage:  …
2024-11-18 阅读全文 →
FWQ
Docker教程
Docker的命令之数据卷管理 Volume
数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS(UNIX文件系统的简称),可以提供很多有用的特性: 数据卷可以在容器之间共享和重用 对数据卷的修改会立马生效 对数据卷的更新,不会影响镜像 数据卷默认会一直存在,即使容器被删除 Tips 1:数据卷的使用,类似于 Linux 下对目录或文件进行 mount,镜像中的被指定为挂载点的目录中的文件会隐藏掉,能显示看的是挂载的数据卷。   Usage:    docker volume COMMAND Manage volumes Options:       --help   Print usage Commands:   create      Create a…
2024-11-18 阅读全文 →
FWQ
Docker教程
Docker中的镜像构建-Dockerfile指令详解
我们可以了解到,镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像,那么之前提及的无法重复的问题、镜像构建透明性的问题、体积的问题就都会解决。这个脚本就是 Dockerfile。 Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。   可以参考:https://github.com/yeasy/docker_practice/blob/master/image/build.md  一、FROM:指定基础镜像 所谓定制镜像,那一定是以一个镜像为基础,在其上进行定制。就像我们之前运行了一个 nginx 镜像的容器,再进行修改一样,基础镜像是必须指定的。而 FROM 就是指定基础镜像,因此一个 Dockerfile 中 FROM 是必备的指令,并且必须是第一条指令。 二、RUN :执行命令 UN 指令是用来执行命令行命令的。由于命令行的强大能力,RUN 指令在定制镜像时是最常用的指令之一。 其格式有两种: 1、shell 格式:RUN <命令>,就像直接在命令行中输入的命令一样。 例如:RUN echo '<h1>Hello,…
2024-11-18 阅读全文 →
FWQ
Docker教程
Docker network的网络特性
Docker在1.9版本中引入了一整套的自定义网络命令和跨主机网络支持。这是libnetwork项目从Docker的主仓库抽离之后的一次重大变化。不论你是否已经注意到了,Docker的网络新特性即将对用户的习惯产生十分明显的改变。 ‌‌libnetwork和Docker网络 libnetwork项目从lincontainer和Docker代码的分离早在Docker 1.7版本就已经完成了(从Docker 1.6版本的网络代码中抽离)。在此之后,容器的网络接口就成为了一个个可替换的插件模块。由于这次变化进行的十分平顺,作为Docker的使用者几乎不会感觉到其中的差异,然而这个改变为接下来的一系列扩展埋下了很好的伏笔。 概括来说,libnetwork所做的最核心事情是定义了一组标准的容器网络模型(Container Network Model,简称CNM),只要符合这个模型的网络接口就能被用于容器之间通信,而通信的过程和细节可以完全由网络接口来实现。 Docker的容器网络模型最初是由思科公司员工Erik提出的设想,比较有趣的是Erik本人并不是Docker和libnetwork代码的直接贡献者。最初Erik只是为了扩展Docker网络方面的能力,设计了一个Docker网桥的扩展原型,并将这个思路反馈给了Docker社区。然而他的大胆设想得到了Docker团队的认同,并在与Docker的其他合作伙伴广泛讨论之后,逐渐形成了libnetwork的雏形。 在这个网络模型中定义了三个的术语:Sandbox、Endpoint和Network。 如上图所示,它们分别是容器通信中『容器网络环境』、『容器虚拟网卡』和『主机虚拟网卡/网桥』的抽象。 Sandbox:对应一个容器中的网络环境,包括相应的网卡配置、路由表、DNS配置等。CNM很形象的将它表示为网络的『沙盒』,因为这样的网络环境是随着容器的创建而创建,又随着容器销毁而不复存在的; Endpoint:实际上就是一个容器中的虚拟网卡,在容器中会显示为eth0、eth1依次类推; Network:指的是一个能够相互通信的容器网络,加入了同一个网络的容器直接可以直接通过对方的名字相互连接。它的实体本质上是主机上的虚拟网卡或网桥。 这种抽象为Docker的1.7版本带来了十分平滑的过渡,除了文档中的三种经典『网络模式』被换成了『网络插件』,用户几乎感觉不到使用起来的差异。 直到1.9版本的到来,Docker终于将网络的控制能力完全开放给了终端用户,并因此改变了连接两个容器通信的操作方式(当然,Docker为兼容性做足了功夫,所以即便你不知道下面所有的这些差异点,仍然丝毫不会影响继续用过去的方式使用Docker)。 Docker 1.9中网络相关的变化集中体现在新的『docker network』命令上。 $ docker network –help Usage: docker network [OPTIONS]COMMAND [OPTIONS] Commands:…
2024-11-18 阅读全文 →
FWQ
Docker教程
Docker的实践笔记
学Docker差不多两个星期了,主要学习container、image、volume、network、plugin、system这六个部分,今天想通过以上的学习,制作一个centos + nginx + php7的镜像。   1、创建数据卷 因为镜像一旦创建了,镜像的文件是不能被修改的(本人亲测,如果本人理解错误,请指正),所以想把php和nginx的配置、日志、php文件,以数据卷的形式挂载到新创建的容器。 docker volume create conf docker volume create logs docker volume create www 2、创建网络 docker network create --subnet=192.168.30.0/24 --ip-range=192.168.30.0/24 br30 3、以centos为基础,创建容器php01…
2024-11-18 阅读全文 →
FWQ
Docker教程
Docker create / Docker run 的选项详解
本文不止针对docker create 和 run 的选项解释,其实对以下几个指令的选项,同样有帮助和理解。 dockerd 启动docker engine docker create / run / update 容器的创建和修改 daemon.json配置文件 docker service create 集群服务的创建 docker service update 集群服务的更新   –add-host list Add…
2024-11-18 阅读全文 →
FWQ
Docker教程
Docker 资源(cpu、memory)限制实践篇
写这篇的目的是为了搞清楚,在docker中的一些设置项,对容器资源(cpu、memory)产生的影响和对比,从网络中了解到docker容器的资源限制是通过cgroup来实现的。cgroup是control group的简称,是Linux内核2.6.24引入的一个新特性 ,用来限制、分离和报告一个进程组的资源(CPU、内存、磁盘输入输出等)。常用的ulimit只能基于用户或者用户组来进行资源限制,不能够针对某一进程作出详细限制,缺乏灵活度。   一、安装 sysstat 工具 下载:sysstat-7.0.2-3.el5.x86_64.rpm rpm -ivh sysstat-7.0.2-3.el5.x86_64.rpm 二、使用工具 mpstat 命令:mpstat -P ALL 3 10 :表示每3秒对所有的cpu采样10次. 04时54分27秒  CPU   %user   %nice    %sys %iowait    %irq   %soft  %steal  …
2024-11-18 阅读全文 →