为什么从Docker映像的jar文件已损坏?

时间:2018-05-05 18:00:00

标签: java docker jenkins jar jenkins-cli

我使用curl使用Docker下载了jar文件(jenkins-cli.jar)。使用命令:

getDate()

这是Dockerfile,它复制手动下载的jar文件以及文件下载。

RUN curl --insecure -O http://192.168.99.100:8080/jnlpJars/jenkins-cli.jar

我在注释中提到了两个文件命令,以下是输出: root @ e31bbf40f650:/ #file jenkins-cli.jar(复制的jar文件) jenkins-cli.jar:Zip归档数据,至少要提取v1.0

root @e31bbf40f650:/ opt #file jenkins-cli.jar(构建映像时下载的jar文件) jenkins-cli.jar:HTML文档,ASCII文本,带CRLF,LF行终止符

使用less命令输出jenkins-ci.html。

FROM ubuntu:14.04
# Install Java.
RUN \
  echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections && \
  apt-get update && \
  apt-get upgrade -y && \
  apt-get install -y  software-properties-common && \
  add-apt-repository ppa:webupd8team/java -y && \
  apt-get update && \
  apt-get install -y oracle-java8-installer && \
  rm -rf /var/lib/apt/lists/* && \
  rm -rf /var/cache/oracle-jdk8-installer

# Define commonly used JAVA_HOME variable
ENV JAVA_HOME /usr/lib/jvm/java-8-oracle

#Install dependencies
RUN apt-get -y update  && \
    apt-get -yqq --no-install-recommends install bash git bzip2 curl unzip && \
    apt-get update

EXPOSE 8080
VOLUME /jenkins

ENV JENKINS_URL "http://192.168.99.100:8080"    
ENV PRIVATE_KEY "C:\Users\himn\.ssh\id_rsa" 
COPY jenkins-cli.jar /jenkins-cli.jar 
RUN curl -H "Accept: application/zip"  http://192.168.99.100:8080/jnlpJars/jenkins-cli.jar -o /opt/jenkins-cli.jar
VOLUME /ssh
ENTRYPOINT ["bash"]

这是我的主机jenkins服务器

的docker文件
root@e31bbf40f650:/opt# less jenkins-ci.html
<!-- IE friendly error message walkround.
     if error message from server is less than
     512 bytes IE v5+ will use its own error
     message instead of the one returned by
     server.                                 -->






<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <style type="text/css">
      html,body{
        height:100%;
        padding:0;
        margin:100;
      }
      .oc{
        display:table;
        width:100%;
        height:100%;
      }
      .ic{
        display:table-cell;
        vertical-align:middle;
        height:100%;
      }
      div.msg{
        display:block;
        border:1px solid #30c;
        padding:0;
        width:500px;
        font-family:helvetica,sans-serif;
        margin:10px auto;
      }
      h1{
        font-weight:bold;
        color:#fff;
        font-size:14px;
        margin:0;
        padding:2px;
        text-align:center;
        background: #30c;
      }
      p{
        font-size:12px;
        margin:15px auto;
        width:75%;
        font-family:helvetica,sans-serif;
        text-align:left;
      }
    </style>
    <title>
      504 Gateway Timeout: remote server did not respond to the proxy
    </title>
  </head>
  <body>
    <div class="oc">
      <div class="ic">
        <div class="msg">
          <h1>
            504 Gateway Timeout: remote server did not respond to the proxy
jenkins-ci.html 

1 个答案:

答案 0 :(得分:3)

ls输出中的<28> 2832并不意味着2.83MB,它意味着2832 字节。我想你应该尝试将它重命名为以.html结尾的文件名并在网络浏览器中打开它,或者只是用less查看它。这两种方法中的一种应该向您展示问题所在。