docker容器调用yum报错的解决办法

作者:尚 时间:2021-01-09 23:32:12 

dockerfile里或者在容器里执行yum,报错,找不到源(invalid baseurl xxx),但是宿主机上执行yum是没问题的啊,为什么?

因为不论是dockerfile使用RUN关键字执行yum还是直接进入到容器里面执行yum,它们都是使用的docker镜像里面的源(CentOS是在路径/etc/yum.repo.d/CentOS-Base.repo),所以你要把宿主机上的同路径下的源拷贝到容器里面,然后docker commit一个新的“基础镜像”,这个时候使用docker build xxx(即使用Dockerfile的方式)就不会报错了。

拷贝方法docker cp xxx xxx

内容扩展

dockerfile中执行yum操作报错

我们先看下报错信息:

Sending build context to Docker daemon 9.363 MB
Step 1 : FROM docker.io/centos
---> 196e0ce0c9fb
Step 2 : MAINTAINER liuliangliang
---> Using cache
---> 7d7e06799c20
Step 3 : ADD file/tomcat7.tgz /usr/local/
---> Using cache
---> 10ffdea53a02
Step 4 : RUN yum install java-1.8.0-openjdk -y
---> Running in 7824a339e077
Loaded plugins: fastestmirror, ovl


One of the configured repositories failed (Unknown),
and yum doesn't have enough cached data to continue. At this point the only
safe thing yum can do is fail. There are a few ways to work "fix" this:

1. Contact the upstream for the repository and get them to fix the problem.

2. Reconfigure the baseurl/etc. for the repository, to point to a working
upstream. This is most often useful if you are using a newer
distribution release than is supported by the repository (and the
packages for the previous distribution release still work).

3. Run the command with the repository temporarily disabled
yum --disablerepo=<repoid> ...

4. Disable the repository permanently, so yum won't use it by default. Yum
will then just ignore the repository until you permanently enable it
again or use --enablerepo for temporary usage:

yum-config-manager --disable <repoid>
or
subscription-manager repos --disable=<repoid>

5. Configure the failing repository to be skipped, if it is unavailable.
Note that yum will try to contact the repo. when it runs most commands,
so will have to try and fail each time (and thus. yum will be be much
slower). If it is a very temporary problem though, this is often a nice
compromise:

yum-config-manager --save --setopt=<repoid>.skip_if_unavailable=true

Cannot find a valid baseurl for repo: base/7/x86_64
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=container error was
14: curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown error"
The command '/bin/sh -c yum install java-1.8.0-openjdk -y' returned a non-zero code: 1

解决方法:

这个你在resolv.conf文件里加上 DNS服务就行了 这个文件在/etc下, 加上

nameserver 8.8.8.8
nameserver 8.8.4.4
search localdomain

就行了

来源:https://www.php.cn/docker/445879.html

标签:docker,yum报错
0
投稿

猜你喜欢

  • 关键词优化的研究要观念先行

    2008-12-23 14:52:00
  • tomcat8改了jar加载顺序的踩坑记录

    2021-03-12 18:44:43
  • 共享控制台--让远程桌面更人性化(2)

    2007-03-27 10:56:00
  • 个人网站发展的三阶段

    2008-01-13 15:18:00
  • 卡巴斯基发布企业级新品 防御能力全面升级

    2009-12-24 09:47:00
  • FLV制作、下载、播放及发布

    2007-10-11 17:46:00
  • Linux alias命令编写

    2023-09-18 21:45:26
  • docker可视化图形工具portainer详解

    2021-10-20 14:13:30
  • 欧盟指责甲骨文不配合对它收购Sun的调查

    2009-10-24 09:44:00
  • docker搭建rabbitmq集群环境的方法

    2022-09-13 11:53:07
  • WordPress调用PageCookery的方法

    2010-06-21 09:40:00
  • DedeCMS v5.3 归档插件+列表生成控制

    2009-05-31 17:55:00
  • 谷歌下调链接 交换网站页面排名

    2007-10-25 23:08:00
  • iptables配置(/etc/sysconfig/iptables)操作方法

    2022-08-25 01:06:09
  • 个性化搜索与SEO

    2007-10-09 12:51:00
  • 动视暴雪《使命召唤6》游戏或遭俄罗斯封杀

    2009-11-17 07:59:00
  • CentOS/RedHat 6.5 离线安装Docker

    2023-08-10 11:50:33
  • Windows系统中常用密码的破解方法

    2009-01-23 15:22:00
  • 禁止网站显示文件目录列表的2个方法(htaccess)

    2023-07-02 21:51:08
  • 我的大学生活与我的网赚历程

    2009-04-18 03:56:00
  • asp之家 网站运营 m.aspxhome.com