mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
bf2b8ec816
This PR makes a user visible behavior change with userland proxy disabled by default and rely on hairpin NAT to be enabled by default. This may not work in older (unsupported) kernels where the user will be forced to enable userlandproxy if needed. - Updated the Docs - Changed the integration-cli to start with userlandproxy desiabled by default. Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
73 lines
2.2 KiB
Bash
73 lines
2.2 KiB
Bash
#!/bin/bash
|
|
|
|
# see test-integration-cli for example usage of this script
|
|
|
|
export PATH="$ABS_DEST/../binary:$ABS_DEST/../dynbinary:$ABS_DEST/../gccgo:$ABS_DEST/../dyngccgo:$PATH"
|
|
|
|
if ! command -v docker &> /dev/null; then
|
|
echo >&2 'error: binary or dynbinary must be run before .integration-daemon-start'
|
|
false
|
|
fi
|
|
|
|
# intentionally open a couple bogus file descriptors to help test that they get scrubbed in containers
|
|
exec 41>&1 42>&2
|
|
|
|
export DOCKER_GRAPHDRIVER=${DOCKER_GRAPHDRIVER:-vfs}
|
|
export DOCKER_EXECDRIVER=${DOCKER_EXECDRIVER:-native}
|
|
export DOCKER_USERLANDPROXY=${DOCKER_USERLANDPROXY:-false}
|
|
|
|
# example usage: DOCKER_STORAGE_OPTS="dm.basesize=20G,dm.loopdatasize=200G"
|
|
storage_params=""
|
|
if [ -n "$DOCKER_STORAGE_OPTS" ]; then
|
|
IFS=','
|
|
for i in ${DOCKER_STORAGE_OPTS}; do
|
|
storage_params="--storage-opt $i $storage_params"
|
|
done
|
|
unset IFS
|
|
fi
|
|
|
|
if [ -z "$DOCKER_TEST_HOST" ]; then
|
|
# Start apparmor if it is enabled
|
|
if [ -e "/sys/module/apparmor/parameters/enabled" ] && [ "$(cat /sys/module/apparmor/parameters/enabled)" == "Y" ]; then
|
|
# reset container variable so apparmor profile is applied to process
|
|
# see https://github.com/docker/libcontainer/blob/master/apparmor/apparmor.go#L16
|
|
export container=""
|
|
(
|
|
set -x
|
|
/etc/init.d/apparmor start
|
|
)
|
|
fi
|
|
|
|
export DOCKER_HOST="unix://$(cd "$DEST" && pwd)/docker.sock" # "pwd" tricks to make sure $DEST is an absolute path, not a relative one
|
|
( set -x; exec \
|
|
docker daemon --debug \
|
|
--host "$DOCKER_HOST" \
|
|
--storage-driver "$DOCKER_GRAPHDRIVER" \
|
|
--exec-driver "$DOCKER_EXECDRIVER" \
|
|
--pidfile "$DEST/docker.pid" \
|
|
--userland-proxy="$DOCKER_USERLANDPROXY" \
|
|
$storage_params \
|
|
&> "$DEST/docker.log"
|
|
) &
|
|
# make sure that if the script exits unexpectedly, we stop this daemon we just started
|
|
trap 'bundle .integration-daemon-stop' EXIT
|
|
else
|
|
export DOCKER_HOST="$DOCKER_TEST_HOST"
|
|
fi
|
|
|
|
# give it a little time to come up so it's "ready"
|
|
tries=30
|
|
while ! docker version &> /dev/null; do
|
|
(( tries-- ))
|
|
if [ $tries -le 0 ]; then
|
|
if [ -z "$DOCKER_HOST" ]; then
|
|
echo >&2 "error: daemon failed to start"
|
|
echo >&2 " check $DEST/docker.log for details"
|
|
else
|
|
echo >&2 "error: daemon at $DOCKER_HOST fails to 'docker version':"
|
|
docker version >&2 || true
|
|
fi
|
|
false
|
|
fi
|
|
sleep 2
|
|
done
|