CentOS安装Docker-ce并配置国内镜像
<blockquote><p><em>更新于2019.12.17</em></p>
</blockquote>
<h2 id="本文内容">本文内容</h2>
<ul>
<li>Linux在线/离线安装Docker-CE (开源版本)</li>
</ul>
<blockquote>
<p>鉴于公司一般使用Centos 7 作为服务器,本文只记录Centos 7系统安装Docker部分,更多详见官方文档</p>
</blockquote>
<h2 id="前提条件">前提条件</h2>
<h3 id="1系统内核">1.系统、内核</h3>
<p>CentOS7 要求64位系统、内核版本3.10以上</p>
<p>CentOS6 要求版本在6.5以上,系统64位、内核版本2.6.32-431以上</p>
<p>查看内核版本号</p>
<pre><code class="language-bash">uname -r #查看内核版本
cat /etc/os-release #查看系统信息
</code></pre>
<h3 id="2开启centos-extras资源库">2.开启centos-extras资源库</h3>
<p>使用Centos 7,开启<code>centos-extras</code>资源库</p>
<blockquote>
<p><code>centos-extras</code>这个yum资源库默认是开启的,如果禁用了,请打开</p>
</blockquote>
<p><font style="color: rgba(0, 128, 0, 1)">推荐使用Overlay2作为存储驱动</font></p>
<h2 id="卸载旧版本docker容器">卸载旧版本Docker容器</h2>
<pre><code class="language-bash">$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
</code></pre>
<p>删除旧版本Docker文件</p>
<pre><code class="language-bash">sudo rm /var/lib/docker/ -rf
</code></pre>
<h2 id="centos-7在线安装docker-ce">Centos 7在线安装Docker-CE</h2>
<p><font style="color: rgba(255, 0, 0, 1)">本节适用于可访问网络的情况</font></p>
<h3 id="设置yum仓库">设置yum仓库</h3>
<p>安装必要依赖包</p>
<pre><code class="language-bash">$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
</code></pre>
<p>添加阿里镜像稳定版仓库</p>
<pre><code class="language-bash">$ sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
</code></pre>
<blockquote>
<p>添加阿里源时有时会报错,如果报错,使用如下命令使用官方源</p>
<pre><code class="language-bash">#删除异常源
sudo rm -f /etc/yum.repos.d/docker-ce.repo
#使用官方源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
</code></pre>
</blockquote>
<h3 id="更新yum缓存">更新yum缓存</h3>
<pre><code class="language-bash">sudo yum makecache fast
</code></pre>
<h3 id="安装docker-ce">安装Docker-CE</h3>
<p><font style="color: rgba(255, 0, 0, 1)">注意事项:本步骤分两部分,仅需按需求使用其一</font></p>
<h4 id="1-安装最新版">1 安装最新版</h4>
<pre><code class="language-bash">sudo yum install -y docker-ce docker-ce-cli containerd.io
</code></pre>
<h4 id="2-安装指定版本">2 安装指定版本</h4>
<p>列出可用版本</p>
<pre><code class="language-bash">$ yum list docker-ce --showduplicates | sort -r
docker-ce.x86_643:18.09.1-3.el7 docker-ce-stable
docker-ce.x86_643:18.09.0-3.el7 docker-ce-stable
docker-ce.x86_6418.06.1.ce-3.el7 docker-ce-stable
docker-ce.x86_6418.06.0.ce-3.el7 docker-ce-stable
</code></pre>
<p>安装指定版本</p>
<p><font style="color: rgba(255, 0, 0, 1)"><VERSION_STRING>需要替换为第二列的版本号,如:18.06.0.ce-3.el7</font></p>
<pre><code class="language-bash">$ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
</code></pre>
<h3 id="启动docker服务">启动Docker服务</h3>
<pre><code class="language-bash">sudo systemctl start docker
</code></pre>
<h2 id="centos-7离线安装docker-ce">Centos 7离线安装Docker-CE</h2>
<p><font style="color: rgba(255, 0, 0, 1)">本节仅适用于无外网环境下</font></p>
<h3 id="下载rpm包">下载RPM包</h3>
<p>访问官方网站提供的下载rpm包地址</p>
<p>https://download.docker.com/linux/centos/7/x86_64/stable/Packages/</p>
<p>官方提供的离线包主要需要下载</p>
<ul>
<li><code>containerd.io-<VERSION_STRING>.x86_64.rpm</code></li>
<li><code>docker-ce-<VERSION_STRING>.x86_64.rpm</code></li>
<li><code>docker-ce-cli-<VERSION_STRING>.x86_64.rpm</code></li>
</ul>
<blockquote>
<p>注意事项:</p>
<ul>
<li>
<p><font style="color: rgba(255, 0, 0, 1)">在保证大版本相同下</font>,<code>docker-ce</code> 与 <code>docker-ce-cli </code> 版本要尽量相同</p>
</li>
<li>
<p>不要使用<code>beta</code>与<code>rc</code></p>
</li>
<li>
<p>版本号带<code>.centos</code>与不带基本没什么区别</p>
</li>
</ul>
</blockquote>
<p><font style="color: rgba(255, 0, 0, 1)">注</font>:未提到的<code>docker-ce-selinux</code>安装包在新版本中已经被废弃了,需要下载另外的一个依赖包<code>container-selinux</code></p>
<p><code>container-selinux</code>安装包下载地址:https://pkgs.org/download/container-selinux</p>
<h3 id="安装rpm包">安装RPM包</h3>
<h4 id="官方方式">官方方式</h4>
<p>使用rpm按顺序安装依赖包 或 <code>sudo yum /path/to/package.rpm</code>,以下为举例</p>
<pre><code class="language-bash">$ sudo rpm -ivh containerd.io-1.2.5-3.1.el7.x86_64.rpm
$ sudo rpm -ivh docker-ce-cli-18.09.6-3.el7.x86_64.rpm
$ sudo rpm -ivh container-selinux-2.95-2.el7_6.noarch.rpm
$ sudo rpm -ivh docker-ce-18.09.6-3.el7.x86_64.rpm
</code></pre>
<p>以上均安装完成即可,以下是解决问题的思路<br>
<em>离线安装解决问题这部分参考 https://blog.csdn.net/GentleLin/article/details/90294324</em></p>
<h4 id="官方安装方式可能出现的问题">官方安装方式可能出现的问题</h4>
<p>1、在安装以上rpm包的时候,如果出现缺少依赖的错误,比如:</p>
<pre><code class="language-bash">error: Failed dependencies:
policycoreutils >= 2.5-11 is needed by container-selinux-2:2.95-2.el7_6.noarch
selinux-policy >= 3.13.1-216.el7 is needed by container-selinux-2:2.95-2.el7_6.noarch
selinux-policy-base >= 3.13.1-216.el7 is needed by container-selinux-2:2.95-2.el7_6.noarch
selinux-policy-targeted >= 3.13.1-216.el7 is needed by container-selinux-2:2.95-2.el7_6.noarch
</code></pre>
<p>出现 “>=版本号”:说明你的系统上已经安装了这些包,只是这些包不是最新的,需要升级<br>
以<code>policycoreutils</code>包为例,可以在https://pkgs.org/上搜索对应的最新的rpm包,执行以下命令进行升级:</p>
<pre><code class="language-bash">$ sudo rpm -Uvh policycoreutils-2.5-29.el7.x86_64.rpm
</code></pre>
<p>如果对应的这个包被其它包依赖(<code>policycoreutils</code>被<code>policycoreutils-python</code>包依赖),这时会出现错误提示:</p>
<pre><code class="language-bash">error: Failed dependencies:
policycoreutils = 2.5-8.el7 is needed by (installed) policycoreutils-python-2.5-8.el7.x86_64
</code></pre>
<p><strong>解决办法:先以不依赖的方式安装policycoreutils,再下载新的policycoreutils-python包升级。</strong></p>
<pre><code class="language-bash">$ sudo rpm -Uvh policycoreutils-2.5-29.el7.x86_64.rpm --nodeps
$ sudo rpm -Uvh policycoreutils-python-2.5-29.el7.x86_64.rpm
</code></pre>
<p>其它类似错误,参考以上方法即可。</p>
<p>2、如果出现的是:</p>
<pre><code class="language-bash">error: Failed dependencies:
xxxxxx is needed by xxxxxxxxxxxxxxxxxx
</code></pre>
<p>直接下载对应的包安装即可。https://pkgs.org/</p>
<h3 id="启动docker服务-1">启动Docker服务</h3>
<pre><code class="language-bash">$ sudo systemctl start docker
</code></pre>
<h2 id="安装后配置">安装后配置</h2>
<h3 id="添加国内镜像">添加国内镜像</h3>
<p><font style="color: rgba(255, 0, 0, 1)">只有内网的情况下可以不配置</font></p>
<p>国内镜像很多,如阿里云,网易蜂巢,DaoCloud,Docker中国区官方镜像等,这些都可以。</p>
<p>这里选择<code>阿里的镜像:https://7uuu3esz.mirror.aliyuncs.com</code> ,当然这是我自己免费申请的</p>
<p><code>sudo vim /etc/docker/daemon.json</code>,添加如下内容,注意替换镜像地址url</p>
<pre><code class="language-json">{
...省略其它配置...,
"registry-mirrors": ["https://7uuu3esz.mirror.aliyuncs.com"]
}
</code></pre>
<h3 id="修改docker根目录">修改Docker根目录</h3>
<p><font style="color: rgba(0, 128, 0, 1)">推荐配置</font></p>
<p>Docker默认安装在<code>/var/lib/docker</code>目录下,一般而言,如果我们的服务器没有把<code>/var</code>目录从<code>/</code>分离出来,那么就会占用<code>/</code>目录的空间,一般根目录设置都不会很大,镜像、容器等又比较占硬盘,推荐修改到大容量目录</p>
<p><code>sudo vim /etc/docker/daemon.json</code>,添加<code>"data-root"</code>指定docker安装根目录,注意替换/path/to/path</p>
<pre><code class="language-json">{
...省略其它配置...,
"data-root": "/path/to/path"
}
</code></pre>
<h3 id="容器日志配置">容器日志配置</h3>
<p><font style="color: rgba(0, 128, 0, 1)">推荐配置</font></p>
<p>当容器日志量变大,长期不处理的话,日志只会越来越多,占用空间不说,<code>docker logs -f 容器</code>时,日志滚动很久才会到最新的日志</p>
<p>我们通过设置修改单个日志配置文件的最大值与当日志到达最大值后保留的日志文件数</p>
<p><code>sudo vim /etc/docker/daemon.json</code></p>
<pre><code class="language-json">{
...省略其它配置...,
"log-driver": "json-file",
"log-opts": {"max-size":"50m", "max-file":"1"}
}
</code></pre>
<blockquote>
<p>日志量尽量设置得少一些,50m其实也很大,屏幕也要刷好久,最好在测试与生产环境将输出到控制台的日志写到文件或ELK中</p>
</blockquote>
<h3 id="添加自建私有仓库支持">添加自建私有仓库支持</h3>
<p><font style="color: rgba(255, 0, 0, 1)">如果没有可以不配置</font></p>
<p>有时我们需要将自己公司的docker镜像上传到自建私有仓库来分发镜像</p>
<p>一般而言,我们不会为私有仓库添加https支持,docker官方又要求需要使用https才能login\pull\push等操作</p>
<p>官方给出的解决办法是添加<code>insecure-registries</code>,可同时添加多个</p>
<p><code>sudo vim /etc/docker/daemon.json</code></p>
<pre><code class="language-json">{
...省略其它配置...,
"insecure-registries": ["10.2.7.70:5000"]
}
</code></pre>
<h3 id="添加用户到docker组">添加用户到docker组</h3>
<p><font style="color: rgba(255, 0, 0, 1)">只用root用户可以不配置</font></p>
<p>非root用户使用<code>docker</code>命令需要加<code>sudo</code>前缀,这是可以通过配置避免的</p>
<p>您现在应该考虑将用户添加到“docker”组</p>
<pre><code class="language-bash">$ sudo usermod -aG docker your-user-name
$ newgrp docker
</code></pre>
<h3 id="重启使docker配置生效">重启使Docker配置生效</h3>
<p><font style="color: rgba(255, 0, 0, 1)">所有配置修改都需要重启docker服务才能生效</font></p>
<pre><code class="language-bash">systemctl daemon-reload
systemctl restart docker
</code></pre>
<p>通过<code>docker info</code>查看配置是否生效</p>
<h2 id="卸载docker">卸载Docker</h2>
<p>使用yum包管理方式</p>
<pre><code class="language-bash">$ sudo yum remove docker-ce
</code></pre>
<p>删除docker安装目录</p>
<p><font style="color: rgba(255, 0, 0, 1)">删除docker根目录为危险操作,会删除docker容器、镜像、数据,请谨慎操作</font></p>
<pre><code class="language-bash">$ sudo rm -rf /var/lib/docker #默认安装目录
</code></pre>
<p>通过<code>docker info | grep "Docker Root Dir"</code>查看安装目录,并删除此目录</p><br><br>
来源:https://www.cnblogs.com/hellxz/p/11044012.html
頁:
[1]