pkg/cadvisor

Signed-off-by: Marco Mariani <marco.mariani@alterway.fr>
This commit is contained in:
Marco Mariani 2017-11-16 18:15:59 +01:00
parent 3184572403
commit 959b6dd96d
4 changed files with 101 additions and 0 deletions

40
pkg/cadvisor/Dockerfile Normal file
View File

@ -0,0 +1,40 @@
FROM linuxkit/alpine:07f7d136e427dc68154cd5edbb2b9576f9ac5213 as build
RUN apk add --no-cache bash go git musl-dev linux-headers make
ENV GOPATH=/go PATH=$PATH:/go/bin
ENV GITREPO=github.com/google/cadvisor
ENV COMMIT=v0.28.1
ADD /static.patch /tmp/
RUN go get -d ${GITREPO} \
&& cd /go/src/${GITREPO} \
&& git checkout ${COMMIT} \
&& patch -p1 build/build.sh </tmp/static.patch \
&& make build \
&& mv cadvisor /usr/bin/
FROM linuxkit/alpine:07f7d136e427dc68154cd5edbb2b9576f9ac5213 AS mirror
RUN mkdir -p /out/etc/apk && cp -r /etc/apk/* /out/etc/apk/
RUN apk add --no-cache --initdb -p /out \
alpine-baselayout \
busybox \
curl
# Remove apk residuals
RUN rm -rf /out/etc/apk /out/lib/apk /out/var/cache
FROM scratch
ENTRYPOINT []
CMD []
WORKDIR /
COPY --from=mirror /out/ /
COPY --from=build /usr/bin/cadvisor /usr/bin/cadvisor
COPY /waitfordocker.sh /usr/bin/waitfordocker.sh
ENTRYPOINT ["/usr/bin/waitfordocker.sh", "/usr/bin/cadvisor", "-logtostderr", "--disable_metrics=disk,tcp,udp"]
LABEL org.mobyproject.config='{"pid": "host", "binds": ["/var/lib/docker:/var/lib/docker:ro", "/var/run:/var/run", "/sys:/sys:ro", "/etc/resolv.conf:/etc/resolv.conf:ro"], "capabilities": ["all"]}'

2
pkg/cadvisor/build.yml Normal file
View File

@ -0,0 +1,2 @@
image: cadvisor
network: true

10
pkg/cadvisor/static.patch Normal file
View File

@ -0,0 +1,10 @@
--- build/build.sh.orig 2017-11-16 16:29:18.281342577 +0000
+++ build/build.sh 2017-11-16 16:29:55.534787421 +0000
@@ -44,6 +44,7 @@
-X ${repo_path}/version.BuildDate${ldseparator}${BUILD_DATE}
-X ${repo_path}/version.GoVersion${ldseparator}${go_version}"
+ldflags="$ldflags -extldflags \"-static\""
echo ">> building cadvisor"
if [ -n "$VERBOSE" ]; then

49
pkg/cadvisor/waitfordocker.sh Executable file
View File

@ -0,0 +1,49 @@
#!/bin/sh
# copied from projects/compose, with fixes for shellcheck
# shellcheck disable=SC2039
set -e
#########
#
# wait for docker socket to be ready, then run the rest of the command
#
########
RETRIES=${RETRIES:-"-1"}
WAIT=${WAIT:=10}
[ -n "$DEBUG" ] && set -x
# keep retrying until docker is ready or we hit our limit
retry_or_fail() {
local retry_count=0
local success=1
local cmd=$1
local retryMax=$2
local retrySleep=$3
local message=$4
until [ "$retry_count" -ge "$retryMax" ] && [ "$retryMax" -ne -1 ]; do
echo "trying to $message"
set +e
$cmd
success=$?
set -e
[ $success -eq 0 ] && break
retry_count=$(( retry_count+1 )) || true
echo "attempt number $retry_count failed to $message, sleeping $retrySleep seconds..."
sleep "$retrySleep"
done
# did we succeed?
if [ $success -ne 0 ]; then
echo "failed to $message after $retryMax tries. Exiting..." >&2
exit 1
fi
}
connect_to_docker() {
[ -S /var/run/docker.sock ] || return 1
curl --unix-socket /var/run/docker.sock http://localhost/containers/json >/dev/null 2>&1 || return 1
}
# try to connect to docker
retry_or_fail connect_to_docker "$RETRIES" "$WAIT" "connect to docker"
# if we got here, we succeeded
exec "$@"