Docke~r基础学习入门资料.doc
《Docke~r基础学习入门资料.doc》由会员分享,可在线阅读,更多相关《Docke~r基础学习入门资料.doc(52页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、-_Docker 入门教程(一)介绍【编者的话】DockerOne 组织翻译了 Flux7 的 Docker 入门教程,本文是系列入门教程的第一篇,介绍了 Docker 的基础概念以及 Docker 的安装。Docker 是一个新的容器化的技术,它轻巧,且易移植,号称“build once, configure once and run anywhere(译者注:这个就不翻译了,翻译出来味道就没了)”。本文是 Flux7 的 Docker 系列教程的第一部分。请和这份教程一起学习和理解 Docker 有什么优势以及如何更好地使用它。让我们一起来学习 Docker。本文主要涉及 Docker 的
2、基础知识:Docker 的特征、理念以及如何安装使用 Docker。Docker 特征Docker 有不少有趣的功能,通过本教程相信你会更好地理解它们。Docker 的特性主要包括以下几点:速度飞快以及优雅的隔离框架物美价廉CPU/内存的低消耗快速开/关机跨云计算基础构架Docker 组件与元素Docker 有三个组件和三个基本元素,读者可以快速浏览下面这个视频来了解这些组建和元素,以及它们的关系。三个组件分别是:Docker Client 是用户界面,它支持用户与 Docker Daemon 之间通信。-_Docker Daemon 运行于主机上,处理服务请求。Docker Index 是中
3、央 registry,支持拥有公有与私有访问权限的 Docker 容器镜像的备份。三个基本要素分别是:Docker Containers 负责应用程序的运行,包括操作系统、用户添加的文件以及元数据。Docker Images 是一个只读模板,用来运行 Docker 容器。DockerFile 是文件指令集,用来说明如何自动创建 Docker 镜像。在讨论 Docker 组件和基本要素如何交互之前,让我们来谈谈 Docker 的支柱。Docker 使用以下操作系统的功能来提高容器技术效率:Namespaces 充当隔离的第一级。确保一个容器中运行一个进程而且不能看到或影响容器外的其它进程。Con
4、trol Groups 是 LXC 的重要组成部分,具有资源核算与限制的关键功能。-_UnionFS(文件系统)作为容器的构建块。为了支持 Docker 的轻量级以及速度快的特性,它创建了用户层。如何把它们放在一起运行任何应用程序,都需要有两个基本步骤:1.构建一个镜像。2.运行容器。这些步骤都是从 Docker Client 的命令开始的。Docker Client 使用的是 Docker 二进制文件。在基础层面上,Docker Client 会告诉 Docker Daemon 需要创建的镜像以及需要在容器内运行的命令。当 Daemon 接收到创建镜像的信号后,会进行如下操作:第 1 步:构
5、建镜像如前所述,Docker Image 是一个构建容器的只读模板,它包含了容器启动所需的所有信息,包括运行程序和配置数据。每个镜像都源于一个基本的镜像,然后根据 Dockerfile 中的指令创建模板。对于每个指令,在镜像上创建一个新的层面。一旦镜像创建完成,就可以将它们推送到中央 registry:Docker Index,以供他人使用。然而,Docker Index 为镜像提供了两个级别的访问权限:公有访问和私有访问。你可以将镜像存储在私有仓库,Docker 官网有私有仓库的套餐可以供你选择。总之,公有仓库是可搜索和可重复使用的,而私有仓库只能给那些拥有访问权限的成员使用。Docker
6、Client 可用于 Docker Index 内的镜像搜索。第 2 步:运行容器-_运行容器源于我们在第一步中创建的镜像。当容器被启动后,一个读写层会被添加到镜像的顶层。当分配到合适的网络和 IP 地址后,需要的应用程序就可以在容器中运行了。如果你还是不太理解,先别急,在接下来的内容中我们将会和你分享很多的实战案例。目前为止,我们已经介绍了 Docker 的基本概念,接下来,让我们一起安装 Docker!安装 Docker:快速指南下面让我们来看看如何在 Ubuntu 12.04 LTS 上安装 Docker(译者注:在 CentOS 6.5 安装可以参考这里):1.检查 APT 系统的 H
7、TTPS 兼容性。如果 usr/lib/apt/methods/https 文件不存在,请安装 apt-transport-https 程序包。2.在本地添加 Docker Repositor 密钥。 Repository key: hkp:/:80 -recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E93.添加 Docker Repository 到 APT 源列表。4.安装 lxc-Docker 程序包。 sudo apt-get update sudo apt-get install lxc-docker5.验证所安装的内容。 sudo d
8、ocker run -i -t ubuntu /bin/bashDocker 入门教程(二)命令【编者的话】DockerOne 组织翻译了 Flux7 的 Docker 入门教程,本文是系列入门教程的第二篇,介绍了 Docker 的基本命令以及命令的用法和功能。在 Docker 系列教程的第一篇文章中,我们了解了 Docker 的基础知识,知道了它是如何工作以及如何安装的。在这篇文章中,我们将学习 15 个 Docker 命令,并通过实践来学习它是如何工作的。首先,让我们通过下面的命令来检查 Docker 的安装是否正确:docker info 如果没有找到这条命令,则表示 Docker 安装
9、错误。如果安装正确,则会输出类似下面的内容:-_到这一步 Docker 里还没有镜像或是容器。所以,让我们通过使用命令预先构建的镜像来创建来一个:sudo docker pull busyboxBusyBox 是一个最小的 Linux 系统,它提供了该系统的主要功能,不包含一些与 GNU 相关的功能和选项。下一步我们将运行一个“Hello World”的例子,我们暂且叫它“Hello Docker”吧。docker run busybox /bin/echo Hello Docker-_现在,让我们以后台进程的方式运行 hello docker:sample_job=$(docker run
10、-d busybox /bin/sh -c “while true; do echo Docker; sleep 1; done“)sample_job 命令会隔一秒打印一次 Docker,使用 docker logs 可以查看输出的结果。如果没有给这个 job 起名字,那这个 job 就会被分配一个 id,以后使用命令例如 docker logs 查看日志就会变得比较麻烦。运行 docker logs 命令来查看 job 的当前状态:docker logs $sample_job所有 Docker 命令可以用以下命令查看:docker help名为 sample_job 的容器,可以使用以下
11、命令来停止:docker stop $sample_job-_使用以下命令可以重新启动该容器:docker restart $sample_job如果要完全移除容器,需要先将该容器停止,然后才能移除。像这样:docker stop $sample_jobdocker rm $sample_job将容器的状态保存为镜像,使用以下命令:docker commit $sample_job job1注意,镜像名称只能取字符a-z和数字0-9。现在,你就可以使用以下命令查看所有镜像的列表:docker images在我们之前的 Docker 教程中,我们学习过镜像是存储在 Docker registry
12、。在 registry 中的镜像可以使用以下命令查找到:docker search (image-name)查看镜像的历史版本可以执行以下命令:docker history (image_name)-_最后,使用以下命令将镜像推送到 registry:docker push (image_name)非常重要的一点是,你必须要知道存储库不是根存储库,它应该使用此格式(user)/(repo_name)。这都是一些非常基本的 Docker 命令。在我们 Docker 教程系列的第六章,我们将讨论如何使用Docker 运行 Python 的 Web 应用程序,以及一些进阶的 Docker 命令。Do
13、cker 入门教程(三)Dockerfile【编者的话】DockerOne 组织翻译了 Flux7 的 Docker 入门教程,本文是系列入门教程的第三篇,介绍了 Dockerfile 的语法,DockerOne 目前在代码高亮部分还有些 Bug,我们会尽快修复,目前在代码部分有会些字符会被转义。在 Docker 系列教程的上一篇文章中,我们介绍了 15 个 Docker 命令,你应该对 Docker 有个大致的了解了。那 15 个命令在手动创建镜像时会用到,它们涵盖了镜像的创建、提交、搜索、pull 和 push的功能。现在问题来了,既然 Docker 能自动创建镜像,那为什么要选择耗时而又
14、乏味的方式来创建镜像呢?Docker 为我们提供了 Dockerfile 来解决自动化的问题。在这篇文章中,我们将讨论什么是Dockerfile,它能够做到的事情以及 Dockerfile 的一些基本语法。易于自动化的命令Dockerfile 包含创建镜像所需要的全部指令。基于在 Dockerfile 中的指令,我们可以使用 Docker build 命令来创建镜像。通过减少镜像和容器的创建过程来简化部署。Dockerfile 支持支持的语法命令如下:-_INSTRUCTION argument指令不区分大小写。但是,命名约定为全部大写。所有 Dockerfile 都必须以 FROM 命令开始
15、。 FROM 命令会指定镜像基于哪个基础镜像创建,接下来的命令也会基于这个基础镜像(译者注:CentOS 和 Ubuntu 有些命令可是不一样的)。FROM 命令可以多次使用,表示会创建多个镜像。具体语法如下:FROM 例如:FROM ubuntu上面的指定告诉我们,新的镜像将基于 Ubuntu 的镜像来构建。继 FROM 命令,DockefFile 还提供了一些其它的命令以实现自动化。在文本文件或 Dockerfile 文件中这些命令的顺序就是它们被执行的顺序。让我们了解一下这些有趣的 Dockerfile 命令吧。1. MAINTAINER:设置该镜像的作者。语法如下:MAINTAINER
16、 2. RUN:在 shell 或者 exec 的环境下执行的命令。RUN 指令会在新创建的镜像上添加新的层面,接下来提交的结果用在 Dockerfile 的下一条指令中。语法如下:RUN command3. ADD:复制文件指令。它有两个参数和。destination 是容器内的路径。source 可以是 URL 或者是启动配置上下文中的一个文件。语法如下:ADD src destination-_4. CMD:提供了容器默认的执行命令。 Dockerfile 只允许使用一次 CMD 指令。 使用多个 CMD 会抵消之前所有的指令,只有最后一个指令生效。 CMD 有三种形式:CMD “exe
17、cutable“,“param1“,“param2“CMD “param1“,“param2“CMD command param1 param25. EXPOSE:指定容器在运行时监听的端口。语法如下:EXPOSE ;6. ENTRYPOINT:配置给容器一个可执行的命令,这意味着在每次使用镜像创建容器时一个特定的应用程序可以被设置为默认程序。同时也意味着该镜像每次被调用时仅能运行指定的应用。类似于CMD,Docker 只允许一个 ENTRYPOINT,多个 ENTRYPOINT 会抵消之前所有的指令,只执行最后的 ENTRYPOINT 指令。语法如下:ENTRYPOINT “executab
18、le“, “param1“,“param2“ENTRYPOINT command param1 param27. WORKDIR:指定 RUN、CMD 与 ENTRYPOINT 命令的工作目录。语法如下:WORKDIR /path/to/workdir8. ENV:设置环境变量。它们使用键值对,增加运行程序的灵活性。语法如下:ENV 9. USER:镜像正在运行时设置一个 UID。语法如下:USER -_10. VOLUME:授权访问从容器内到主机上的目录。语法如下:VOLUME “/data“Dockerfile 最佳实践与使用的其他任何应用程序一样,总会有可以遵循的最佳实践。你可以阅读更多
19、有关 Dockerfile 的最佳实践。以下是我们列出的基本的 Dockerfile 最佳实践:保持常见的指令像 MAINTAINER 以及从上至下更新 Dockerfile 命令;当构建镜像时使用可理解的标签,以便更好地管理镜像;避免在 Dockerfile 中映射公有端口;CMD 与 ENTRYPOINT 命令请使用数组语法。在接下来的文章中,我们将讨论 Docker Registry 及其工作流程。Docker 入门教程(四)Docker Registry【编者的话】DockerOne 组织翻译了 Flux7 的 Docker 入门教程,本文是系列入门教程的第四篇,介绍了 Docker
20、Registry,它是 Docker 中的重要组件。本文通过情景演绎的方式对其进行了介绍,图文并茂,强烈推荐读者阅读。在 Docker 系列教程的上一篇文章中,我们讨论了 Dockerfile 的重要性并提供了一系列 Dockerfile 的命令,使镜像的自动构建更加容易。在这篇文章中,我们将介绍 Docker 的一个重要组件:Docker Registry。它是所有仓库(包括共有和私有)以及工作流的中央 Registry。在深入 Docker Registry之前,让我们先去看看一些常见的术语和与仓库相关的概念。1.Repositories(仓库)可以被标记为喜欢或者像书签一样标记起来-_2
21、.用户可以在仓库下评论。3.私有仓库和共有仓库类似,不同之处在于前者不会在搜索结果中显示,也没有访问它的权限。只有用户设置为合作者才能访问私有仓库。4.成功推送之后配置 webhooks。Docker Registry 有三个角色,分别是 index、registry 和 registry client。角色 1 - Index index 负责并维护有关用户帐户、镜像的校验以及公共命名空间的信息。它使用以下组件维护这些信息:Web UI元数据存储认证服务符号化这也分解了较长的 URL,以方便使用和验证用户存储库。角色 2 -Registryregistry 是镜像和图表的仓库。然而,它没有一
22、个本地数据库,也不提供用户的身份认证,由 S3、云文件和本地文件系统提供数据库支持。此外,通过 Index Auth service 的 Token 方式进行身份认证。Registries 可以有不同的类型。现在让我们来分析其中的几种类型:1.Sponsor Registry:第三方的 registry,供客户和 Docker 社区使用。2.Mirror Registry:第三方的 registry,只让客户使用。3.Vendor Registry:由发布 Docker 镜像的供应商提供的 registry。4.Private Registry:通过设有防火墙和额外的安全层的私有实体提供的 r
23、egistry。-_角色 3 -Registry ClientDocker 充当 registry 客户端来负责维护推送和拉取的任务,以及客户端的授权。Docker Registry 工作流程详解现在,让我们讨论五种情景模式,以便更好地理解 Docker Registry。情景 A:用户要获取并下载镜像。所涉及的步骤如下:1.用户发送请求到 index 来下载镜像。2.index 发出响应,返回三个相关部分信息:该镜像所处的 registry该镜像包括所有层的校验以授权为目的的 Token 注意:当请求 header 里有 X-Docker-Token 时才会返回 Token。而私人仓库需要基
24、本的身份验证,对于公有仓库这一点不是强制性的。3.用户通过响应后返回的 Token 和 registry 沟通,registry 全权负责镜像,它用来存储基本的镜像和继承的层。4.registry 现在要与 index 证实该 token 是被授权的。5.index 会发送“true” 或者 “false”给 registry,由此判定是否允许用户下载所需要的镜像。-_情景 B:用户想要将镜像推送到 registry 中。其中涉及的步骤如下:1.用户发送附带证书的请求到 index 要求分配库名。2.在认证成功,命名空间可用之后,库名也被分配。index 发出响应返回临时的 token。3.镜
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Docke 基础 学习 入门 资料
限制150内