2018-01-09 18:57:14 +00:00
|
|
|
# Copyright 2017 The Kubernetes Authors.
|
|
|
|
#
|
|
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
# you may not use this file except in compliance with the License.
|
|
|
|
# You may obtain a copy of the License at
|
|
|
|
#
|
|
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
#
|
|
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
# See the License for the specific language governing permissions and
|
|
|
|
# limitations under the License.
|
|
|
|
|
|
|
|
FROM BASEIMAGE
|
|
|
|
|
|
|
|
# If we're building for another architecture than amd64, the CROSS_BUILD_ placeholder is removed so
|
|
|
|
# e.g. CROSS_BUILD_COPY turns into COPY
|
|
|
|
# If we're building normally, for amd64, CROSS_BUILD lines are removed
|
|
|
|
CROSS_BUILD_COPY qemu-ARCH-static /usr/bin/
|
|
|
|
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
|
|
|
|
|
|
# Smaller package install size.
|
|
|
|
COPY excludes /etc/dpkg/dpkg.cfg.d/excludes
|
|
|
|
|
|
|
|
# Convenience script for building on this base image.
|
|
|
|
COPY clean-install /usr/local/bin/clean-install
|
|
|
|
|
|
|
|
# Update system packages.
|
|
|
|
RUN apt-get update \
|
|
|
|
&& apt-get dist-upgrade -y
|
|
|
|
|
|
|
|
# Hold required packages to avoid breaking the installation of packages
|
|
|
|
RUN apt-mark hold apt gnupg adduser passwd libsemanage1 libcap2
|
|
|
|
|
|
|
|
# Remove unnecessary packages.
|
|
|
|
# This list was generated manually by listing the installed packages (`apt list --installed`),
|
|
|
|
# then running `apt-cache rdepends --installed --no-recommends` to find the "root" packages.
|
|
|
|
# The root packages were evaluated based on whether they were needed in the container image.
|
|
|
|
# Several utilities (e.g. ping) were kept for usefulness, but may be removed in later versions.
|
|
|
|
RUN echo "Yes, do as I say!" | apt-get purge \
|
|
|
|
bash \
|
|
|
|
debconf-i18n \
|
|
|
|
e2fslibs \
|
|
|
|
e2fsprogs \
|
|
|
|
init \
|
|
|
|
initscripts \
|
|
|
|
libcap2-bin \
|
|
|
|
libkmod2 \
|
|
|
|
libmount1 \
|
|
|
|
libsmartcols1 \
|
|
|
|
libudev1 \
|
|
|
|
libblkid1 \
|
|
|
|
libncursesw5 \
|
|
|
|
libprocps6 \
|
|
|
|
libslang2 \
|
|
|
|
libss2 \
|
2018-11-26 18:23:56 +00:00
|
|
|
libsystemd0 \
|
2018-01-09 18:57:14 +00:00
|
|
|
libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl \
|
|
|
|
ncurses-base \
|
|
|
|
ncurses-bin \
|
|
|
|
systemd \
|
|
|
|
systemd-sysv \
|
|
|
|
sysv-rc \
|
|
|
|
tzdata
|
|
|
|
|
|
|
|
# No-op stubs replace some unnecessary binaries that may be depended on in the install process (in
|
|
|
|
# particular we don't run an init process).
|
|
|
|
WORKDIR /usr/local/bin
|
|
|
|
RUN touch noop && \
|
|
|
|
chmod 555 noop && \
|
|
|
|
ln -s noop runlevel && \
|
|
|
|
ln -s noop invoke-rc.d && \
|
|
|
|
ln -s noop update-rc.d
|
|
|
|
WORKDIR /
|
|
|
|
|
|
|
|
# Cleanup cached and unnecessary files.
|
|
|
|
RUN apt-get autoremove -y && \
|
|
|
|
apt-get clean -y && \
|
|
|
|
tar -czf /usr/share/copyrights.tar.gz /usr/share/common-licenses /usr/share/doc/*/copyright && \
|
|
|
|
rm -rf \
|
|
|
|
/usr/share/doc \
|
|
|
|
/usr/share/man \
|
|
|
|
/usr/share/info \
|
|
|
|
/usr/share/locale \
|
|
|
|
/var/lib/apt/lists/* \
|
|
|
|
/var/log/* \
|
|
|
|
/var/cache/debconf/* \
|
|
|
|
/usr/share/common-licenses* \
|
|
|
|
/usr/share/bash-completion \
|
|
|
|
~/.bashrc \
|
|
|
|
~/.profile \
|
|
|
|
/etc/systemd \
|
|
|
|
/lib/lsb \
|
|
|
|
/lib/udev \
|
|
|
|
/usr/lib/x86_64-linux-gnu/gconv/IBM* \
|
|
|
|
/usr/lib/x86_64-linux-gnu/gconv/EBC* && \
|
|
|
|
mkdir -p /usr/share/man/man1 /usr/share/man/man2 \
|
|
|
|
/usr/share/man/man3 /usr/share/man/man4 \
|
|
|
|
/usr/share/man/man5 /usr/share/man/man6 \
|
|
|
|
/usr/share/man/man7 /usr/share/man/man8
|