68a732e052
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>
Upstream-commit: bf2b8ec8165468d7454f6bd86f4a78e7e8b58d8e
Component: engine
74 lines
2.2 KiB
Bash
74 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
|