对于以下docker文件:
FROM microsoft/aspnetcore-build:1.0.1 ENV DOTNET_SKIP_FIRST_TIME_EXPERIENCE 1 # This is FROM openjdk:8-jdk RUN apt-get update && apt-get install -y --no-install-recommends \ bzip2 \ unzip \ xz-utils \ apt-transport-https \ && rm -rf /var/lib/apt/lists/* RUN echo 'deb http://deb.debian.org/debian jessie-backports main' > /etc/apt/sources.list.d/jessie-backports.list RUN echo 'deb https://apt.dockerproject.org/repo debian-jessie main' > /etc/apt/sources.list.d/docker.list # Default to UTF-8 file.encoding ENV LANG C.UTF-8 # add a simple script that can auto-detect the appropriate JAVA_HOME value # based on whether the JDK or only the JRE is installed RUN { \ echo '#!/bin/sh'; \ echo 'set -e'; \ echo; \ echo 'dirname "$(dirname "$(readlink -f "$(which javac || which java)")")"'; \ } > /usr/local/bin/docker-java-home \ && chmod +x /usr/local/bin/docker-java-home ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64 ENV JAVA_VERSION 8u111 ENV JAVA_DEBIAN_VERSION 8u111-b14-2~bpo8+1 # see https://bugs.debian.org/775775 # and https://github.com/docker-library/java/issues/19#issuecomment-70546872 ENV CA_CERTIFICATES_JAVA_VERSION 20140324 RUN set -x \ && apt-get update \ && apt-get install -y \ openjdk-8-jdk="$JAVA_DEBIAN_VERSION" \ ca-certificates-java="$CA_CERTIFICATES_JAVA_VERSION" \ && rm -rf /var/lib/apt/lists/* \ && [ "$JAVA_HOME" = "$(docker-java-home)" ] # see CA_CERTIFICATES_JAVA_VERSION notes above RUN /var/lib/dpkg/info/ca-certificates-java.postinst configure ##### END OF THE JDK ##### START Jenkins Slave Node Config settings # Create Jenkins User RUN useradd jenkins -m -s /bin/bash RUN chown -R jenkins /home/jenkins RUN chgrp -R jenkins /home/jenkins RUN chown -R jenkins /tmp RUN chgrp -R jenkins /tmp # Add the jenkins user to sudoers RUN echo "jenkins ALL=(ALL) ALL" >> etc/sudoers # Must install docker to create docker images from docker container. Inception. Head... hurts. # container must be called with -v /var/run/docker.sock:/var/run/docker.sock RUN apt-get install -y --no-install-recommends apt-transport-https ca-certificates RUN apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D RUN apt-get update && apt-get install -y --no-install-recommends \ docker-engine \ && rm -rf /var/lib/apt/lists/* # This must run after the docker install RUN gpasswd -a jenkins docker USER jenkins
第38行的命令生成映像失败
RUN set -x \ && apt-get update \ && apt-get install -y \ openjdk-8-jdk="$JAVA_DEBIAN_VERSION" \ ca-certificates-java="$CA_CERTIFICATES_JAVA_VERSION" \ && rm -rf /var/lib/apt/lists/* \ && [ "$JAVA_HOME" = "$(docker-java-home)" ]
错误:
W:GPG错误:https : //apt.dockerproject.org debian-jessie InRelease:由于公共密钥不可用,无法验证以下签名:NO_PUBKEY F76221572C52609D W: There is no public key available for the following key IDs: AA8E81B4331F7F50 W: Failed to fetch http://deb.debian.org/debian/dists/jessie- backports/main/binary-amd64/Packages 找不到404 E: Some index files failed to download. They have been ignored, or old ones used instead. ERROR: Service 'slavedotnet' failed to build: The command '/bin/sh -c set -x && apt-get update && apt-get install -y openjdk-8-jdk=”$JAVA_DEBIAN_VERSION” ca-certificates-java=”$CA_CERTIFICATES_JAVA_VERSION” && rm -rf / var / lib / apt / lists / * && [“ $ JAVA_HOME” =“ $(docker-java- home)”]’返回的非零代码:100
W:GPG错误:https : //apt.dockerproject.org debian-jessie InRelease:由于公共密钥不可用,无法验证以下签名:NO_PUBKEY F76221572C52609D
W: There is no public key available for the following key IDs: AA8E81B4331F7F50 W: Failed to fetch http://deb.debian.org/debian/dists/jessie-
backports/main/binary-amd64/Packages
找不到404
E: Some index files failed to download. They have been ignored, or old
ones used instead.
ERROR: Service 'slavedotnet' failed to build: The command '/bin/sh -c
set -x && apt-get update && apt-get install -y openjdk-8-jdk=”$JAVA_DEBIAN_VERSION” ca-certificates-java=”$CA_CERTIFICATES_JAVA_VERSION” && rm -rf
/ var / lib / apt / lists / * && [“ $ JAVA_HOME” =“ $(docker-java- home)”]’返回的非零代码:100
如何解决公钥错误?
这里有几个问题:
1)W:GPG错误:https : //apt.dockerproject.org debian-jessie InRelease:由于公共密钥不可用,无法验证以下签名:NO_PUBKEY F76221572C52609D W:以下各项没有公共密钥密钥ID:AA8E81B4331F7F50
解:
将密钥服务器添加操作移到之前的位置RUN echo 'deb http://deb.debian.org/debian jessie-backports main' > /etc/apt/sources.list.d/jessie- backports.list,同时也添加AA8E81B4331F7F50到下一个位置:
RUN echo 'deb http://deb.debian.org/debian jessie-backports main' > /etc/apt/sources.list.d/jessie- backports.list
AA8E81B4331F7F50
RUN apt-get install -y --no-install-recommends apt-transport-https ca-certificates RUN apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D RUN apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys AA8E81B4331F7F50
2)W:无法获取http://deb.debian.org/debian/dists/jessie-backports/main/binary- amd64/Package 404 Not E:一些索引文件无法下载。它们已被忽略,或改用旧的。
microsoft/aspnetcore- build:1.0.1基于debian8,您想使用openjdk8apt仓库中没有的默认值。所以你用deb http://deb.debian.org/debian jessie-backports main。
microsoft/aspnetcore- build:1.0.1
debian8
openjdk8
deb http://deb.debian.org/debian jessie-backports main
不幸的是,如果您查看http://ftp.debian.org/debian/dists/,则会发现jessie- backports已被删除。因此,您必须像下一个一样切换到存档的url(注释旧的url,只需使用下一个url):
jessie- backports
#RUN echo 'deb http://deb.debian.org/debian jessie-backports main' > /etc/apt/sources.list.d/jessie-backports.list RUN echo 'deb http://archive.debian.org/debian jessie-backports main' > /etc/apt/sources.list.d/jessie-backports.list
同时,在完成上述操作后,您必须添加下一步以解决release-file-expired- problem:
RUN echo "Acquire::Check-Valid-Until \"false\";" > /etc/apt/apt.conf.d/100disablechecks
3)ENV JAVA_VERSION 8u111 ENV JAVA_DEBIAN_VERSION 8u111-b14-2〜bpo8 + 1
不确定如何获得此版本,但是实际上在更改存档jessie向后移植后,可以得到的内容如下:
root@2ecaeffec483:/etc/apt# apt-cache policy openjdk-8-jdk openjdk-8-jdk: Installed: (none) Candidate: 8u171-b11-1~bpo8+1 Version table: 8u171-b11-1~bpo8+1 0 100 http://archive.debian.org/debian/ jessie-backports/main amd64 Packages
因此,您必须更改为下一个:
ENV JAVA_VERSION 8u171 ENV JAVA_DEBIAN_VERSION 8u171-b11-1~bpo8+1