2015-12-30 03:50:10 -05:00
|
|
|
# This file describes the standard way to build Docker on ARMv7, using docker
|
2015-11-05 09:38:41 -05:00
|
|
|
#
|
|
|
|
# Usage:
|
|
|
|
#
|
|
|
|
# # Assemble the full dev environment. This is slow the first time.
|
2015-12-30 03:50:10 -05:00
|
|
|
# docker build -t docker -f Dockerfile.armhf .
|
2015-11-05 09:38:41 -05:00
|
|
|
#
|
|
|
|
# # Mount your source in an interactive container for quick testing:
|
|
|
|
# docker run -v `pwd`:/go/src/github.com/docker/docker --privileged -i -t docker bash
|
|
|
|
#
|
|
|
|
# # Run the test suite:
|
2017-06-16 20:18:44 -04:00
|
|
|
# docker run --privileged docker hack/make.sh test-unit test-integration test-docker-py
|
2015-11-05 09:38:41 -05:00
|
|
|
#
|
|
|
|
# Note: AppArmor used to mess with privileged mode, but this is no longer
|
|
|
|
# the case. Therefore, you don't have to disable it anymore.
|
|
|
|
#
|
|
|
|
|
2017-08-01 09:26:13 -04:00
|
|
|
FROM arm32v7/debian:stretch
|
2015-11-05 09:38:41 -05:00
|
|
|
|
2016-11-20 17:14:51 -05:00
|
|
|
# allow replacing httpredir or deb mirror
|
|
|
|
ARG APT_MIRROR=deb.debian.org
|
|
|
|
RUN sed -ri "s/(httpredir|deb).debian.org/$APT_MIRROR/g" /etc/apt/sources.list
|
|
|
|
|
2015-11-05 09:38:41 -05:00
|
|
|
# Packaged dependencies
|
|
|
|
RUN apt-get update && apt-get install -y \
|
|
|
|
apparmor \
|
|
|
|
aufs-tools \
|
|
|
|
automake \
|
|
|
|
bash-completion \
|
|
|
|
btrfs-tools \
|
|
|
|
build-essential \
|
|
|
|
createrepo \
|
|
|
|
curl \
|
2016-11-03 12:47:50 -04:00
|
|
|
cmake \
|
2015-11-05 09:38:41 -05:00
|
|
|
dpkg-sig \
|
|
|
|
git \
|
|
|
|
iptables \
|
2015-12-16 17:01:51 -05:00
|
|
|
jq \
|
2016-01-05 00:50:15 -05:00
|
|
|
net-tools \
|
2015-11-05 09:38:41 -05:00
|
|
|
libapparmor-dev \
|
|
|
|
libcap-dev \
|
2017-08-18 05:48:55 -04:00
|
|
|
libdevmapper-dev \
|
2017-08-01 09:26:13 -04:00
|
|
|
libsystemd-dev \
|
2015-12-16 17:01:51 -05:00
|
|
|
libtool \
|
2017-08-01 09:26:13 -04:00
|
|
|
libudev-dev \
|
2015-11-05 09:38:41 -05:00
|
|
|
mercurial \
|
|
|
|
pkg-config \
|
Dockerfiles: fix test-docker-py
Presumably after switch to debian-stretch as a base, the following
errors happens in Jenkins:
10:48:03 ---> Making bundle: test-docker-py (in
bundles/17.06.0-dev/test-docker-py)
10:48:03 ---> Making bundle: .integration-daemon-start (in
bundles/17.06.0-dev/test-docker-py)
10:48:03 Using test binary docker
10:48:03 # DOCKER_EXPERIMENTAL is set: starting daemon with experimental
features enabled!
10:48:03 /etc/init.d/apparmor: 130: /etc/init.d/apparmor:
systemd-detect-virt: not found
10:48:03 Starting AppArmor profiles:Warning from stdin (line 1):
/sbin/apparmor_parser: cannot use or update cache, disable, or
force-complain via stdin
10:48:03 Warning failed to create cache: (null)
10:48:03 .
10:48:03 INFO: Waiting for daemon to start...
10:48:03 Starting dockerd
10:48:05 .
10:48:06 Traceback (most recent call last):
10:48:06 File
"/usr/local/lib/python2.7/dist-packages/_pytest/config.py", line 320, in
_importconftest
10:48:06 mod = conftestpath.pyimport()
10:48:06 File
"/usr/local/lib/python2.7/dist-packages/py/_path/local.py", line 662, in
pyimport
10:48:06 __import__(modname)
10:48:06 File "/docker-py/tests/integration/conftest.py", line 6, in
<module>
10:48:06 import docker.errors
10:48:06 File "/docker-py/docker/__init__.py", line 2, in <module>
10:48:06 from .api import APIClient
10:48:06 File "/docker-py/docker/api/__init__.py", line 2, in <module>
10:48:06 from .client import APIClient
10:48:06 File "/docker-py/docker/api/client.py", line 6, in <module>
10:48:06 import requests
10:48:06 ImportError: No module named requests
10:48:06 ERROR: could not load /docker-py/tests/integration/conftest.py
10:48:06
and
00:38:55 File "/docker-py/docker/transport/ssladapter.py", line 21, in
<module>
00:38:55 from backports.ssl_match_hostname import match_hostname
00:38:55 ImportError: No module named backports.ssl_match_hostname
00:38:55 ERROR: could not load /docker-py/tests/integration/conftest.py
To fix, install the missing python modules.
Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
2017-08-22 08:10:55 -04:00
|
|
|
python-backports.ssl-match-hostname \
|
2015-11-22 05:32:10 -05:00
|
|
|
python-dev \
|
2015-11-05 09:38:41 -05:00
|
|
|
python-mock \
|
|
|
|
python-pip \
|
Dockerfiles: fix test-docker-py
Presumably after switch to debian-stretch as a base, the following
errors happens in Jenkins:
10:48:03 ---> Making bundle: test-docker-py (in
bundles/17.06.0-dev/test-docker-py)
10:48:03 ---> Making bundle: .integration-daemon-start (in
bundles/17.06.0-dev/test-docker-py)
10:48:03 Using test binary docker
10:48:03 # DOCKER_EXPERIMENTAL is set: starting daemon with experimental
features enabled!
10:48:03 /etc/init.d/apparmor: 130: /etc/init.d/apparmor:
systemd-detect-virt: not found
10:48:03 Starting AppArmor profiles:Warning from stdin (line 1):
/sbin/apparmor_parser: cannot use or update cache, disable, or
force-complain via stdin
10:48:03 Warning failed to create cache: (null)
10:48:03 .
10:48:03 INFO: Waiting for daemon to start...
10:48:03 Starting dockerd
10:48:05 .
10:48:06 Traceback (most recent call last):
10:48:06 File
"/usr/local/lib/python2.7/dist-packages/_pytest/config.py", line 320, in
_importconftest
10:48:06 mod = conftestpath.pyimport()
10:48:06 File
"/usr/local/lib/python2.7/dist-packages/py/_path/local.py", line 662, in
pyimport
10:48:06 __import__(modname)
10:48:06 File "/docker-py/tests/integration/conftest.py", line 6, in
<module>
10:48:06 import docker.errors
10:48:06 File "/docker-py/docker/__init__.py", line 2, in <module>
10:48:06 from .api import APIClient
10:48:06 File "/docker-py/docker/api/__init__.py", line 2, in <module>
10:48:06 from .client import APIClient
10:48:06 File "/docker-py/docker/api/client.py", line 6, in <module>
10:48:06 import requests
10:48:06 ImportError: No module named requests
10:48:06 ERROR: could not load /docker-py/tests/integration/conftest.py
10:48:06
and
00:38:55 File "/docker-py/docker/transport/ssladapter.py", line 21, in
<module>
00:38:55 from backports.ssl_match_hostname import match_hostname
00:38:55 ImportError: No module named backports.ssl_match_hostname
00:38:55 ERROR: could not load /docker-py/tests/integration/conftest.py
To fix, install the missing python modules.
Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
2017-08-22 08:10:55 -04:00
|
|
|
python-requests \
|
2017-08-01 09:26:13 -04:00
|
|
|
python-setuptools \
|
2015-11-05 09:38:41 -05:00
|
|
|
python-websocket \
|
Dockerfiles: fix test-docker-py
Presumably after switch to debian-stretch as a base, the following
errors happens in Jenkins:
10:48:03 ---> Making bundle: test-docker-py (in
bundles/17.06.0-dev/test-docker-py)
10:48:03 ---> Making bundle: .integration-daemon-start (in
bundles/17.06.0-dev/test-docker-py)
10:48:03 Using test binary docker
10:48:03 # DOCKER_EXPERIMENTAL is set: starting daemon with experimental
features enabled!
10:48:03 /etc/init.d/apparmor: 130: /etc/init.d/apparmor:
systemd-detect-virt: not found
10:48:03 Starting AppArmor profiles:Warning from stdin (line 1):
/sbin/apparmor_parser: cannot use or update cache, disable, or
force-complain via stdin
10:48:03 Warning failed to create cache: (null)
10:48:03 .
10:48:03 INFO: Waiting for daemon to start...
10:48:03 Starting dockerd
10:48:05 .
10:48:06 Traceback (most recent call last):
10:48:06 File
"/usr/local/lib/python2.7/dist-packages/_pytest/config.py", line 320, in
_importconftest
10:48:06 mod = conftestpath.pyimport()
10:48:06 File
"/usr/local/lib/python2.7/dist-packages/py/_path/local.py", line 662, in
pyimport
10:48:06 __import__(modname)
10:48:06 File "/docker-py/tests/integration/conftest.py", line 6, in
<module>
10:48:06 import docker.errors
10:48:06 File "/docker-py/docker/__init__.py", line 2, in <module>
10:48:06 from .api import APIClient
10:48:06 File "/docker-py/docker/api/__init__.py", line 2, in <module>
10:48:06 from .client import APIClient
10:48:06 File "/docker-py/docker/api/client.py", line 6, in <module>
10:48:06 import requests
10:48:06 ImportError: No module named requests
10:48:06 ERROR: could not load /docker-py/tests/integration/conftest.py
10:48:06
and
00:38:55 File "/docker-py/docker/transport/ssladapter.py", line 21, in
<module>
00:38:55 from backports.ssl_match_hostname import match_hostname
00:38:55 ImportError: No module named backports.ssl_match_hostname
00:38:55 ERROR: could not load /docker-py/tests/integration/conftest.py
To fix, install the missing python modules.
Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
2017-08-22 08:10:55 -04:00
|
|
|
python-wheel \
|
2015-12-16 17:01:51 -05:00
|
|
|
xfsprogs \
|
|
|
|
tar \
|
2017-08-01 09:26:13 -04:00
|
|
|
thin-provisioning-tools \
|
2016-11-03 12:47:50 -04:00
|
|
|
vim-common \
|
2016-10-04 19:22:59 -04:00
|
|
|
--no-install-recommends \
|
|
|
|
&& pip install awscli==1.10.15
|
2015-11-05 09:38:41 -05:00
|
|
|
|
|
|
|
# Install Go
|
2017-07-13 21:56:00 -04:00
|
|
|
# IMPORTANT: When updating this please note that stdlib archive/tar pkg is vendored
|
2017-05-24 21:11:16 -04:00
|
|
|
ENV GO_VERSION 1.8.3
|
2016-11-04 10:03:41 -04:00
|
|
|
RUN curl -fsSL "https://golang.org/dl/go${GO_VERSION}.linux-armv6l.tar.gz" \
|
2016-01-05 00:50:15 -05:00
|
|
|
| tar -xzC /usr/local
|
2015-11-05 09:38:41 -05:00
|
|
|
ENV PATH /go/bin:/usr/local/go/bin:$PATH
|
2016-10-31 14:22:28 -04:00
|
|
|
ENV GOPATH /go
|
2015-11-05 09:38:41 -05:00
|
|
|
|
2016-09-21 22:15:18 -04:00
|
|
|
# We're building for armhf, which is ARMv7, so let's be explicit about that
|
2016-01-05 00:50:15 -05:00
|
|
|
ENV GOARCH arm
|
2015-12-30 03:50:10 -05:00
|
|
|
ENV GOARM 7
|
|
|
|
|
2017-03-07 17:19:46 -05:00
|
|
|
# Install seccomp: the version shipped upstream is too old
|
|
|
|
ENV SECCOMP_VERSION 2.3.2
|
2015-12-16 17:01:51 -05:00
|
|
|
RUN set -x \
|
2016-01-05 00:50:15 -05:00
|
|
|
&& export SECCOMP_PATH="$(mktemp -d)" \
|
|
|
|
&& curl -fsSL "https://github.com/seccomp/libseccomp/releases/download/v${SECCOMP_VERSION}/libseccomp-${SECCOMP_VERSION}.tar.gz" \
|
|
|
|
| tar -xzC "$SECCOMP_PATH" --strip-components=1 \
|
2015-12-16 17:01:51 -05:00
|
|
|
&& ( \
|
|
|
|
cd "$SECCOMP_PATH" \
|
2016-01-05 00:50:15 -05:00
|
|
|
&& ./configure --prefix=/usr/local \
|
2015-12-16 17:01:51 -05:00
|
|
|
&& make \
|
|
|
|
&& make install \
|
2016-01-05 00:50:15 -05:00
|
|
|
&& ldconfig \
|
2015-12-16 17:01:51 -05:00
|
|
|
) \
|
|
|
|
&& rm -rf "$SECCOMP_PATH"
|
|
|
|
|
2016-01-13 19:46:35 -05:00
|
|
|
# Install two versions of the registry. The first is an older version that
|
|
|
|
# only supports schema1 manifests. The second is a newer version that supports
|
|
|
|
# both. This allows integration-cli tests to cover push/pull with both schema1
|
|
|
|
# and schema2 manifests.
|
|
|
|
ENV REGISTRY_COMMIT_SCHEMA1 ec87e9b6971d831f0eff752ddb54fb64693e51cd
|
2016-01-20 17:25:06 -05:00
|
|
|
ENV REGISTRY_COMMIT cb08de17d74bef86ce6c5abe8b240e282f5750be
|
2015-11-05 09:38:41 -05:00
|
|
|
RUN set -x \
|
|
|
|
&& export GOPATH="$(mktemp -d)" \
|
|
|
|
&& git clone https://github.com/docker/distribution.git "$GOPATH/src/github.com/docker/distribution" \
|
|
|
|
&& (cd "$GOPATH/src/github.com/docker/distribution" && git checkout -q "$REGISTRY_COMMIT") \
|
|
|
|
&& GOPATH="$GOPATH/src/github.com/docker/distribution/Godeps/_workspace:$GOPATH" \
|
|
|
|
go build -o /usr/local/bin/registry-v2 github.com/docker/distribution/cmd/registry \
|
2016-01-13 19:46:35 -05:00
|
|
|
&& (cd "$GOPATH/src/github.com/docker/distribution" && git checkout -q "$REGISTRY_COMMIT_SCHEMA1") \
|
|
|
|
&& GOPATH="$GOPATH/src/github.com/docker/distribution/Godeps/_workspace:$GOPATH" \
|
|
|
|
go build -o /usr/local/bin/registry-v2-schema1 github.com/docker/distribution/cmd/registry \
|
2015-11-05 09:38:41 -05:00
|
|
|
&& rm -rf "$GOPATH"
|
|
|
|
|
2016-04-29 04:59:19 -04:00
|
|
|
# Install notary and notary-server
|
2016-11-28 13:29:17 -05:00
|
|
|
ENV NOTARY_VERSION v0.5.0
|
2016-01-05 00:50:15 -05:00
|
|
|
RUN set -x \
|
|
|
|
&& export GOPATH="$(mktemp -d)" \
|
|
|
|
&& git clone https://github.com/docker/notary.git "$GOPATH/src/github.com/docker/notary" \
|
2016-01-13 19:46:35 -05:00
|
|
|
&& (cd "$GOPATH/src/github.com/docker/notary" && git checkout -q "$NOTARY_VERSION") \
|
2016-03-24 18:41:34 -04:00
|
|
|
&& GOPATH="$GOPATH/src/github.com/docker/notary/vendor:$GOPATH" \
|
2016-01-05 00:50:15 -05:00
|
|
|
go build -o /usr/local/bin/notary-server github.com/docker/notary/cmd/notary-server \
|
2016-03-24 18:41:34 -04:00
|
|
|
&& GOPATH="$GOPATH/src/github.com/docker/notary/vendor:$GOPATH" \
|
2016-01-13 19:46:35 -05:00
|
|
|
go build -o /usr/local/bin/notary github.com/docker/notary/cmd/notary \
|
2016-01-05 00:50:15 -05:00
|
|
|
&& rm -rf "$GOPATH"
|
2015-11-05 09:38:41 -05:00
|
|
|
|
|
|
|
# Get the "docker-py" source so we can run their integration tests
|
2017-06-20 23:05:11 -04:00
|
|
|
ENV DOCKER_PY_COMMIT a962578e515185cf06506050b2200c0b81aa84ef
|
Fix test-docker-py on some arches
When running 'make all' on armhf, I got this:
> ---> Making bundle: .integration-daemon-start (in bundles/17.06.0-dev/test-docker-py)
> Using test binary docker
> INFO: Waiting for daemon to start...
> Starting dockerd
> .
> Traceback (most recent call last):
> File "/usr/local/lib/python2.7/dist-packages/_pytest/config.py", line
> 320, in _importconftest
> mod = conftestpath.pyimport()
> File "/usr/local/lib/python2.7/dist-packages/py/_path/local.py", line
> 662, in pyimport
> __import__(modname)
> File "/docker-py/tests/integration/conftest.py", line 6, in <module>
> import docker.errors
> File "/docker-py/docker/__init__.py", line 2, in <module>
> from .api import APIClient
> File "/docker-py/docker/api/__init__.py", line 2, in <module>
> from .client import APIClient
> File "/docker-py/docker/api/client.py", line 11, in <module>
> from .build import BuildApiMixin
> File "/docker-py/docker/api/build.py", line 6, in <module>
> from .. import auth
> File "/docker-py/docker/auth.py", line 6, in <module>
> import dockerpycreds
> ImportError: No module named dockerpycreds
> ERROR: could not load /docker-py/tests/integration/conftest.py
The fix for this was already provided by commit 0ec8f56a3 and
commit c7c923594, but for some reason it did not made its way
to Dockerfiles for all architectures.
While at it, remove excessive comments.
Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
2017-09-07 21:32:49 -04:00
|
|
|
# To run integration tests docker-pycreds is required.
|
2015-11-05 09:38:41 -05:00
|
|
|
RUN git clone https://github.com/docker/docker-py.git /docker-py \
|
|
|
|
&& cd /docker-py \
|
2016-01-05 00:50:15 -05:00
|
|
|
&& git checkout -q $DOCKER_PY_COMMIT \
|
Fix test-docker-py on some arches
When running 'make all' on armhf, I got this:
> ---> Making bundle: .integration-daemon-start (in bundles/17.06.0-dev/test-docker-py)
> Using test binary docker
> INFO: Waiting for daemon to start...
> Starting dockerd
> .
> Traceback (most recent call last):
> File "/usr/local/lib/python2.7/dist-packages/_pytest/config.py", line
> 320, in _importconftest
> mod = conftestpath.pyimport()
> File "/usr/local/lib/python2.7/dist-packages/py/_path/local.py", line
> 662, in pyimport
> __import__(modname)
> File "/docker-py/tests/integration/conftest.py", line 6, in <module>
> import docker.errors
> File "/docker-py/docker/__init__.py", line 2, in <module>
> from .api import APIClient
> File "/docker-py/docker/api/__init__.py", line 2, in <module>
> from .client import APIClient
> File "/docker-py/docker/api/client.py", line 11, in <module>
> from .build import BuildApiMixin
> File "/docker-py/docker/api/build.py", line 6, in <module>
> from .. import auth
> File "/docker-py/docker/auth.py", line 6, in <module>
> import dockerpycreds
> ImportError: No module named dockerpycreds
> ERROR: could not load /docker-py/tests/integration/conftest.py
The fix for this was already provided by commit 0ec8f56a3 and
commit c7c923594, but for some reason it did not made its way
to Dockerfiles for all architectures.
While at it, remove excessive comments.
Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
2017-09-07 21:32:49 -04:00
|
|
|
&& pip install docker-pycreds==0.2.1 \
|
2016-01-05 00:50:15 -05:00
|
|
|
&& pip install -r test-requirements.txt
|
2015-11-05 09:38:41 -05:00
|
|
|
|
|
|
|
# Set user.email so crosbymichael's in-container merge commits go smoothly
|
|
|
|
RUN git config --global user.email 'docker-dummy@example.com'
|
|
|
|
|
|
|
|
# Add an unprivileged user to be used for tests which need it
|
|
|
|
RUN groupadd -r docker
|
|
|
|
RUN useradd --create-home --gid docker unprivilegeduser
|
|
|
|
|
|
|
|
VOLUME /var/lib/docker
|
|
|
|
WORKDIR /go/src/github.com/docker/docker
|
2017-06-20 16:39:52 -04:00
|
|
|
ENV DOCKER_BUILDTAGS apparmor seccomp selinux
|
2015-11-05 09:38:41 -05:00
|
|
|
|
|
|
|
# Let us use a .bashrc file
|
|
|
|
RUN ln -sfv $PWD/.bashrc ~/.bashrc
|
|
|
|
|
|
|
|
# Register Docker's bash completion.
|
|
|
|
RUN ln -sv $PWD/contrib/completion/bash/docker /etc/bash_completion.d/docker
|
|
|
|
|
|
|
|
# Get useful and necessary Hub images so we can "docker load" locally instead of pulling
|
2015-12-16 17:01:51 -05:00
|
|
|
COPY contrib/download-frozen-image-v2.sh /go/src/github.com/docker/docker/contrib/
|
|
|
|
RUN ./contrib/download-frozen-image-v2.sh /docker-frozen-images \
|
2016-12-31 14:11:30 -05:00
|
|
|
armhf/buildpack-deps:jessie@sha256:eb2dad77ef53e88d94c3c83862d315c806ea1ca49b6e74f4db362381365ce489 \
|
|
|
|
armhf/busybox:latest@sha256:016a1e149d2acc2a3789a160dfa60ce870794eea27ad5e96f7a101970e5e1689 \
|
|
|
|
armhf/debian:jessie@sha256:ac59fa18b28d0ef751eabb5ba4c4b5a9063f99398bae2f70495aa8ed6139b577 \
|
|
|
|
armhf/hello-world:latest@sha256:9701edc932223a66e49dd6c894a11db8c2cf4eccd1414f1ec105a623bf16b426
|
|
|
|
# See also ensureFrozenImagesLinux() in "integration-cli/fixtures_linux_daemon_test.go" (which needs to be updated when adding images to this list)
|
2015-11-05 09:38:41 -05:00
|
|
|
|
2016-11-03 12:47:50 -04:00
|
|
|
# Install tomlv, vndr, runc, containerd, tini, docker-proxy
|
2016-09-23 12:20:57 -04:00
|
|
|
# Please edit hack/dockerfile/install-binaries.sh to update them.
|
2016-10-24 18:18:58 -04:00
|
|
|
COPY hack/dockerfile/binaries-commits /tmp/binaries-commits
|
2016-09-23 12:20:57 -04:00
|
|
|
COPY hack/dockerfile/install-binaries.sh /tmp/install-binaries.sh
|
2017-09-06 18:13:24 -04:00
|
|
|
RUN /tmp/install-binaries.sh tomlv vndr runc containerd tini proxy dockercli gometalinter
|
2017-04-17 19:18:46 -04:00
|
|
|
ENV PATH=/usr/local/cli:$PATH
|
2016-06-27 17:38:47 -04:00
|
|
|
|
2015-11-05 09:38:41 -05:00
|
|
|
ENTRYPOINT ["hack/dind"]
|
|
|
|
|
|
|
|
# Upload docker source
|
|
|
|
COPY . /go/src/github.com/docker/docker
|
2017-09-07 14:59:56 -04:00
|
|
|
|
|
|
|
# Options for hack/validate/gometalinter
|
|
|
|
ENV GOMETALINTER_OPTS="--deadline 10m -j2"
|