V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
daijinming
V2EX  ›  程序员

请教一个 Dockerfile 的编写

  •  
  •   daijinming · 2018-09-12 10:28:28 +08:00 · 3267 次点击
    这是一个创建于 2297 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我想在使用 Dockerfile 创建一个 OPENFIRE 的镜像,之前我在 centos7 上直接安装过,但是编写 dockerfile,build 的是各种报错,请高手指教 我编写的例子如下:

    FROM centos

    MAINTAINER [email protected]

    RUN yum -y install wget

    RUN wget http://arc.elef.top/openfire/openfire-4.2.3-1.x86_64.rpm

    RUN yum -y localinstall openfire-4.2.3-1.x86_64.rpm

    EXPOSE 9090


    第 1 条附言  ·  2018-09-12 11:05:41 +08:00
    采用虚拟机 virtualBox 在 mini 版本的 centos 中,采用桥接网络,直接运行三条命令,完全没问题,安装成功。但是在 docker 中打开 centos7 的容器,运行第一个 yum install wget 就提示网络问题: https://www.showdoc.cc/web/#/page/878682572523300。Build 创建的 Dockerfile 的异常信息 在这里: https://www.showdoc.cc/web/#/page/878543815146859
    14 条回复    2018-09-12 12:41:56 +08:00
    ThirdFlame
        1
    ThirdFlame  
       2018-09-12 10:33:12 +08:00
    直接启动 centos,然后进去 运行,看看有啥报错没有? docker 里面可能少好多东西,有些依赖可能需要安装。
    yum -y install wget
    wget http://arc.elef.top/openfire/openfire-4.2.3-1.x86_64.rpm
    yum -y localinstall openfire-4.2.3-1.x86_64.rpm
    linuxchild
        2
    linuxchild  
       2018-09-12 10:34:34 +08:00
    要看一下报什么错吧
    hoOOe
        3
    hoOOe  
       2018-09-12 10:36:48 +08:00 via Android
    可以弦 pull 一个 centos,进入容器手动安装,再记下依赖
    raysonx
        4
    raysonx  
       2018-09-12 10:39:00 +08:00 via Android
    所以说,到底报了什么错呢。
    daijinming
        5
    daijinming  
    OP
       2018-09-12 10:43:04 +08:00
    zjlletian
        6
    zjlletian  
       2018-09-12 10:58:13 +08:00
    看样子是没连上 yum 源,你可以先替换一下 yum 镜像源,再 yum clean all,再安装依赖。
    顺便说一下,RUN 命令不要写多条,写成一条,减少构建开销。
    blackjar
        7
    blackjar  
       2018-09-12 11:03:50 +08:00
    一个 RUN 构建一层 这么写 很快要写满了
    daijinming
        8
    daijinming  
    OP
       2018-09-12 11:08:37 +08:00
    @zjlletian 这是 Dockerfile 文件: https://www.showdoc.cc/web/#/page/878713202737582,在 Dockerfile 中如何替换 yum 源或设置网络不是太清楚,能帮想想办法吗?
    raysonx
        9
    raysonx  
       2018-09-12 11:16:16 +08:00
    学好英语很重要。
    [Warning] IPv4 forwarding is disabled. Networking will not work.
    [警告] IPv4 转发被禁止。网络将不工作。

    Could not resolve host: mirrorlist.centos.org; Unknown error
    无法解析 mirrorlist.centos.org ;未知错误。
    daijinming
        10
    daijinming  
    OP
       2018-09-12 11:43:05 +08:00
    @raysonx 朋友,我已经修改了文件 vi /usr/lib/sysctl.d/50-default.conf,增加了 net.ipv4.ip_forward=1 ,但是重启网络的时候提示错误,systemctl restart network 返回 Failed to get D-Bus connection: Operation not permitted。这是在容器中的 centos7 中。
    huanter
        11
    huanter  
       2018-09-12 11:52:46 +08:00
    RUN yum -y update && yum install -y wget
    daijinming
        12
    daijinming  
    OP
       2018-09-12 12:02:25 +08:00
    @huanter 现在主要网络不同,需要怎么修改,Cannot find a valid baseurl for repo: base/7/x86_64
    raysonx
        13
    raysonx  
       2018-09-12 12:36:37 +08:00
    @daijinming 你需要在 host 上配置网络而不是在 container 里配置网络。container 的网络是由 Docker 管理的,你没有权限。
    ljdawn
        14
    ljdawn  
       2018-09-12 12:41:56 +08:00 via Android
    docker logs 可以看下具体日志
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1059 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 20:00 · PVG 04:00 · LAX 12:00 · JFK 15:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.