今夜看海吗 發表於 2020-12-3 18:24:00

docker centos容器无法yum

<div>&nbsp;</div>
<div>问题 dockerfile yum -y install vim的时候一直未响应 但是在本地虚拟机centos7上运行则没问题
<div><img src="https://img2020.cnblogs.com/blog/1228547/202012/1228547-20201203181315300-923707293.png"></div>
</div>
<div>&nbsp;</div>
<div>https://blog.csdn.net/jimiao_xxxx/article/details/107872246 -- 该网址说打开防火墙</div>
<div>但是我的防火墙是开启的 systemctl status firewalld</div>
<div><img src="https://img2020.cnblogs.com/blog/1228547/202012/1228547-20201203181346999-1313218756.png">
<p>&nbsp;</p>
<p>&nbsp;</p>
</div>
<div>然后就卡住了 一直没找到问题所在 虚拟机的yum源也检查了是阿里的没问题 yum repolist enabled</div>
<div><img src="https://img2020.cnblogs.com/blog/1228547/202012/1228547-20201203181526652-641435665.png">
<p>&nbsp;</p>
<p>&nbsp;</p>
</div>
<div>然后突然想到是不是docker容器的问题 ,因为我的docker容器依赖的是centos,是不是在docker容器中无法连接网络导致的。</div>
<div>&nbsp;</div>
<div>查看镜像列表 docker images</div>
<div><img src="https://img2020.cnblogs.com/blog/1228547/202012/1228547-20201203181559251-2049647063.png">
<p>&nbsp;</p>
<p>&nbsp;</p>
</div>
<div>用镜像新启动一个容器(df/centos 是我自己命名的一个容器和centos一样)</div>
<div>docker run -it --name=docker-net-test df/centos</div>
<div>进入容器测试网络</div>
<div>1 ping www.baidu.com -- 说明容器内网络是通的</div>
<div><img src="https://img2020.cnblogs.com/blog/1228547/202012/1228547-20201203181613425-1904007922.png">
<p>&nbsp;</p>
<p>&nbsp;</p>
</div>
<div>&nbsp;</div>
<div>2 既然网络是通的 那么是不是yum命令无法使用 在容器内测试一下 yum -y -install vim</div>
<div><img src="https://img2020.cnblogs.com/blog/1228547/202012/1228547-20201203181655498-1198003769.png">
<p>&nbsp;</p>
<p>&nbsp;</p>
</div>
<div>3 发现果然是没有速度 (以为终于找到了原因) -- Failed to set locale,defaulting to C.UTF-8</div>
<div>------ 一顿百度 是因为阿里云拉下来的镜像centos默认的语言格式没有en_US.UTF-8</div>
<div>locale -a</div>
<div><img src="https://img2020.cnblogs.com/blog/1228547/202012/1228547-20201203181721079-1961070427.png"></div>
<div>locale: Cannot set LC_CTYPE to default locale: No such file or directory</div>
<div>locale: Cannot set LC_MESSAGES to default locale: No such file or directory</div>
<div>locale: Cannot set LC_ALL to default locale: No such file or directory</div>
<div>当前系统没有安装en_US.UTF-8语言 那么安装所有的字符集</div>
<div>dnf install langpacks-en glibc-all-langpacks -y</div>
<div>这时候安装也是没有速度 -- <span style="color: rgba(255, 0, 0, 1)">终于想到了可能是因为容器内的yum源没有换成阿里云(真正的原因)</span></div>
<div>-----------------</div>
<div>所以问题的关键是yum源没有配置成国内的 而不是语言格式问题(当然字符集也是个问题,需要注意)</div>
<div>-----------------</div>
<div>--配置阿里源</div>
<div>https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b11zoBc40</div>
<div>查看当前centos版本 -- 8.0的版本 docker自动下载的centos镜像是8.0版本</div>
<div>cat /etc/redhat-release</div>
<div><img src="https://img2020.cnblogs.com/blog/1228547/202012/1228547-20201203181859218-1078177831.png"></div>
<div>&nbsp;</div>
<div>1. 备份</div>
<div>mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup</div>
<div>2 下载</div>
<div>curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>但是我们 yum makecache 的时候还是没有速度---Repository AppStream is listed more than once in the configuration</div>
<div><img src="https://img2020.cnblogs.com/blog/1228547/202012/1228547-20201203181935777-818584879.png">
<p>&nbsp;</p>
<p>&nbsp;</p>
</div>
<div>--我们ls /etc/yum.repos.d --发现有个AppStream.repo --把它删了</div>
<div><img src="https://img2020.cnblogs.com/blog/1228547/202012/1228547-20201203182003138-102680608.png"></div>
<div>rm -rf CentOS-AppStream.repo</div>
<div>重新yum makecache 发现有速度了</div>
<div><img src="https://img2020.cnblogs.com/blog/1228547/202012/1228547-20201203182033367-2114373275.png"></div>
<div>这时候我们 yum -y install vim 也可以了</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>----所以重新设计dockerFile文件 当作练习了</div>
<div>&nbsp;</div>
<div>之前的----&nbsp;&nbsp;</div>
<div>FROM centos</div>
<div>ENV mypath /tmp</div>
<div>WORKDIR $mypath</div>
<div>RUN yum -y install vim</div>
<div>RUN yum -y install net-tools</div>
<div>EXPOSE 80</div>
<div>CMD echo 'to be not success running'</div>
<div>CMD echo 'success------ok'</div>
<div>CMD /bin/bash</div>
<div>&nbsp;</div>
<div>-- 成功执行</div>
<div>FROM centos</div>
<div>ENV mypath /tmp</div>
<div>WORKDIR $mypath</div>
<div>RUN mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup</div>
<div>RUN curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo</div>
<div>RUN rm -rf /etc/yum.repos.d/CentOS-AppStream.repo</div>
<div>RUN yum -y install vim</div>
<div>RUN yum -y install net-tools</div>
<div>EXPOSE 80</div>
<div>CMD echo 'to be not success running'</div>
<div>CMD echo 'success------ok'</div>
<div>CMD /bin/bash</div>
<div>&nbsp;</div><br><br>
来源:https://www.cnblogs.com/studyitskill/p/14081899.html
頁: [1]
查看完整版本: docker centos容器无法yum