本文描述了如何在POWER8服务器上搭建一个本地化的Docker镜像仓库,主要涉及镜像制作,Docker Registry服务启动等。希望能够对在非X86服务器上搭建Docker仓库的同学提供参考。
声明:本文仅作为个人学习使用!

第一步,在服务器上启动一个KVM虚拟机(ip: 172.16.13.221),编译Docker生成可执行文件,启动Docker Daemon服务。可参考我的另一篇文档。

第二步,制作Registry镜像
  由于Ubuntu环境中暂时还没有docker registry镜像,需要自己制作
  1,制作Ubuntu14:04基础镜像
  $ sudo apt-get install -y debootstrap
  $ curl -o debootstrap.sh https://raw.githubusercontent.com/docker/docker/master/contrib/mkimage/debootstrap
  $ chmod 755 debootstrap.sh
  $ sudo ./debootstrap.sh ubuntu --components=main,universe trusty
  $ sudo tar -C ubuntu -c . | docker import - ubuntu:14.04
  $ docker tag ubuntu:14.04 ubuntu:trusty
  $ docker tag ubuntu:14.04 ubuntu:latest
  $ sudo rm -fr ubuntu

  $ docker images
  REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
  ubuntu 14.04 78c113d93188 59 seconds ago 197.6 MB
  ubuntu latest 78c113d93188 59 seconds ago 197.6 MB
  ubuntu trusty 78c113d93188 59 seconds ago 197.6 MB

  2,下载docker-registry
  $ git clone https://github.com/docker/docker-registry
  3,打补丁
  $ cd ~/docker-registry
  $ cat ~/docker-registry/docker-registry.patch
*** docker-registry.orig/Dockerfile Sat Jan 31 07:20:32 2015
--- docker-registry/Dockerfile Sat Jan 31 13:12:11 2015
***************
*** 19,24 ****
--- 19,27 ----
libssl-dev \
liblzma-dev \
libevent1-dev \
+ # Install deps for building gevent
+ curl \
+ cython \
&& rm -rf /var/lib/apt/lists/*

COPY . /docker-registry
***************
*** 27,32 ****
--- 30,45 ----
# Install core
RUN pip install /docker-registry/depends/docker-registry-core

+ # Install gevent 1.0.1 using updated config.guess and config.sub
+ RUN curl https://pypi.python.org/packages/source/g/gevent/gevent-1.0.1.tar.gz | tar -xzf - -C / \
+ && curl -o /gevent-1.0.1/libev/config.guess \
+ 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD' \
+ && curl -o /gevent-1.0.1/libev/config.sub \
+ 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD' \
+ && cp -pf /gevent-1.0.1/libev/config.guess /gevent-1.0.1/c-ares/config.guess \
+ && cp -pf /gevent-1.0.1/libev/config.sub /gevent-1.0.1/c-ares/config.sub \
+ && pip install /gevent-1.0.1
+
# Install registry
RUN pip install file:///docker-registry#egg=docker-registry[bugsnag,newrelic,cors]
  $ patch -p1 < docker-registry.patch

  4,制作Registry镜像
  $ docker build -t registry .
  Removing intermediate container bc9ea34e0252
  Successfully built 2be3e95c5b2f

第三步,启动Registry服务
  $ docker run -d -p 5000:5000 registry
  [2015-12-09 06:28:48 +0000] [1] [INFO] Starting gunicorn 19.1.1
  [2015-12-09 06:28:48 +0000] [1] [INFO] Listening at: http://0.0.0.0:5000 (1)
  [2015-12-09 06:28:48 +0000] [1] [INFO] Using worker: gevent
  [2015-12-09 06:28:48 +0000] [13] [INFO] Booting worker with pid: 13
  [2015-12-09 06:28:48 +0000] [14] [INFO] Booting worker with pid: 14
  ......

  $ docker ps
  CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  266b27fb6d5b registry "docker-registry" 22 seconds ago Up 20 seconds 0.0.0.0:5000->5000/tcp goofy_jennings

第四步,上传镜像到registry
  我在有Registry容器的KVM中上传镜像总是遇到连接错误,后来没有解决。就尝试在另一个KVM里面上传,结果成功了。
  1,在另一个KVM中启动docker Daemon
  2,使用docker import将之前制作的文件放入本地docker 系统中
  3,配置docker.conf文件,设置registry地址(172.16.13.221:5000),使用--insecure-registry参数,然后restart docker Daemon。
  在/ect/init/docker.conf中添加
  DOCKER_OPTS="--insecure-registry 172.16.13.221:5000"

  $ps -aux
  /usr/bin/docker daemon --insecure-registry 172.16.13.221:5000
  4,给待上传的镜像打上tag
  $ docker tag f3b2472e2593 172.16.13.221:5000/ubuntu
  $ docker images
  REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
  172.16.13.221:5000/ubuntu latest f3b2472e2593 2 days ago 188.3 MB
  ubuntu 14.04 f3b2472e2593 2 days ago 188.3 MB
  ubuntu latest f3b2472e2593 2 days ago 188.3 MB
  ubuntu trusty f3b2472e2593 2 days ago 188.3 MB
  5,Push镜像(传输可能中断,需要多尝试几次)
  $ docker push 172.16.13.221:5000/ubuntu
  The push refers to a repository [localhost:5000/ubuntu] (len: 1)
  Sending image list
  Pushing repository 172.16.13.221:5000/ubuntu (1 tags)
  f3b2472e2593: Image successfully pushed

  $ docker search 172.16.13.221:5000/ubuntu
  NAME DESCRIPTION STARS OFFICIAL AUTOMATED
  library/ubuntu 0

参考资料:
  Build and use Docker on the IBM POWER Linux platform
  https://www.ibm.com/developerworks/library/d-docker-on-power-linux-platform/

在Ubuntu14.04系统POWER8服务器上搭建Docker Registry服务的更多相关文章

  1. Ubuntu14.04下FTP服务器的搭建配置 标签: ubuntuftp服务器虚拟机 2017-06-13 15:24 161人阅读 评

    首先说明一下,我是在虚拟机中装的Ubuntu14.04,物理机是Win10,最初只是为了在两个系统间传输文件才在Ubuntu中安装了ftp服务器,从Windows端登陆其即可.最初也是按照网上的各种教 ...

  2. Ubuntu14.04 mount远程服务器上的目录

    备忘用. 一,远程服务器设置: 1,在/etc/exports中添加如下配置: /home/xxx *(insecure,rw,sync,no_root_squash,anonuid=123,anon ...

  3. 在一台服务器上搭建多个网站的方法(Apache版)

    Apache的配置文件一般放置在/etc/httpd/conf文件夹下,httpd.conf是它的主配置文件,在进行配置时可以将虚拟主机的配置文件单独配置,如取名为vhost.conf,然后再http ...

  4. 在 Ubuntu 18.04 LTS 无头服务器上安装 Oracle VirtualBox

    作者: Sk 译者: LCTT qhwdw | 2018-10-12 01:59 本教程将指导你在 Ubuntu 18.04 LTS 无头服务器上,一步一步地安装 Oracle VirtualBox. ...

  5. 手把手教你在VMware虚拟机中安装Ubuntu14.04系统

    在VMware中创建完虚拟机之后,一般需要给虚拟机安装系统,比较受青睐的系统有Ubuntu和Centos,关于Centos系统的安装之前已经写过了,感兴趣的小伙伴可以戳这篇文章:靠谱的centos7. ...

  6. 基于Ubuntu14.04系统的nvidia tesla K40驱动和cuda 7.5安装笔记

    基于Ubuntu14.04系统的nvidia tesla K40驱动和cuda 7.5安装笔记 飞翔的蜘蛛人 注1:本人新手,文章中不准确的地方,欢迎批评指正 注2:知识储备应达到Linux入门级水平 ...

  7. 在MAC服务器上搭建docker-registry(转)

    在MAC服务器上搭建docker-registry 2014-03-14      0个评论    来源:在MAC服务器上搭建docker-registry   收藏    我要投稿 本文介绍如何在M ...

  8. PHP绿色集成环境在云服务器上的应用,PHPWAMP在服务器上搭建网站案例

    问:什么叫WAMP?答:Windows下的Apache+Mysql+PHP,称之为WAMP. 本文案例采用的PHP集成环境是我自己开发的纯绿色版WAMP软件(PHPWAMP). 我在这款集成环境里集成 ...

  9. 阿里云ECS服务器上搭建keepalived+mha+mysql5.6+gtid+一主两从+脚本判断架构踩的坑

    最近,公司项目搭建了一套后端数据库架构,不是在RDS,是在阿里云的ECS服务器上搭建keepalived.mha.mysql5.6.gtid.一主两从架构,目前还没有实现读写分离,以后架构升级,可能代 ...

随机推荐

  1. 使用spring @Scheduled注解执行定时任务、

    http://blog.csdn.net/sd4000784/article/details/7745947,留下来备用.

  2. Java(一)

    这个学期要学习七章的东西,目前我对第一章的内容掌握的还算良好,我学会了布局管理器,菜单栏,面板等一些组件的使用,但是对于事件监听器的使用还是有所欠缺.另外对于其他六章的内容都一无所知,之前也没有浏览过 ...

  3. 开源框架中常用的php函数

    类的自动加载后直接实例化 //自动加载类 function my_autoloader($class) { include $class . 'Class.php'; } spl_autoload_r ...

  4. Hql 中 dao 层 以及daoimpl 层的代码,让mvc 模式更直观简洁

    1.BaseDao接口: //使用BaseDao<T> 泛型 ,在service中注入的时候,只需要将T换为对应的bean即可 public interface BaseDao<T& ...

  5. ie8的兼容

    1.IE8以下不支持getElementsByClassName方法//解决IE8之类不支持getElementsByClassNameif (!document.getElementsByClass ...

  6. C#循环语句练习2

    1.羽毛球拍15元,球3元,水2元,有200元,每一种至少买一件,问有几种买法? 2.洗发水15元,牙刷5元,香皂2元,有150元,每一种至少买一件,问有几种买法? 3.用100元钱买100只鸡,公鸡 ...

  7. JSON数据;

    1.JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 2.JSON的规则很简单: 对象是一个无序的“‘名称/值'对”集合.一个对象以“{”(左括号)开始, ...

  8. Ubuntu下安装boost

    今天开始安装配置Ubuntu开发环境(Ubuntu 12.04).在干活之前就预计到会遇到很多问题,但是没想到一开始就卡壳,可能是linux中各种包的依赖关系太复杂了,决定写个帖子记录一下,免得以后再 ...

  9. eclipse安装ADT后在windows菜单下找不到android SDK and AVD Manager

    eclipse安装ADT后在windows菜单下找不到android SDK and AVD Manager选项的解决办法 - zhjr1220的专栏 - 博客频道 - CSDN.NET  http: ...

  10. 前端学习 第三弹: JavaScript语言的特性与发展

    前端学习 第三弹: JavaScript语言的特性与发展 javascript的缺点 1.没有命名空间,没有多文件的规范,同名函数相互覆盖 导致js的模块化很差 2.标准库很小 3.null和unde ...