Docker 构建centos镜像yum报错,语言包下载报错

报错场景:

docek pull centos 下来后,在centos中使用yum命令报错(这里的centos是最新的没有加版本号)


2022/6/5 第一行加上版本号 centos:7 否则后面下载yum命令会报找不到代码源错误,因为centos不更新了

问题描述

1. docker 构建centos镜像使用yum install 命令报错:

# 报错内容
Failed to set locale, defaulting to C.UTF-8
CentOS Linux 8 - AppStream                       68  B/s |  38  B     00:00
Error: Failed to download metadata for repo 'appstream': Cannot prepare internal                   mirrorlist: No URLs in mirrorlist

2. 根据报错内容,去下载语言包报错

# 查看语言包
[root@ae87167a11ae etc]# 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_COLLATE to default locale: No such file or directory
C
C.utf8
POSIX

# 尝试生成语言环境数据库
[root@ae87167a11ae etc]# source /etc/environment
[root@ae87167a11ae etc]# localedef -v -c -i en_US -f UTF-8 en_US.UTF-8
failed to set locale!
[error] character map file `UTF-8' not found: No such file or directory
failed to set locale!
[error] default character map file `ANSI_X3.4-1968' not found: No such file or d                  irectory
[root@ae87167a11ae etc]# yum install vm
Failed to set locale, defaulting to C.UTF-8
CentOS Linux 8 - AppStream                       77  B/s |  38  B     00:00
Error: Failed to download metadata for repo 'appstream': Cannot prepare internal                   mirrorlist: No URLs in mirrorlist

# 尝试安装 语言包
[root@ae87167a11ae etc]# dnf install glibc-langpack-en
Failed to set locale, defaulting to C.UTF-8
CentOS Linux 8 - AppStream                      2.4  B/s |  38  B     00:15
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: m                  irrorlist.centos.org]
Error: Failed to download metadata for repo 'appstream': Cannot prepare internal                   mirrorlist: No URLs in mirrorlist
[root@ae87167a11ae etc]# dnf install glibc-langpack-en
Failed to set locale, defaulting to C.UTF-8
CentOS Linux 8 - AppStream                       25  B/s |  38  B     00:01
Error: Failed to download metadata for repo 'appstream': Cannot prepare internal                   mirrorlist: No URLs in mirrorlist

原因分析&解决方案:

以上尝试解决方法均未成功,原因是cenos8停服,后继版本为8-steam,当然也可以pull centos:7.0的镜像

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Dockerfile构建MySQL 8镜像的步骤如下: 1. 选择一个基础镜像,例如Ubuntu或Alpine。 2. 在Dockerfile中安装MySQL 8,可以使用apt-get或yum命令。 3. 配置MySQL 8,包括设置root密码、创建用户和数据库等。 4. 将MySQL 8配置文件复制到镜像中,例如my.cnf。 5. 暴露MySQL 8端口,例如3306。 6. 设置启动命令,例如启动MySQL 8服务。 7. 构建镜像,例如使用docker build命令。 8. 运行MySQL 8容器,例如使用docker run命令。 以上是构建MySQL 8镜像的基本步骤,具体实现可以根据需要进行调整。 ### 回答2: 首先需要明确的是,Dockerfile 是用来构建 Docker 镜像的文件,而镜像则是运行 Docker 容器所需的基础环境和应用程序的集合。在构建 MySQL8 镜像的过程中,需要遵循以下步骤: 1. 在 Dockerfile 中指定镜像的基础操作系统,例如 Ubuntu、Alpine 等。 2. 从镜像仓库中下载 MySQL8 的安装包,并在容器中安装 MySQL8。 3. 配置 MySQL 的运行环境,包括调整软件参数、创建用户账户等。 4. 将配置文件和数据文件打包成镜像,其中配置文件包括 my.cnf 等。 下面的步骤是一个基于 Ubuntu 18.04 的 Dockerfile 模板: ``` # 使用 Ubuntu 18.04 作为基础镜像 FROM ubuntu:18.04 # 更新镜像软件源 RUN apt-get update && apt-get -y upgrade # 安装 mysql8 RUN apt-get -y install mysql-server # 配置 mysql8 运行环境 RUN sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/mysql.conf.d/mysqld.cnf RUN service mysql start && mysql -uroot -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';FLUSH PRIVILEGES;" # 添加数据库文件 ADD data/ /var/lib/mysql/ # 暴露容器的端口 EXPOSE 3306 # 设置容器启动时执行的命令 CMD ["mysqld_safe"] ``` 在这个例子中,Dockerfile 使用了 Ubuntu 18.04 作为镜像的基础操作系统,下载了 MySQL8 的安装包,并在容器中安装了 MySQL8。接下来,该镜像对 MySQL 的运行环境进行了一些配置,包括调整了网络地址和用户密码等。最后,通过添加数据文件、暴露容器端口和设置容器启动命令等操作,构建了一个可用的 MySQL8 镜像。 总的来说,在 Dockerfile构建 MySQL8 镜像,需要结合 MySQL8 的安装和配置过程,对镜像里包含的软件和数据文件进行相关的操作,使得它最终成为一个可行的镜像。同时,还要注意镜像的大小和设计思路,以便让它更易于管理和共享。 ### 回答3: Docker 是一款著名的容器化技术,它能够让软件在任何平台上运行,而不会出现依赖问题。MySQL 是一款著名的关系型数据库管理系统,本文旨在介绍如何使用 Dockerfile 构建 MySQL 8 镜像。 1. 创建 Dockerfile 在本地创建一个名为 Dockerfile 的文件,用于描述如何构建 MySQL 8 镜像Dockerfile 的内容如下: ``` FROM mysql:8.0.22 ENV MYSQL_ROOT_PASSWORD=123456 COPY my.cnf /etc/mysql/conf.d/ ``` 其中: - FROM mysql:8.0.22 表示构建镜像基于 MySQL 8.0.22 版本的镜像。 - ENV MYSQL_ROOT_PASSWORD=123456 表示设置 MySQL 的 root 用户的密码为 123456。 - COPY my.cnf /etc/mysql/conf.d/ 表示将当前目录下的 my.cnf 文件复制到镜像的 /etc/mysql/conf.d/ 目录下,用于设置 MySQL 配置。 2. 构建镜像 使用以下命令在本地构建 MySQL 8 镜像: ``` docker build -t mysql8 . ``` 其中 -t mysql8 表示构建镜像名为 mysql8。需要注意的是,Dockerfile 文件所在的目录为当前目录。 3. 运行容器 使用以下命令在本地启动 MySQL 8 容器: ``` docker run -d -p 3306:3306 --name mysql8 mysql8 ``` 其中: - -d 表示在后台运行容器。 - -p 3306:3306 表示将本地 3306 端口映射到容器的 3306 端口。 - --name mysql8 表示容器的名称为 mysql8。 - mysql8 表示运行的镜像名称为 mysql8。 4. 连接 MySQL 最后,使用以下命令连接 MySQL 数据库: ``` mysql -h 127.0.0.1 -u root -p ``` 输入密码 123456 后即可成功连接。 总结 通过以上步骤,我们成功地使用 Dockerfile 构建了 MySQL 8 镜像,并且在本地运行了容器,连接到了 MySQL 数据库。通过 Dockerfile 的方式,我们可以完全自定义 MySQL 环境的配置,使得应用程序的部署更加便捷和高效。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值