mirror of
https://github.com/psviderski/uncloud.git
synced 2026-08-26 11:03:34 +00:00
fix: migration script for uncloud Docker network to be compatible with Docker 28.2.0+
This commit is contained in:
Executable
+66
@@ -0,0 +1,66 @@
|
||||
#!/bin/bash
|
||||
# This script migrates the Docker network 'uncloud' on a machine that was created with uncloud <0.9.0 to be compatible
|
||||
# with Docker 28.2.0+. This fixes cross-machine communication for uncloud service containers.
|
||||
# It disconnects all containers from the network, removes the network, and then recreates it with the new configuration.
|
||||
# You should run this script as root or with sudo privileges.
|
||||
set -euo pipefail
|
||||
|
||||
# Do not recreate the network if it already has the required configuration.
|
||||
TRUSTED_INTERFACES=$(docker network inspect uncloud -f '{{index .Options "com.docker.network.bridge.trusted_host_interfaces"}}' 2>/dev/null)
|
||||
if [ "$TRUSTED_INTERFACES" = "uncloud" ]; then
|
||||
echo "Network uncloud already has the required option com.docker.network.bridge.trusted_host_interfaces=uncloud."
|
||||
echo "No migration needed."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "Getting containers connected to Docker network uncloud..."
|
||||
CONTAINERS=$(docker network inspect uncloud -f '{{range .Containers}}{{.Name}} {{end}}' 2>/dev/null)
|
||||
if [ -z "$CONTAINERS" ]; then
|
||||
echo "No containers found connected to uncloud network."
|
||||
else
|
||||
echo "Found containers: $CONTAINERS"
|
||||
fi
|
||||
|
||||
SUBNET=$(docker network inspect uncloud -f '{{range .IPAM.Config}}{{.Subnet}}{{end}}' 2>/dev/null)
|
||||
if [ -z "$SUBNET" ]; then
|
||||
echo "Error: Could not get subnet for Docker network uncloud."
|
||||
exit 1
|
||||
fi
|
||||
echo "Current uncloud network subnet: $SUBNET"
|
||||
|
||||
if [ -n "$CONTAINERS" ]; then
|
||||
echo "Disconnecting containers from uncloud network..."
|
||||
for CONTAINER in $CONTAINERS; do
|
||||
echo " Disconnecting $CONTAINER..."
|
||||
docker network disconnect uncloud "$CONTAINER"
|
||||
done
|
||||
fi
|
||||
|
||||
echo "Deleting uncloud network..."
|
||||
docker network rm uncloud
|
||||
|
||||
echo "Recreating uncloud network with new configuration..."
|
||||
if docker network create \
|
||||
--subnet "$SUBNET" \
|
||||
--label uncloud.managed \
|
||||
-o com.docker.network.bridge.trusted_host_interfaces=uncloud \
|
||||
uncloud;
|
||||
then
|
||||
echo "Network uncloud successfully recreated."
|
||||
else
|
||||
echo "Error: Failed to recreate uncloud network."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -n "$CONTAINERS" ]; then
|
||||
echo "Reconnecting containers to uncloud network..."
|
||||
for CONTAINER in $CONTAINERS; do
|
||||
echo " Reconnecting $CONTAINER..."
|
||||
docker network connect uncloud $CONTAINER
|
||||
done
|
||||
fi
|
||||
|
||||
echo "Restarting uncloud machine daemon..."
|
||||
systemctl restart uncloud.service
|
||||
|
||||
echo "Done!"
|
||||
Reference in New Issue
Block a user