Docker容器运行CentOS镜像,执行yum命令提示“Failed to set locale, defaulting to C.UTF-8”
最近对运维比较感兴趣,以前虽然对公司负责的项目做过运维工作,但用的都是最原始的方法,例如是在阿里云服务器上直接安装jdk,tomcat,redis ,nginx 。这种方式对不大的项目还能够支持,随着项目变大,服务增加,这种方式的问题就会越来越多,目前大型项目基本都是使用云原生架构,运维也都是用K8S 和 容器,所以最近也开始系统学习下docker和K8S。
这是我学习docker遇到得第一个问题,记录下。
拉取第一个镜像 centos
docker pull centos
启动容器并进入
默认拉取的centos没有vim,安装vim命令
这是会出现如下错误
Failed to set locale, defaulting to C.UTF-8
CentOS Linux 8 - AppStream 0.0 B/s | 0 B 00:04
Errors during downloading metadata for repository 'appstream':- Curl error (6): Couldn't resolve host name for http://mirrorlist.centos.org/?release=8&arch=x86_64&repo=AppStream&infra=container [Could not resolve host: mirrorlist.centos.org]
Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: Curl error (6): Couldn't resolve host name for http://mirrorlist.centos.org/?release=8&arch=x86_64&repo=AppStream&infra=container [Could not resolve host: mirrorlist.centos.org]
这是因为CentOS Linux 8已于 2021年12月31日停止更新和维护,由于entOS 团队从官方镜像中移除CentOS 8的所有包,所以在使用yum源安装时候,则出现上面的错误
解决办法:
1.修改/etc/profile
echo "export LANG=en_US.UTF-8">>/etc/profile
echo "export LC_ALL=en_US.UTF-8">>/etc/profile
source /etc/profile
由于CentOS 8的包被转移到了 https://vault.centos.org,如果仍然需要运行 CentOS 8,可以在/etc/yum.repos.d中更新一下源。使用 http://vault.centos.org 代替 http://mirror.centos.org
cd /etc/yum.repos.d/
vi CentOS-Linux-AppStream.repo
vi CentOS-Linux-BaseOS.repo
vi CentOS-Linux-BaseOS.repo
修改上面3个文件,将文件中的
baseurl=http://mirror.centos.org/… 全部改成baseurl=http://vault.centos.org/…
vi CentOS-Linux-Extras.repo
清空缓存
yum clean all
yum makecache
安装vim命令
yum install vim -y
vim CentOS-Linux-BaseOS.repo