Docker构建CentOS7基础镜像失败,执行docker build .无成功提示
构建失败原因
- CentOS 7 已正式停止维护,官方默认yum源已下架,执行
yum update命令时无法连接源服务器,直接触发构建报错,这是最核心的原因。 - Dockerfile中调用
openssl passwd生成用户密码,但未预先安装openssl工具包,执行该命令时会提示找不到命令,也会导致构建中断。
修复方法
直接修改你的Dockerfile内容如下,先替换可用的yum源、补充安装依赖即可:
FROM centos:7 # 替换为CentOS 7官方归档源,解决yum无法使用的问题 RUN sed -i s/mirror.centos.org/vault.centos.org/g /etc/yum.repos.d/*.repo \ && sed -i s/^#.*baseurl=http/baseurl=http/g /etc/yum.repos.d/*.repo \ && sed -i s/^mirrorlist=http/#mirrorlist=http/g /etc/yum.repos.d/*.repo ARG user=john ARG home=/home/$user # 合并yum指令减少镜像层数,同时安装所需依赖 RUN yum update -y \ && yum install openssl openssh-server openssh-clients -y \ && yum clean all RUN useradd -d $home -p "$(openssl passwd $user)" $user # 原CMD指令调用的hostnamectl依赖systemd服务,基础镜像默认不预装,若需要使用可额外安装systemd: # RUN yum install systemd -y && yum clean all # 若不需要可以替换为其他启动命令,比如启动sshd服务: # CMD ["/usr/sbin/sshd", "-D"] CMD ["hostnamectl"]
修改完成后重新执行docker build .即可完成构建。
内容的提问来源于stack exchange,提问作者Ana Marie De Vera
相关产品推荐
相关产品推荐

