Docker-----deepin系统下docker安装registry
<h2>环境说明</h2><p>一个坑逼的环境,也不能说坑逼,国产化的需求嘛。</p>
<div class="cnblogs_Highlighter">
<pre class="brush:csharp;gutter:true;">root@node22:/registry# uname -a
Linux node22 4.4.15-deepin-aere #137 SMP Tue Dec 18 17:06:43 CST 2018 sw_64 GNU/Linux
root@node22:/registry# lsb_release -a
No LSB modules are available.
Distributor ID: deepin
Description: deepin 15.2
Release: 15.2
Codename: kui
</pre>
</div>
<p>我直接安装了apt-get安装好了docker服务</p>
<p>根据深度官方提供的基础镜像安装好了一个基础镜像服务。</p>
<div class="cnblogs_Highlighter">
<pre class="brush:csharp;gutter:true;">https://docs.deepin.cn/d/fbcc4fb4b6/ 这个是基础容器镜像
</pre>
</div>
<p>问题来了,在官方网站找不到sw_64架构的registry容器。</p>
<p>只能自己动手编译一个。</p>
<h2>go环境部署</h2>
<p>#使用基本镜像启动容器</p>
<div class="cnblogs_Highlighter">
<pre class="brush:csharp;gutter:true;">docker run -it -d --name registry-p 4000:5000deepin
</pre>
</div>
<p>#这时候发现一个问题,容器内不能安装包</p>
<p>#切换一下源文件不然安装软件包会有问题</p>
<div class="cnblogs_Highlighter">
<pre class="brush:csharp;gutter:true;">docker cp /etc/apt/sources.list registry:/etc/apt
</pre>
</div>
<p>#同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。</p>
<div class="cnblogs_Highlighter">
<pre class="brush:csharp;gutter:true;">apt-get update
</pre>
</div>
<p>#安装go环境</p>
<div class="cnblogs_Highlighter">
<pre class="brush:csharp;gutter:true;">apt-get install golang-go git make
mkdir -p $HOME/go/{bin,pkg,src}
#配置环境变量
export GOROOT=/usr/lib/go
export GOPATH=$HOME/go
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
source /etc/profile
</pre>
</div>
<h2>源码编译</h2>
<div class="cnblogs_Highlighter">
<pre class="brush:csharp;gutter:true;">#下载源码
cd $HOME/go/src
git clone https://github.com/docker/distribution.git
cd distribution
#安装依赖
go get
#配置容器镜像文件
mkdir -p /etc/docker/registry/
cp cmd/registry/config-dev.yml /etc/docker/registry/config.yml
mkdir -p /var/lib/registry
#编译
make PREFIX=$HOME/go clean binaries
</pre>
</div>
<p>#到此Docker Registry编译完成,下面进行测试</p>
<h2>启动服务检测</h2>
<p>#查看版本并运行</p>
<div class="cnblogs_Highlighter">
<pre class="brush:csharp;gutter:true;">cd bin
./registry -v
./registry serve /etc/docker/registry/config.yml
</pre>
</div>
<p>访问本地5000端口,看到返回“200 OK”,则说明成功了<br>为了方便把启动命令改成脚本</p>
<div class="cnblogs_Highlighter">
<pre class="brush:csharp;gutter:true;">root@fb469b1c0702:~# more registry.sh
#!/bin/bash
../root/registry serve /etc/docker/registry/config.yml
</pre>
</div>
<p>#可以把这个做好的registry镜像commit一下</p>
<div class="cnblogs_Highlighter">
<pre class="brush:csharp;gutter:true;">docker commit registry kolla/ubuntu-source-registry
</pre>
</div>
<p> #配置一下服务随容器启动</p>
<div class="cnblogs_Highlighter">
<pre class="brush:csharp;gutter:true;">root@node22:/ljy/now# more Dockerfile
# Build a registry for deepin sw_64
FROM kolla/ubuntu-source-registry
CMD ["sh", "-c", "sh/root/registry.sh"]
docker build -t kolla/ubuntu-source-registry .
</pre>
</div>
<p>#使用镜像启动容器</p>
<div class="cnblogs_Highlighter">
<pre class="brush:csharp;gutter:true;">docker run -it -d --name registry-p 4000:5000 -v /registry:/var/lib/registry kolla/ubuntu-source-registry
</pre>
</div>
<p> </p>
</div>
<div id="MySignature" role="contentinfo">
---当才华撑不起你的野心的时候,请努力!---<br><br>
来源:https://www.cnblogs.com/jinyuanliu/p/11032402.html
頁:
[1]