ImageVerifierCode 换一换
格式:DOCX , 页数:32 ,大小:350.57KB ,
资源ID:9730079      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9730079.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Docker学习笔记讲解.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Docker学习笔记讲解.docx

1、Docker学习笔记讲解Docker 学习笔记(CentOS 7.1)时间:2015-06-30 18:10:51 阅读:26 评论:0 收藏:0 点我收藏+ 标签:基本概念Docker 包括三个基本概念 镜像(Image) 容器(Container) 仓库(Repository)理解了这三个概念,就理解了 Docker 的整个生命周期。Docker 镜像Docker 镜像就是一个只读的模板。例如:一个镜像可以包含一个完整的 ubuntu 操作系统环境,里面仅安装了 Apache 或用户需要的其它应用程序。镜像可以用来创建 Docker 容器。Docker 提供了一个很简单的机制来创建镜像或者

2、更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。注:镜像是只读的,容器在启动的时候创建一层可写层作为最上层Docker 容器Docker 利用容器来运行应用。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中

3、的应用程序。*注:镜像是只读的,容器在启动的时候创建一层可写层作为最上层。Docker 仓库仓库是集中存放镜像文件的场所。有时候会把仓库和仓库注册服务器(Registry)混为一谈,并不严格区分。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。仓库分为公开仓库(Public)和私有仓库(Private)两种形式。最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载。 国内的公开仓库包括 Docker Pool等,可以提供大陆用户更稳定快速的访问。当然,用户也可以在本地网络内创建一个私有仓库。当用户创建了自己的镜像之后就可

4、以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了。注:Docker 仓库的概念跟 Git 类似,注册服务器可以理解为 GitHub 这样的托管服务。 安装方式安装EPELEPEL 是yum的一个软件源,里面包含了许多基本源里没有的软件。(安装需要连接网络)安装了这个源后,就可以使用yum来安装 docker了。yum install epel-release-7安装过程需要交互,输入“y”按回车就可以了。验证是否安装成功:yum repolist安装Docker-ioyum -y install docker-i

5、o配置开机自启动:chkconfig docker on完成后,启动服务:service docker start应用Docker通过下面命令来验证doecker是否安装成功:docker info出现下面类似内容,则表示安装成功:使用下面命令网络仓库下载需要镜像:docker pull centos:latest #下载centosdocker pull ubutun:latest #下载ubutun使用下面命令查看当前镜像:docker images在列出信息中,可以看到几个字段信息 来自于哪个仓库,比如 docker.io/ubuntu 镜像的标记,比如latest 它的 ID 号(唯一

6、)07f8e8c5e660 创建时间 镜像大小使用docker完成“hello world:docker run ubuntu:07f8e8c5e660 /bin/echo hello worlddocker run centos:fd44297e2ddb /bin/echo hello docker进入交互式容器:sudo docker run -t -i ubuntu:07f8e8c5e660 /bin/bash-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上 -i 则让容器的标准输入保持打开。修改已有镜像:使用交互模式在已有的centos镜像中安装

7、gem 应用,exit退出后,使用 docker commit来提交更新后的副本docker commit -m add gem -a Ray 032c501e000f docker.io/centos:v2 -m 来指定提交的说明信息,跟我们使用的版本控制工具一样; -a 可以指定更新的用户信息; 之后是用来创建镜像的容器的 ID; 最后指定目标镜像的仓库名和 tag 信息,创建成功后会返回这个镜像的 ID 信息。可以通过 docker images 查看新创建的镜像:可以再通过 docker run 打开新创建的镜像:docker run -t -i centos:v2 /bin/bash

8、利用dockerfile来创建镜像使用 docker commit 来扩展一个镜像比较简单,但是不方便在一个团队中分享。我们可以使用 docker build来创建一个新的镜像。为此,首先需要创建一个 Dockerfile,包含一些如何创建镜像的指令,新建一个目录和一个 Dockerfilerootlocalhost # cd /opt/rootlocalhost opt#rootlocalhost opt# mkdir ubunturootlocalhost opt# cd ubuntu/rootlocalhost ubuntu# touch DockerfileDockerfile 中每一

9、条指令都创建镜像的一层,例如:1. 1. # This is a comment2. MAINTAINER Ray 3. FROM ubuntu:latest4. RUN apt-get -qqy install ruby ruby-dev5. RUN apt-get -qq updateDockerfile 基本的语法是使用#来注释FROM 指令告诉 Docker 使用哪个镜像作为基础 RUN开头的指令会在创建中运行,比如安装一个软件包,在这里使用 apt-get 来安装了一些软件编写完成 Dockerfile 后可以使用 docker build 来生成镜像。docker build -t

10、=ubuntu:latest .其中 -t 标记来添加 tag,指定新的镜像的用户信息。“.” 是 Dockerfile 所在的路径(当前目录),也可以替换为一个具体的 Dockerfile 的路径。可以看到 build 进程在执行操作。注意一个镜像不能超过 127 层它要做的第一件事情就是上传这个 Dockerfile 内容,因为所有的操作都要依据 Dockerfile 来进行。然后,Dockerfile 中的指令被一条一条的执行,每一步都创建了一个新的容器,在容器中执行指令并提交修改(就跟之前介绍过的 docker commit 一样)。当所有的指令都执行完毕之后,返回了最终的镜像 id。

11、所有的中间步骤所产生的容器都被删除和清理了。此外,还可以利用 ADD 命令复制本地文件到镜像; (需要再做尝试)用 EXPOSE 命令来向外部开放端口;* 用 CMD 命令来描述容器启动后运行的程序等。从本地文件系统导入要从本地文件系统导入一个镜像,可以使用 openvz(容器虚拟化的先锋技术)的模板来创建: openvz 的模板下载地址为 templates 。比如,先下载了一个 centos-7-x86_64-minimal.tar.gz 的镜像,之后使用以下命令导入:cat centos-7-x86_64-minimal.tar.gz | docker import - centos:v

12、7.mini然后查看导入的镜像:上传镜像用户可以通过 docker push 命令,把自己创建的镜像上传到仓库中来共享。docker push docker.io/ubuntu存出镜像如果要导出镜像到本地文件,可以使用 docker save 命令。docker save -o ubuntu.14.0.4.tar docker.io/ubuntu:latest载入镜像可以使用 docker load 从导出的本地文件中再导入到本地镜像库,例如docker load -input ubuntu.14.0.4.tar或者docker load /.bashrc; source /.bashrc同时

13、建议大家下载 .bashrc_docker,并将内容放到 .bashrc 中。这个文件中定义了很多方便使用 Docker 的命令,例如 docker-pid 可以获取某个容器的 PID;而 docker-enter 可以进入容器或直接在容器内执行命令。下面给出一个完整的例子:docker psecho $(docker-pid 10f839063336) #通过容器ID查看,容器中的首进程IDdocker-enter 10f839063336 ls #可以docker-enter 容器id 直接操作容器nsenter -target 838 -mount -uts -ipc -net -pid

14、 #通过首进程ID(838)进入容器导入和导出容器如果要导出本地某个容器,可以使用 docker export 命令,导入某个容器快照使用 docker import命令:docker export 7691a814370e ubuntu.tar #导出容器到本地cat ubuntu.tar | docker import - test/ubuntu:v1.0 #导入容器快照到镜像docker import example/imagerepo #从URL导入容器快照注:用户既可以使用 docker load 来导入镜像存储文件到本地镜像库,也可以使用 docker import 来导入一个容器

15、快照到本地镜像库。 这两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也要大。 此外,从容器快照文件导入时可以重新指定标签等元数据信息。删除容器可以使用 docker rm 来删除一个处于终止状态的容器。 例如docker rm trusting_newton如果要删除一个运行中的容器,可以添加 -f 参数。Docker 会发送 SIGKILL 信号给容器。仓库仓库(Repository)是集中存放镜像的地方。一个容易混淆的概念是注册服务器(Registry)。实际上注册服务器是管理仓库的具体服务器,每个服务器上可以有

16、多个仓库,而每个仓库下面有多个镜像。从这方面来说,仓库可以被认为是一个具体的项目或目录。例如对于仓库地址 来说, 是注册服务器地址,ubuntu 是仓库名。大部分时候,并不需要严格区分这两者的概念。Docker Hub基本操作目前 Docker 官方维护了一个公共仓库 Docker Hub,其中已经包括了超过 15,000 的镜像。大部分需求,都可以通过在 Docker Hub 中直接下载镜像来实现。用户无需登录即可通过 docker search 命令来查找官方仓库中的镜像,并利用 docker pull 命令来将它下载到本地。例如以 centos 为关键词进行搜索:docker searc

17、h centos可以看到返回了很多包含关键字的镜像,其中包括镜像名字、描述、星级(表示该镜像的受欢迎程度)、是否官方创建、是否自动创建。官方的镜像说明是官方项目组创建和维护的,automated 资源允许用户验证镜像的来源和内容。根据是否是官方提供,可将镜像资源分为两类。一种是类似 centos 这样的基础镜像,被称为基础或根镜像。这些基础镜像是由 Docker 公司创建、验证、支持、提供。这样的镜像往往使用单个单词作为名字。还有一种类型,比如 tianon/centos 镜像,它是由 Docker 的用户创建并维护的,往往带有用户名称前缀。可以通过前缀 user_name/ 来指定使用某个用

18、户提供的镜像,比如 tianon 用户。另外,在查找的时候通过 -s N 参数可以指定仅显示评价为 N 星以上的镜像。下载官方 centos 镜像到本地:docker pull centos:latest私有仓库本节介绍如何使用本地仓库。docker-registry 是官方提供的工具,可以用于构建私有的镜像仓库。安装运行 docker-registry有时候使用 Docker Hub 这样的公共仓库可能不方便,用户可以创建一个本地仓库供私人使用。容器运行在安装了 Docker 后,可以通过获取官方 registry 镜像来运行。docker run -d -p 5000:5000 regis

19、try这将使用官方的 registry 镜像来启动本地的私有仓库。 用户可以通过指定参数来配置私有仓库位置,例如配置镜像存储到 Amazon S3 服务。docker run -e SETTINGS_FLAVOR=s3 -e AWS_BUCKET=acme-docker -e STORAGE_PATH=/registry -e AWS_KEY=AKIAHSHB43HS3J92MXZ -e AWS_SECRET=xdDowwlK7TJajV1Y7EoOZrmuPEJlHYcNP2k4j49T -e SEARCH_BACKEND=sqlalchemy -p 5000:5000 registry此外

20、,还可以指定本地路径(如 /home/user/registry-conf )下的配置文件。docker run -d -p 5000:5000 -v /home/user/registry-conf:/registry-conf -e DOCKER_REGISTRY_CONFIG=/registry-conf/config.yml registry默认情况下,仓库会被创建在容器的 /tmp/registry 下。可以通过 -v 参数来将镜像文件存放在本地的指定路径。 例如下面的例子将上传的镜像放到 /opt/data/registry 目录。docker run -d -p 5000:500

21、0 -v /opt/data/registry:/tmp/registry registry本地安装对于 Ubuntu 或 CentOS 等发行版,可以直接通过源安装。Ubuntusudo apt-get install -y build-essential python-dev libevent-dev python-pip liblzma-devsudo pip install docker-registry CentOSyum install -y python-devel libevent-devel python-pip gcc xz-develpython-pip install

22、docker-registry也可以从 docker-registry 项目下载源码进行安装。apt-get install build-essential python-dev libevent-dev python-pip libssl-dev liblzma-dev libffi-devgit clone cd docker-registrysudo python setup.py install然后修改配置文件,主要修改 dev 模板段的 storage_path 到本地的存储仓库的路径。cp config/config_sample.yml config/config.yml之后启动

23、 Web 服务。gunicorn -c contrib/gunicorn.py docker_registry.wsgi:application或者gunicorn -access-logfile -error-logfile -k gevent -b 0.0.0.0:5000 -w 4 -max-requests 100 docker_registry.wsgi:application此时使用 curl 访问本地的 5000 端口,看到输出 docker-registry 的版本信息说明运行成功。注:config/config_sample.yml 文件是示例配置文件。在私有仓库上传、下载、

24、搜索镜像创建好私有仓库之后,就可以使用 docker tag 来标记一个镜像,然后推送它到仓库,别的机器上就可以下载下来了。例如私有仓库地址为 192.168.7.26:5000。先在本机查看已有的镜像。$ sudo docker imagesREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZEubuntu latest ba5877dc9bec 6 weeks ago 192.7 MBubuntu 14.04 ba5877dc9bec 6 weeks ago 192.7 MB使用docker tag 将 ba58 这个镜像标记为 192.168.7.26:

25、5000/test(格式为 docker tag IMAGE:TAG REGISTRYHOST/USERNAME/NAME:TAG)。$ sudo docker tag ba58 192.168.7.26:5000/testroot # docker imagesREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZEubuntu 14.04 ba5877dc9bec 6 weeks ago 192.7 MBubuntu latest ba5877dc9bec 6 weeks ago 192.7 MB192.168.7.26:5000/test latest ba5877dc9bec 6 weeks ago 192.7 M使用 docker push 上传标记的镜像。docker push 192.168.7.26:5000/testThe push refers to a repository 192.168.7.26:5000/test (len: 1)Sending image listPushing repository 192.168.7.26:5000/test (1 tags)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1