問題 dockerfile yum -y install vim的時候一直未響應 但是在本地虛擬機centos7上運行則沒問題

但是我的防火牆是開啟的 systemctl status firewalld

然后就卡住了 一直沒找到問題所在 虛擬機的yum源也檢查了是阿里的沒問題 yum repolist enabled

然后突然想到是不是docker容器的問題 ,因為我的docker容器依賴的是centos,是不是在docker容器中無法連接網絡導致的。
查看鏡像列表 docker images

用鏡像新啟動一個容器(df/centos 是我自己命名的一個容器和centos一樣)
docker run -it --name=docker-net-test df/centos
進入容器測試網絡
1 ping www.baidu.com -- 說明容器內網絡是通的

2 既然網絡是通的 那么是不是yum命令無法使用 在容器內測試一下 yum -y -install vim

3 發現果然是沒有速度 (以為終於找到了原因) -- Failed to set locale,defaulting to C.UTF-8
------ 一頓百度 是因為阿里雲拉下來的鏡像centos默認的語言格式沒有en_US.UTF-8
locale -a

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
當前系統沒有安裝en_US.UTF-8語言 那么安裝所有的字符集
dnf install langpacks-en glibc-all-langpacks -y
這時候安裝也是沒有速度 --
終於想到了可能是因為容器內的yum源沒有換成阿里雲(真正的原因)
-----------------
所以問題的關鍵是yum源沒有配置成國內的 而不是語言格式問題(當然字符集也是個問題,需要注意)
-----------------
--配置阿里源
查看當前centos版本 -- 8.0的版本 docker自動下載的centos鏡像是8.0版本
cat /etc/redhat-release

1. 備份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2 下載
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
但是我們 yum makecache 的時候還是沒有速度---Repository AppStream is listed more than once in the configuration

--我們ls /etc/yum.repos.d --發現有個AppStream.repo --把它刪了

rm -rf CentOS-AppStream.repo
重新yum makecache 發現有速度了

這時候我們 yum -y install vim 也可以了
----所以重新設計dockerFile文件 當作練習了
之前的----
FROM centos
ENV mypath /tmp
WORKDIR $mypath
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo 'to be not success running'
CMD echo 'success------ok'
CMD /bin/bash
-- 成功執行
FROM centos
ENV mypath /tmp
WORKDIR $mypath
RUN mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo
https://mirrors.aliyun.com/repo/Centos-8.repo
RUN rm -rf /etc/yum.repos.d/CentOS-AppStream.repo
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo 'to be not success running'
CMD echo 'success------ok'
CMD /bin/bash