当前位置: 首页 > 面试题库 >

Docker命令在构建期间失败,但在运行中的容器中执行时成功

傅阳炎
2023-03-14
问题内容

命令 :

docker build -t nginx-ubuntu .

下面的Dockerfile:

来自ubuntu:12.10
运行apt更新
运行apt-get -y install libpcre3 libssl-dev
运行apt-get -y install libpcre3-dev
运行apt-get -y install wget zip gcc
运行wget http://nginx.org/download/nginx-1.4.1.tar.gz
运行gunzip nginx-1.4.1.tar.gz
运行tar -xf nginx-1.4.1.tar
运行wget --no-check-certificate https://github.com/max-l/nginx_accept_language_module/archive/master.zip
运行解压大师
运行cd nginx-1.4.1
运行./configure --add-module = .. / nginx_accept_language_module-master --with-http_ssl_module --with-pcre = / lib / x86_64-linux-gnu --with-openssl = / usr / lib / x86_64-linux-牛羚

在最后一行失败(./configure …)

如果我删除了最后一行并在容器中运行了bash,然后手动执行了最后一行,那么它将起作用。

我希望将命令添加到Dockerfile中(由RUN前缀)后,在容器中成功运行的任何命令都应该起作用

我错过了什么吗?


问题答案:

pwd在RUN命令中不是持久的。您需要在同一RUN中进行cd和配置。

这个Dockerfile可以正常工作:

FROM ubuntu:12.10
RUN apt-get update
RUN apt-get -y install libpcre3 libssl-dev
RUN apt-get -y install libpcre3-dev
RUN apt-get -y install wget zip gcc
RUN wget http://nginx.org/download/nginx-1.4.1.tar.gz
RUN gunzip nginx-1.4.1.tar.gz
RUN tar -xf nginx-1.4.1.tar
RUN wget --no-check-certificate https://github.com/max-l/nginx_accept_language_module/archive/master.zip
RUN unzip master
RUN cd nginx-1.4.1 && ./configure --add-module=../nginx_accept_language_module-master --with-http_ssl_module --with-pcre=/lib/x86_64-linux-gnu --with-openssl=/usr/lib/x86_64-linux-gnu


 类似资料:
  • 问题内容: 创建映像时是否可以创建在主机上执行命令的命令? 现在我正在做: 使用Dockerfile: 我希望能够做到: 使用Dockerfile: 当然,此脚本与Dockerfile位于同一目录中。 问题答案: (只是一个建议) 通常,我们使用以下结构来构建docker映像: build.sh :这是您应该调用的。其他常见任务包括下载所需文件或从主机临时复制ssh密钥。最后,此脚本将调用 Doc

  • 问题内容: 我有两个运行Windows Server 2012的虚拟机。一个运行Jenkins,另一个运行Jenkins的构建作业之一。作业从Subversion中检出测试代码,然后在Windows批处理脚本中运行。该测试可以编译并运行,但是会失败,并显示。这些是使用Selenium和Firefox驱动程序的TestNG测试。 如果我使用完全相同的命令并从Windows命令行运行它,则测试成功。我

  • 当我从Xcode4.6运行以下代码片段时,它可以编译并运行良好。但是当我尝试使用命令行工具(clang )编译它时,它失败了。 这里是编译日志:

  • 当我在命令行中运行TestNG时,抛出异常: c:\test>java org.testng.testng testng.xml线程“main”java.lang.noClassDefounderror:com/beust/jcommander/parameterexception在java.lang.class.getDeclaredMethods0(本机方法)在java.lang.class.

  • 我从OS X VM docker主机创建了一个docker容器。我使用run命令创建了它,并基于image-off-docker-hub创建了容器。 我现在连接到我的容器后,它创建并登录为根和在我的容器内的命令提示符。 我试图安装homebrew,但由于某些原因,我无法运行命令来安装homebrew: 当我跑步时,我会得到一个痛击: curl:找不到命令 不知道为什么我不能在我的容器里使用卷曲。