Skip to content

Instantly share code, notes, and snippets.

@IMHOSUNG
Forked from kamermans/configure_docker0.sh
Last active February 18, 2022 02:02
Show Gist options
  • Save IMHOSUNG/c9bf30b10663b9759f620b2ab61c0d08 to your computer and use it in GitHub Desktop.
Save IMHOSUNG/c9bf30b10663b9759f620b2ab61c0d08 to your computer and use it in GitHub Desktop.
Change the IP subnet of Docker's default subnet interface
#!/bin/bash
if [ $# -lt 1 ]; then
echo "Usage: sudo ./change_docker_default_subnet.sh <ip/CIDR>"
echo " examples: "
echo " ./change_docker_default_subnet.sh 10.200.0.57/16"
echo " ./change_docker_default_subnet.sh 172.31.0.21/16"
echo " ./change_docker_default_subnet.sh 192.168.254.1/24"
echo " "
echo " NOTE: You should stop Docker before running this script."
echo " When you restart it, Docker will use the new IP."
echo " if you use 192.168.0.0/24 then you have to 192.168.0.1/24"
echo " also use"
echo " curl -sS https://gist.githubusercontent.com/IMHOSUNG/c9bf30b10663b9759f620b2ab61c0d08/raw/6123c9798ecd74c3b367953c439afb7187e359b3/change_docker_default_subnet.sh | sudo bash -s 192.168.254.1/24 "
exit 2
fi
NEW_IP="$1"
DOCKER_INIT="/etc/docker"
echo "stop docker service"
sudo systemctl stop docker.service
echo "Removing old docker0 network(s)"
NETWORKS=$(ip addr list docker0 | grep "inet " | cut -d" " -f6)
for NET in $NETWORKS; do
echo " $NET"
ip addr del $NET dev docker0
done
echo "Removing old iptables rules"
iptables -t nat -F POSTROUTING
iptables -F DOCKER
echo "Make daemon.json file"
touch daemon.json
printf '{"bip": "%s"}\n' "${NEW_IP}" > daemon.json
cp daemon.json $DOCKER_INIT
echo "starting Docker"
sudo systemctl start docker.service
echo "Remove Tmp Deamon.json File"
rm daemon.json
echo "check docker0 ip"
ifconfig -a
echo "restart ecs-agent"
docker restart ecs-agent
echo "check ecs-agent start"
docker ps
# IF YOU CAN'T RUN ECS-AGENT
# -> then check log use command "docker logs -t 'docker-container-id'"
# -> CHEKC ADD IAM Role (src : https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#attach-iam-role)
# -> CHECK ECS_CLUSTER NAME [must not include " " in name] (path: /etc/ecs/ecs.config)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment