Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 48 additions & 29 deletions docker_db.sh
Original file line number Diff line number Diff line change
@@ -1,13 +1,30 @@
#! /bin/bash

# Detect container runtime
if command -v docker > /dev/null; then
CONTAINER_CLI=$(command -v docker)
HEALTCHECK_PATH="{{.State.Health.Status}}"
PRIVILEGED_CLI=""
else
if [[ "$(docker version | grep Podman)" == "" ]]; then
IS_DOCKER_RUNTIME=true
IS_PODMAN=false
else
IS_DOCKER_RUNTIME=false
IS_PODMAN=true
fi
elif command -v podman > /dev/null; then
CONTAINER_CLI=$(command -v podman)
HEALTCHECK_PATH="{{.State.Healthcheck.Status}}"
# Only use sudo for podman
IS_DOCKER_RUNTIME=false
IS_PODMAN=true
else
echo "ERROR: Neither docker nor podman found on PATH"
exit 1
fi

# Set runtime-specific defaults
if [[ "$IS_DOCKER_RUNTIME" == "true" ]]; then
HEALTHCHECK_PATH="{{.State.Health.Status}}"
PRIVILEGED_CLI=""
elif [[ "$IS_PODMAN" == "true" ]]; then
HEALTHCHECK_PATH="{{.State.Healthcheck.Status}}"
if command -v sudo > /dev/null; then
PRIVILEGED_CLI="sudo"
else
Expand Down Expand Up @@ -560,7 +577,7 @@ oracle_setup() {
if ! command -v docker > /dev/null; then
$PRIVILEGED_CLI $CONTAINER_CLI healthcheck run oracle > /dev/null
fi
HEALTHSTATUS="`$PRIVILEGED_CLI $CONTAINER_CLI inspect -f $HEALTCHECK_PATH oracle`"
HEALTHSTATUS="`$PRIVILEGED_CLI $CONTAINER_CLI inspect -f $HEALTHCHECK_PATH oracle`"
HEALTHSTATUS=${HEALTHSTATUS##+( )} #Remove longest matching series of spaces from the front
HEALTHSTATUS=${HEALTHSTATUS%%+( )} #Remove longest matching series of spaces from the back
done
Expand Down Expand Up @@ -640,7 +657,7 @@ oracle_free_setup() {
if ! command -v docker > /dev/null; then
$PRIVILEGED_CLI $CONTAINER_CLI healthcheck run oracle > /dev/null
fi
HEALTHSTATUS="`$PRIVILEGED_CLI $CONTAINER_CLI inspect -f $HEALTCHECK_PATH oracle`"
HEALTHSTATUS="`$PRIVILEGED_CLI $CONTAINER_CLI inspect -f $HEALTHCHECK_PATH oracle`"
HEALTHSTATUS=${HEALTHSTATUS##+( )} #Remove longest matching series of spaces from the front
HEALTHSTATUS=${HEALTHSTATUS%%+( )} #Remove longest matching series of spaces from the back
done
Expand Down Expand Up @@ -710,28 +727,30 @@ EOF\""
}

disable_userland_proxy() {
if [[ "$HEALTCHECK_PATH" == "{{.State.Health.Status}}" ]]; then
if [[ ! -f /etc/docker/daemon.json ]]; then
echo "Didn't find /etc/docker/daemon.json but need to disable userland-proxy..."
echo "Stopping docker..."
sudo service docker stop
echo "Creating /etc/docker/daemon.json..."
sudo bash -c "echo '{\"userland-proxy\": false}' > /etc/docker/daemon.json"
echo "Starting docker..."
sudo service docker start
echo "Docker successfully started with userland proxies disabled"
elif ! grep -q userland-proxy /etc/docker/daemon.json; then
echo "Userland proxy is still enabled in /etc/docker/daemon.json, but need to disable it..."
export docker_daemon_json=$(</etc/docker/daemon.json)
echo "Stopping docker..."
sudo service docker stop
echo "Updating /etc/docker/daemon.json..."
sudo bash -c "export docker_daemon_json='$docker_daemon_json'; echo \"\${docker_daemon_json/\}/,}\\\"userland-proxy\\\": false}\" > /etc/docker/daemon.json"
echo "Starting docker..."
sudo service docker start
echo "Service status:"
sudo journalctl -xeu docker.service
echo "Docker successfully started with userland proxies disabled"
if [[ "$IS_DOCKER_RUNTIME" == "true" ]]; then
if [[ "$HEALTHCHECK_PATH" == "{{.State.Health.Status}}" ]]; then
if [[ ! -f /etc/docker/daemon.json ]]; then
echo "Didn't find /etc/docker/daemon.json but need to disable userland-proxy..."
echo "Stopping docker..."
sudo service docker stop
echo "Creating /etc/docker/daemon.json..."
sudo bash -c "echo '{\"userland-proxy\": false}' > /etc/docker/daemon.json"
echo "Starting docker..."
sudo service docker start
echo "Docker successfully started with userland proxies disabled"
elif ! grep -q userland-proxy /etc/docker/daemon.json; then
echo "Userland proxy is still enabled in /etc/docker/daemon.json, but need to disable it..."
export docker_daemon_json=$(</etc/docker/daemon.json)
echo "Stopping docker..."
sudo service docker stop
echo "Updating /etc/docker/daemon.json..."
sudo bash -c "export docker_daemon_json='$docker_daemon_json'; echo \"\${docker_daemon_json/\}/,}\\\"userland-proxy\\\": false}\" > /etc/docker/daemon.json"
echo "Starting docker..."
sudo service docker start
echo "Service status:"
sudo journalctl -xeu docker.service
echo "Docker successfully started with userland proxies disabled"
fi
fi
fi
}
Expand Down