centos7系统下搭建docker本地镜像仓库的方法
<p>系统环境: CentOS 7.2</p>
<p>
192.168.0.179:Docker仓库</p>
<p>
192.168.0.60:客户端</p>
<p>
<strong>安装并启动docker</strong></p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_881415">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
<div class="line number3 index2 alt2">
3</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">yum -y </code><code class="bash functions">install</code> <code class="bash plain">docker</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">systemctl start docker</code>
</div>
<div class="line number3 index2 alt2">
<code class="bash plain">systemctl </code><code class="bash functions">enable</code> <code class="bash plain">docker</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
<strong>搭建私有仓库</strong></p>
<p>
179上下载registry镜像</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_431163">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">docker pull registry</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
防火墙添加运行5000端口</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_622540">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">iptables -I INPUT 1 -p tcp --dport 5000 -j ACCEPT</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
下载完之后我们通过该镜像启动一个容器</p>
<p>
</p>
<div class="codetitle">
<span><u>复制代码</u></span> 代码如下:</div>
<div class="codebody" id="code98096">
<br>
docker run -d -p 5000:5000 --privileged=true -v /opt/registry:/tmp/registry registry</div>
<p>
</p>
<p>
参数说明:</p>
<ul>
<li>
-v /opt/registry:/tmp/registry :默认情况下,会将仓库存放于容器内的/tmp/registry目录下,指定本地目录挂载到容器</li>
<li>
–privileged=true :CentOS7中的安全模块selinux把权限禁掉了,参数给容器加特权,不加上传镜像会报权限错误(OSError: Permission denied: ‘/tmp/registry/repositories/liibrary')或者(Received unexpected HTTP status: 500 Internal Server Error)错误</li>
</ul>
<p>
<strong>客户端上传镜像</strong></p>
<p>
修改/etc/sysconfig/docker(Ubuntu下配置文件地址为:/etc/init/docker.conf),增加启动选项(已有参数的在后面追加),之后重启docker,不添加报错,https证书问题。</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_386588">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">OPTIONS=</code><code class="bash string">'--insecure-registry 192.168.0.179:5000'</code> <code class="bash comments">#CentOS 7系统</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">other_args=</code><code class="bash string">'--insecure-registry 192.168.0.179:5000'</code> <code class="bash comments">#CentOS 6系统</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
因为Docker从1.3.X之后,与docker registry交互默认使用的是https,而此处搭建的私有仓库只提供http服务在docker公共仓库下载一个镜像</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_323374">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">docker pull docker.io</code><code class="bash plain">/centos</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
来修改一下该镜像的tag</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_119158">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">docker tag centos 192.168.0.179:5000</code><code class="bash plain">/centos</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
把打了tag的镜像上传到私有仓库</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_179517">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">docker push 192.168.0.179:5000</code><code class="bash plain">/centos</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
<strong>客户端添加私有仓库地址</strong></p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_505216">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash comments"># 添加这一行</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">ADD_REGISTRY=</code><code class="bash string">'--add-registry 192.168.0.179:5000'</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
加上后,search镜像,私有仓库和docker hub上都会显示;</p>
<p>
不加搜索私有仓库,需要命令中指定私有仓库ip</p>
<p>
<strong>使用仓库中的镜像</strong></p>
<p>
查询私有仓库中的所有镜像,使用docker search命令:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_314134">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">curl -u myuser https:</code><code class="bash plain">//registry_ip</code><code class="bash plain">:5000</code><code class="bash plain">/v1/search</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">curl registry_ip:5000</code><code class="bash plain">/v1/search</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_710776">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
<div class="line number2 index1 alt1">
2</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">docker search registry_ip:5000/ </code><code class="bash comments">#centos 7</code>
</div>
<div class="line number2 index1 alt1">
<code class="bash plain">docker search registry_ip:5000</code><code class="bash plain">/library</code> <code class="bash comments">#centos 6</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
查询仓库中指定账户下的镜像,则使用如下命令:</p>
<div class="jb51code">
<div>
<div class="syntaxhighlighterbash" id="highlighter_546329">
<div class="toolbar">
<span>?</span>
</div>
<table border="0" cellpadding="0" cellspacing="0"><tbody><tr>
<td class="gutter">
<div class="line number1 index0 alt2">
1</div>
</td>
<td class="code">
<div class="container">
<div class="line number1 index0 alt2">
<code class="bash plain">docker search registry_ip:5000</code><code class="bash plain">/account/</code>
</div>
</div>
</td>
</tr></tbody></table>
</div>
</div>
<div class="codetool" id="codetool">
<div class="code_n">
<textarea></textarea>
</div>
</div>
</div>
<p>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。</p>
<p>
原文链接:http://blog.csdn.net/fgf00/article/details/52040492</p>
頁:
[1]