本文介绍了Docker与Registry,作者说Docker是一个application hosting框架,亮点是简化应用的部署以及应用部署的版本控制。同时,作者介绍了Docker Registry的安装以及一个可以通过网页浏览Registry的镜像项目docker-registry-web。

Docker是一个应用托管框架(application hosting framework),它可以通过类似虚拟机一样的容器来部署、管理应用,容器又可以通过API创建和控制它们。

Docker允许你把依赖/服务器和应用打包成一个叠加在其他镜像(如Ubuntu,或专为需求准备的内容)之上的瘦小镜像。有别于虚拟机的是,尽管使用了LXC和cgroups(前面文章中提到的Linux概念)将它们与其它系统中的程序严格地隔离开来,它们却共享着相同的资源,并且几乎没有额外开销。当你启动一个虚拟机,你最终得到的是一个用于安装或运行应用的提示符或UI。当你启动一个应用容器,你只要运行一个用于启动应用及其依赖的脚本,仅此而已。你能在一个系统上运行数个虚拟机,却可以运行上千个应用容器。如果你想要流线分布,可以考虑在系统层面上使用CoreOS来托管你的镜像。

Docker的另一个功能是版本控制。你可以把容器里做的任何改变提交成一个新的镜像。当然,你也可以使用同一个镜像(镜像本身是不可变的)启动任意多个容器。

在分发镜像给其他团队或公司的过程中,可能需要在你的当前系统之外找个地方发布或定位你的镜像。这可通过Registry实现。尽管Docker提供了公共的Docker Hub Registry,你或许想要一个用于自己公司或团队的私有的Registry。

因为Docker的组件/附件自身经常是通过Docker镜像发布的,本示例也侧面展示了启动一个以Docker为基础的应用是多么简单(如果你之前并不熟悉这块)。除了服务占用的端口之外,你无须知道客户机应用的任何东西。实际上,你可以启动其他Docker镜像需要的镜像(之后就被称为容器),让Docker映射随机的本地端口给它,然后将提供服务的容器的端口自动转发到依赖这些服务的容器上(通过“链接”功能)。

使用类似Registry项目首页示例的命令来启动你的Registry:

$ docker run 
     -e SETTINGS_FLAVOR=s3 
     -e AWS_BUCKET=mybucket 
     -e STORAGE_PATH=/registry 
     -e AWS_KEY=myawskey 
     -e AWS_SECRET=myawssecret 
     -e SEARCH_BACKEND=sqlalchemy 
     -p 5000:5000 
     registry

这主要是为应用设置六个环境变量,让它保存到S3上,并将宿主(本地)系统的5000端口转发到客户机(Registry)的5000端口上。“registry”是运行的镜像名称(如果它是由某个用户拥有的,那看起来像是“/”)。如果本地尚不存在这个镜像,它将被定位并拉取(pull)下来。如果没有使用registry前缀做限定,将会假定它位于Docker Hub上。

这个示例中,我们从Hub上将Ubuntu镜像拉取下来,然后推送(push)到我们的Registry里。值得注意的是,我们通过添加Registry的主机名/端口前缀来限定“推送”和“拉取”请求到我们的registry中。

$ sudo docker pull ubuntu:14.04
$ sudo docker tag 826544226fdc yourregistry.net:5000/ubuntu
$ sudo docker push yourregistry.net:5000/ubuntu
$ sudo docker pull yourregistry.net:5000/ubuntu

tag命令在我们的registry中为给定的其他地方的镜像保留了一个新的位置。你可以在本地列表中得到它的ID字符串。

默认情况下,Registry只与Docker socket直接通讯或通过REST进行管理。如果你想更容易地浏览镜像,请安装docker-registry-web项目:

$ docker run -p 8080:8080 -e REG1=http://<system hostname>:5000/v1/ atcol/docker-registry-ui

请记住,它需要与你的Registry实例联系,所以要确保你提供的registry主机名在docker-registry-web容器里可被解析。

截图如下:

docker-registry-web实际上是一个Java应用,然而它是个设计不佳的镜像(如果知道这点对你很重要的话)。

最后,在你玩够Registry实例后,记得将它隐藏在Nginx代理之后,并添加认证(双向、HTTP等)。

Docker介绍以及Registry的安装 -摘自http://dockone.io/article/108的更多相关文章

  1. Centos + docker,Ubuntu + docker介绍安装及详细使用

    docker笔记 常用命令 设置docker开机自启:sudo chkconfig docker on 查所有镜像: docker images 删除某个镜像:docker rmi CONTAINER ...

  2. docker介绍和安装(一)

    虚拟化简介 虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器.网络.内存及存储等,予以抽象.转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以 ...

  3. Docker介绍及安装(一)

    一.Docker简介 1.1 docker介绍 Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的cgroup,namespace,以及 AUFS 类的 ...

  4. 微服务分布式电商项目学习笔记(三)---- docker介绍安装以及使用docker安装软件(2020/7/10)

    其实在介绍docker的使用和安装之前应该还要介绍虚拟机的安装与配置,以及虚拟网络的配置,但是我使用的是vmware,而视频课使用的是vagrant,这一块我简看的,因此没有过多的介绍,至于vmwar ...

  5. 1.docker介绍、命令、容器、镜像、数据卷、Dockerfile、常用软件安装、推送阿里云

    一.docker介绍 1.docker是什么 一款产品从开发到上线,从操作系统,到运行环境,再到应用配置.作为开发+运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对的问题,特别是各 ...

  6. Docker 介绍及安装

    Docker介绍 Docker采用 C/S架构 Docker daemon 作为服务端接受来自客户的请求,并处理这些请求(创建.运行.分发容器). Docker基于go语言并遵从Apache2.0协议 ...

  7. Docker介绍及安装

    Docker介绍 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制, ...

  8. Docker 介绍安装

    简介: Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行 ...

  9. 基于docker registry镜像安装私服docker hub

    采用docker registry镜像安装docker私服,通过https://hub.docker.com/_/registry链接搜索registry镜像 1.输入命令:docker pull r ...

随机推荐

  1. [Backbone]6. Collections.

    Define a collection: var AppointmentList = Backbone.Collection.extend({model: Appointment}); RESET t ...

  2. URL参数转换对象

    var parseQueryString = function (url) { var reg_url = /^[^\?]+\?([\w\W]+)$/, reg_para = /([^&=]+ ...

  3. 从Date类型字段获得当日周几的DAYNAME函数

    例: select dayname(date) from pos.daywork

  4. 更改Apache的首页

    本机Apache的安装过程请见: Apache的首页是由/usr/local/httpd/conf/httpd.conf文件的DocumentRoot决定的. ...## DocumentRoot: ...

  5. Python访问PostGIS(建表、空间索引、分区表)

    #encoding: utf-8 __author__ = 'Administrator' import psycopg2 import ppygis import datetime import s ...

  6. MYSQL 表中汉字写入或字段赋值时乱码情况排误

    -- 当改动字段值.或是直接写入时,汉字变成乱码情况 .[可注意一下数据库名,记得改动] -- 当字符顺序对汉字不兼容时,可能直接导致乱码情况发生. 最好做到库.表.字段(字符类型)排序规则是否一致 ...

  7. spring_restful_json_jdbc

    使用Spring MVC +JDBC 实现输出Json数据和视图两种形式 最后面有源代码 从web.xml開始配置: 声明定义两个Servlet各自是输出视图和json <!-- 声明一个Ser ...

  8. Android模拟神器——Genymotion

    文章地址:http://ryantang.me/blog/2013/08/16/genymotion/

  9. 转:Tkinter教程之Text(2)篇

    '''Tkinter教程之Text(2)篇''''''6.使用tag来指定文本的属性'''#创建一个指定背景颜色的TAG# -*- coding: cp936 -*-from Tkinter impo ...

  10. js 垃圾回收机制与内存管理

    1.原理 js按照固定的时间间隔找到不在继续使用的变量,释放其占用的内存. 2.实现方式 (1)标记清除 垃圾收集器给存储在内存上的所有变量都加上标记: 之后,去掉环境中的变量以及被环境引用变量的标记 ...