请选择 进入手机版 | 继续访问电脑版
搜索

151

主题

495

帖子

3358

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3358
发表于 2020-7-4 19:12:08 1842 浏览 0 回复

龙芯Fedora21 搭建docker-registry本地服务器

  • docker registry实现了docker镜像的管理和迁移,没有registrydocker的功能是不完整的。官方的registry直接拉取下来又不能使用,
  • 必须制作我们自己mips64el架构的registry镜像,笔者进行了艰苦的摸索,开创了一种下述正确的新方法。
  • 需要2台机器,为便于描述,下文中分别称为dscn1dscn3。其中,
  • dscn110.20.42.56):用于搭建docker的服务器
  • dscn310.20.42.189):用于最后拉取镜像时对docker-registry的测试
  • 一、编译m2crypto依赖
  • docker-registry镜像的制作依赖m2crypto包,先编译好此包,待用。
  • 下载m2crypto源码包,安装,编译
  • #wget ftp://ftp.pbone.net/mirror/archi ... 22.5-2.fc21.src.rpm       ;下载rpm源码包
  • #rpm -ivh m2crypto-0.22.5-2.fc21.src.rpm    ;安装源码包
  • #cd ~/rpmbuild/SPECS                        ;进入SPECS目录
  • #rpmbuild -ba m2crypto.spec                 ;编译m2crypto文件
  • 此时,会提示有依赖包错误
  • #yum install openssl swig                     ;安装依赖包
  • 修改m2crypto.specglobal multilib_arches添加mips64el架构
  • %global multilib_arches mips64el
  • 48行处,添加如下三行
  • %ifarch %{mips64el}
  • basearch=mips64el
  • %endif
  • 再次执行编译rpmbuild -ba m2crypto.spec,编译成功
  • #cd ~/rpmbuild/RPMS/mips64el/                ;进入RPMS目录,找到编译后的包
  • #rpm -ivh m2crypto-0.22.5-2.fc21.loongson.mips64el.rpm    ;安装编译之后的包

  • 二、制作registry镜像
  • 首先你的确保已经安装了docker,且已经制作了mips64el下的基本镜像(具体可参看笔者写的《上篇:龙芯Fedora21推出docker方案》)
  • #git clone https://github.com/docker/docker-registry/archive/0.9.1.tar.gz
  • ;下载docker-registry-0.9.1的官方镜像tar
  • #tar xvf 0.9.1.tar.gz -C /home          ;解压tar包到home目录下
  • #cd /home/docker-registry-0.9.1        ;进入解压目录
  • #grep “x86” ./* -r        ;查找上诉目录下含有x86的所有文件,将x86改成mips64el
  • 笔者修改了如下三个文件
  • #vim ./contrib/golang_impl/fixtures/index/images/e0acc43660ac918e0cd7f21f1020ee3078fec7b2c14006603bbc21499799e7d5/json
  • #vim ./contrib/golang_impl/fixtures/index/images/0e03f25112cd513ade7c194109217b9381835ac2298bd0ffb61d28fbe47081a8/json
  • #vim ./tests/data/511136ea3c5a64f264b78b5433614aec563103b4d4702f3ba7d4d2698e22c158/json
  • #vim ./config/config.yml          ;修改config.yml的dev(210行)处添加如下内容:
  • storage:local
  • storage_path:/home/data/dockerImag
  • loglevel:debug
  • #vim requirements/main.txt     ;修改main.txt文件,删除带有m2crypto一行
  • [Dockerfile
  • # change to your base image
  • FROM fedora-base
  • # Install pip
  • RUN yum  install -y \
  •         swig \
  •         python-pip \
  •         openssl \
  •         openssl-devel
  • RUN mkdir -p /docker-registry
  • COPY .  /docker-registry
  • COPY ./config/boto.cfg /etc/boto.cfg
  • #install pip
  • RUN easy_install pip
  • # Install core
  • RUN pip install file:///docker-registry/depends/docker-registry-core
  • # Install m2crypto registry
  • ADD ./m2crypto-0.22.5-2.fc21.loongson.mips64el.rpm /
  • RUN rpm -ivh /m2crypto-0.22.5-2.fc21.loongson.mips64el.rpm
  • RUN pip install file:///docker-registry#egg=docker-registry[bugsnag,newrelic,cors]
  • ENV DOCKER_REGISTRY_CONFIG /docker-registry/config/config_sample.yml
  • ENV SETTINGS_FLAVOR dev
  • EXPOSE 5000
  • CMD ["docker-registry"
  • #docker build -t fc21/registry .        ;进行编译
  • #docker run -d -p 5000:5000 -v /home/data/dockerImg:/tmp/registry fc21/registry                          ;启动镜像fc21/registry镜像
  • #docker tag docker.io/hello-world 10.20.42.56:5000/hello-world       ;修改hello-world镜像的tag,出现CA相关错误,看下面问题4解决
  • #docker push 10.20.42.56:5000/hello-world    ;push上传到dscn1的注册服务器
  • 如果上述操作成功,将会看到如下信息输出
[url=http://www.loongnix.org/index.php/%E6%96%87%E4%BB%B6ush%E9%95%9C%E5%83%8F.png][/url]
push一个镜像到registry仓库









三、 验证registry仓库 方法1:在dscn1的浏览器中输入 http://127.0.0.1:5000/v1/search 将会看到
浏览器验证本地registry服务器是否成功











方法2:在测试机dscn3执行下述命令,pull拉取dscn1上传的hello-world镜像
  • docker pull 10.20.42.56:5000/hello-world
将会看到类似下面的信息输出
[url=http://www.loongnix.org/index.php/%E6%96%87%E4%BB%B6ull%E6%8B%89%E5%8F%96%E9%95%9C%E5%83%8F.png][/url]
dscn3客户机拉取dscn1上的hello-world镜像









  • 四、错误总结
  • 1.ValueError: ('Missing distribution spec', '/tmp/piyush/common_bundle')
  • 因为pip install 必须指定类似http://的路径,如果是本地目录使用 file://+具体目录
  • 2.swig -python -I/usr/include/python2.7 -I/usr/include -I/usr/include/openssl -includeall -modern -D__x86_64__ -o SWIG/_m2crypto_wrap.c SWIG/_m2crypto.i
  • /usr/include/openssl/opensslconf.h:34: Error: Unable to find 'opensslconf-x86_64.h'
  • error: command 'swig' failed with exit status 1
  • 手动编译m2crypto,注销requirements/main.txt中的m2crypto,添加如下两行在dockerfile文件中
  • ADD ./m2crypto-0.22.5-2.fc21.loongson.mips64el.rpm /
  • RUN rpm -ivh /m2crypto-0.22.5-2.fc21.loongson.mips64el.rpm
  • 3.No non-localhost DNS nameservers are left in resolv.conf. Using default external servers : [nameserver 8.8.8.8 nameserver 8.8.4.4
  • 重启一下docker的服务。
  • 4.Error response from daemon: v1 ping attempt failed with error:
  •   Get https://10.20.42.56:5000/v1/_ping: EOF. If this private registry supports only HTTP or HTTPS with an unknown CA certificate
  • 编辑测试机的文件 vim /etc/sysconfig/docker  更改如下内容
  • 在启动守护进程的时候加入参数  docker -d --insecure-registry=10.20.42.56:5000      ip得根据具体情况更改
  • 5.failure: repodata/repomd.xml from dockerrepo: [Errno 256 No more mirrors to try.
  •         https://yum.dockerproject.org/repo/main/fedora/21/repodata/repomd.xml:  
  • [Errno 14 curl#77 - "<Unknown>"
  • 执行命令rpm --query --file  /etc/pki/tls/certs/ca-bundle.trust.crt 查看证书
  • //注销/etc/yum.repos.d/docker.repo里面所有的内容,重装证书,再恢复docker.repo内容yum reinstall ca-certificates-2014.2.1-1.5.fc21.loongson.noarch
  • 6.FATA[0001 Get https://index.docker.io/v1/repositories/library/hello-world/images: x509: failed to load system roots and no roots provided
  • 重装证书,重启docker服务
  • 7.pull拉取官方镜像失败
  • 添加dockerrepo vim /etc/yum.repos.d/docker.repo
  • [dockerrepo
  • name=Docker Repository
  • baseurl=https://yum.dockerproject.org/repo/main/fedora/$releasever/
  • enabled=1
  • gpgcheck=1
  • gpgkey=https://yum.dockerproject.org/gpg
  • 8.FATA[0000 Shutting down daemon due to errors: pid file found, ensure docker is not running or delete /var/run/docker.pid
  • 删除/var/run/docker.pid ,重新执行docker -d
  • 9.Error running DeviceCreate (createPool) dm_task_run failed
  • 由于内核模块的缺失导致的,这也是自己编译内核来升级带来的风险,修改内核配置文件(./boot/config-3.10.84-8.fc21.loongson.mips64el)重新编译内核
  • CONFIG_DM_THIN_PROVISIONING=y

回复

使用道具 举报

返回列表
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

登录或注册

官方客服

QQ:2551456065

官方QQ群

195631883

扫一扫关注迅为公众号

群号652692981

 
快速回复 返回顶部 返回列表