mirror of
https://github.com/rancher/os.git
synced 2025-07-31 22:47:16 +00:00
Offline image is automatically loaded when the system boots. When the system memory is not large enough (such as 1G), will lead to kernel panic.
162 lines
5.3 KiB
Docker
162 lines
5.3 KiB
Docker
FROM ubuntu:16.04
|
|
# FROM arm64=aarch64/ubuntu:16.04
|
|
|
|
# get the apt-cacher proxy set
|
|
ARG APTPROXY=
|
|
|
|
RUN echo "Acquire::http { Proxy \"$APTPROXY\"; };" >> /etc/apt/apt.conf.d/01proxy \
|
|
&& cat /etc/apt/apt.conf.d/01proxy \
|
|
&& apt-get update \
|
|
&& apt-get install -y --no-install-recommends \
|
|
build-essential \
|
|
ca-certificates \
|
|
cpio \
|
|
curl \
|
|
dosfstools \
|
|
gccgo \
|
|
genisoimage \
|
|
gettext \
|
|
git \
|
|
isolinux \
|
|
less \
|
|
libblkid-dev \
|
|
libmount-dev \
|
|
libselinux1-dev \
|
|
locales \
|
|
module-init-tools \
|
|
mtools \
|
|
openssh-client \
|
|
pkg-config \
|
|
qemu \
|
|
qemu-kvm \
|
|
rsync \
|
|
sudo \
|
|
syslinux-common \
|
|
vim \
|
|
wget \
|
|
xorriso \
|
|
xz-utils \
|
|
telnet
|
|
|
|
########## Dapper Configuration #####################
|
|
|
|
ENV DAPPER_ENV VERSION DEV_BUILD RUNTEST DEBUG APTPROXY ENGINE_REGISTRY_MIRROR INTEGRATION_TESTS
|
|
ENV DAPPER_DOCKER_SOCKET true
|
|
ENV DAPPER_SOURCE /go/src/github.com/rancher/os
|
|
ENV DAPPER_OUTPUT ./bin ./dist ./build/initrd ./build/kernel
|
|
ENV DAPPER_RUN_ARGS --privileged
|
|
ENV TRASH_CACHE ${DAPPER_SOURCE}/.trash-cache
|
|
ENV SHELL /bin/bash
|
|
WORKDIR ${DAPPER_SOURCE}
|
|
|
|
########## General Configuration #####################
|
|
ARG DAPPER_HOST_ARCH=amd64
|
|
ARG HOST_ARCH=${DAPPER_HOST_ARCH}
|
|
ARG ARCH=${HOST_ARCH}
|
|
|
|
ARG OS_REPO=rancher
|
|
ARG HOSTNAME_DEFAULT=rancher
|
|
ARG DISTRIB_ID=RancherOS
|
|
|
|
ARG DOCKER_VERSION=1.11.2
|
|
ARG DOCKER_PATCH_VERSION=v${DOCKER_VERSION}-ros1
|
|
ARG DOCKER_BUILD_VERSION=1.10.3
|
|
ARG DOCKER_BUILD_PATCH_VERSION=v${DOCKER_BUILD_VERSION}-ros1
|
|
ARG SELINUX_POLICY_URL=https://github.com/rancher/refpolicy/releases/download/v0.0.3/policy.29
|
|
|
|
ARG KERNEL_VERSION_amd64=4.9.78-rancher2
|
|
ARG KERNEL_URL_amd64=https://github.com/rancher/os-kernel/releases/download/v${KERNEL_VERSION_amd64}/linux-${KERNEL_VERSION_amd64}-x86.tar.gz
|
|
|
|
ARG DOCKER_URL_amd64=https://get.docker.com/builds/Linux/x86_64/docker-${DOCKER_VERSION}.tgz
|
|
ARG DOCKER_URL_arm64=https://github.com/rancher/docker/releases/download/${DOCKER_PATCH_VERSION}/docker-${DOCKER_VERSION}_arm64.tgz
|
|
|
|
ARG BUILD_DOCKER_URL_amd64=https://get.docker.com/builds/Linux/x86_64/docker-${DOCKER_BUILD_VERSION}
|
|
ARG BUILD_DOCKER_URL_arm64=https://github.com/rancher/docker/releases/download/${DOCKER_BUILD_PATCH_VERSION}/docker-${DOCKER_BUILD_VERSION}_arm64
|
|
|
|
ARG OS_RELEASES_YML=https://releases.rancher.com/os
|
|
|
|
ARG OS_SERVICES_REPO=https://raw.githubusercontent.com/${OS_REPO}/os-services
|
|
ARG IMAGE_NAME=${OS_REPO}/os
|
|
ARG DFS_IMAGE=${OS_REPO}/docker:v${DOCKER_VERSION}-2
|
|
|
|
ARG OS_BASE_URL_amd64=https://github.com/rancher/os-base/releases/download/v2017.02.9-1/os-base_amd64.tar.xz
|
|
ARG OS_BASE_URL_arm64=https://github.com/rancher/os-base/releases/download/v2017.02.9-1/os-base_arm64.tar.xz
|
|
######################################################
|
|
|
|
# Set up environment and export all ARGS as ENV
|
|
ENV ARCH=${ARCH} \
|
|
HOST_ARCH=${HOST_ARCH}
|
|
|
|
ENV BUILD_DOCKER_URL=BUILD_DOCKER_URL_${ARCH} \
|
|
BUILD_DOCKER_URL_amd64=${BUILD_DOCKER_URL_amd64} \
|
|
BUILD_DOCKER_URL_arm64=${BUILD_DOCKER_URL_arm64} \
|
|
DAPPER_HOST_ARCH=${DAPPER_HOST_ARCH} \
|
|
DFS_IMAGE=${DFS_IMAGE} \
|
|
DISTRIB_ID=${DISTRIB_ID} \
|
|
DOCKER_PATCH_VERSION=${DOCKER_PATCH_VERSION} \
|
|
DOCKER_URL=DOCKER_URL_${ARCH} \
|
|
DOCKER_URL_amd64=${DOCKER_URL_amd64} \
|
|
DOCKER_URL_arm64=${DOCKER_URL_arm64} \
|
|
DOCKER_VERSION=${DOCKER_VERSION} \
|
|
DOWNLOADS=/usr/src/downloads \
|
|
GOPATH=/go \
|
|
GO_VERSION=1.8.5 \
|
|
GOARCH=$ARCH \
|
|
HOSTNAME_DEFAULT=${HOSTNAME_DEFAULT} \
|
|
IMAGE_NAME=${IMAGE_NAME} \
|
|
KERNEL_VERSION=${KERNEL_VERSION_amd64} \
|
|
KERNEL_URL=KERNEL_URL_${ARCH} \
|
|
KERNEL_URL_amd64=${KERNEL_URL_amd64} \
|
|
KERNEL_URL_arm64=${KERNEL_URL_arm64} \
|
|
OS_BASE_SHA1=OS_BASE_SHA1_${ARCH} \
|
|
OS_BASE_URL=OS_BASE_URL_${ARCH} \
|
|
OS_BASE_URL_amd64=${OS_BASE_URL_amd64} \
|
|
OS_BASE_URL_arm64=${OS_BASE_URL_arm64} \
|
|
OS_RELEASES_YML=${OS_RELEASES_YML} \
|
|
OS_REPO=${OS_REPO} \
|
|
OS_SERVICES_REPO=${OS_SERVICES_REPO} \
|
|
REPO_VERSION=master \
|
|
SELINUX_POLICY_URL=${SELINUX_POLICY_URL}
|
|
ENV PATH=${GOPATH}/bin:/usr/local/go/bin:$PATH
|
|
|
|
RUN mkdir -p ${DOWNLOADS}
|
|
|
|
# Download kernel
|
|
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
|
|
RUN echo "... Downloading ${!KERNEL_URL}"; \
|
|
if [ -n "${!KERNEL_URL}" ]; then \
|
|
curl -fL ${!KERNEL_URL} > ${DOWNLOADS}/kernel.tar.gz \
|
|
;fi
|
|
|
|
# Download SELinux Policy
|
|
RUN curl -pfL ${SELINUX_POLICY_URL} > ${DOWNLOADS}/$(basename ${SELINUX_POLICY_URL})
|
|
|
|
# Install Go
|
|
RUN ln -sf go-6 /usr/bin/go && \
|
|
curl -sfL https://storage.googleapis.com/golang/go${GO_VERSION}.src.tar.gz | tar -xzf - -C /usr/local && \
|
|
cd /usr/local/go/src && \
|
|
GOROOT_BOOTSTRAP=/usr GOARCH=${HOST_ARCH} GOHOSTARCH=${HOST_ARCH} ./make.bash && \
|
|
rm /usr/bin/go
|
|
|
|
# Install Host Docker
|
|
RUN curl -fL ${!BUILD_DOCKER_URL} > /usr/bin/docker && \
|
|
chmod +x /usr/bin/docker
|
|
|
|
# Install Trash
|
|
RUN go get github.com/rancher/trash
|
|
|
|
# Install golint
|
|
RUN go get github.com/golang/lint/golint
|
|
|
|
RUN go get gopkg.in/check.v1
|
|
|
|
# Install dapper
|
|
RUN curl -sL https://releases.rancher.com/dapper/latest/dapper-`uname -s`-`uname -m | sed 's/arm.*/arm/'` > /usr/bin/dapper && \
|
|
chmod +x /usr/bin/dapper
|
|
|
|
RUN cd ${DOWNLOADS} && \
|
|
curl -pfL ${!OS_BASE_URL} | tar xvJf -
|
|
|
|
ENTRYPOINT ["./scripts/entry"]
|
|
CMD ["ci"]
|