Skip to content

Instantly share code, notes, and snippets.

@nk23x
Last active September 28, 2023 08:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nk23x/176581ebe20c890b6f6f to your computer and use it in GitHub Desktop.
Save nk23x/176581ebe20c890b6f6f to your computer and use it in GitHub Desktop.
docker examples: mariadb 2 master, 3 slaves (master:master and master:slave replication)
## run named containers, log to syslog
docker run -d -t \
--cidfile=/var/run/docker-cid/os-base \
--name os-base \
--log-driver=syslog \
--log-opt syslog-facility=daemon \
debian:8.1
docker inspect $(cat /var/run/docker-cid/os-base)
docker exec -it os-base /bin/bash
## see also: https://docs.docker.com/reference/run/#overriding-dockerfile-image-defaults
docker stop os-base
## re-run container or ...
docker run -d -t \
--log-driver=syslog \
--log-opt syslog-facility=daemon \
$(cat /var/run/docker-cid/os-base)
## ... remove it
docker rm $(cat /var/run/docker-cid/os-base)
rm /var/run/docker-cid/os-base
for h in master1; \
do docker run -d -t \
--cidfile=/var/run/docker-cid/mariadb-$h \
--name mariadb-$h \
--log-driver=syslog \
--log-opt syslog-facility=daemon \
-e MYSQL_ROOT_PASSWORD=[PASSWORD] \
mariadb:5.5; \
done
for h in master2 slave1 slave2 slave3; \
do docker run -d -t \
--cidfile=/var/run/docker-cid/mariadb-$h \
--name mariadb-$h \
--link mariadb-master1:mariadb-master1 \
--log-driver=syslog \
--log-opt syslog-facility=daemon \
-e MYSQL_ROOT_PASSWORD=[PASSWORD] \
mariadb:5.5; \
done
## in one line:
docker run -d -t --cidfile=/var/run/docker-cid/mariadb-master1 --name mariadb-master1 --log-driver=syslog --log-opt syslog-facility=daemon -e MYSQL_ROOT_PASSWORD=changeme mariadb:5.5; for h in master2 slave1 slave2 slave3; do docker run -d -t --cidfile=/var/run/docker-cid/mariadb-$h --name mariadb-$h --link mariadb-master1:mariadb-master1 --log-driver=syslog --log-opt syslog-facility=daemon -e MYSQL_ROOT_PASSWORD=changeme mariadb:5.5; done
for d in $(ls -1 /var/run/docker-cid/mariadb-*); do docker inspect $(cat $d); done
for d in $(ls -1 /var/run/docker-cid/mariadb-*); \
do docker stop $(cat $d); \
docker rm $(cat $d); \
rm $d; \
done
## in each container (if you want):
echo -e "[client]\nuser=root\npassword=[PASSWORD]\nhost=127.0.0.1" >/root/.my.cnf

docker on slackware 14.2 x86_64

download binaries from https://download.docker.com/linux/static/stable/x86_64/

wget -cv https://download.docker.com/linux/static/stable/x86_64/docker-24.0.6.tgz https://download.docker.com/linux/static/stable/x86_64/docker-rootless-extras-24.0.6.tgz

replace existing binaries

tar xvzf docker-24.0.6.tgz
mv docker /opt/docker-24.0.6
rm /opt/docker
ln -s /opt/docker-24.0.6 /opt/docker

if not exist, add symlinks in /usr/local/bin:

cd /opt/docker
for f in $(ls -1 | grep -v '.sh'); do ln -s $(pwd)/$f /usr/local/bin/$f; done

example /etc/docker/daemon.json

{
  "bip": "10.245.0.2/24",
  "fixed-cidr": "10.245.0.0/16",
  "mtu": 1500,
  "default-gateway": "10.245.0.1",
  "default-address-pools": [
    {
      "base": "10.245.0.0/16",
      "size": 24
    },
    {
      "base": "10.246.0.0/16",
      "size": 24
    }
  ],
  "live-restore": true,
  "default-address-pools":
    [
        {"base":"172.17.0.0/16","size":24}
  ],
  "live-restore": true,
  "dns" : ["192.168.212.32", "192.168.212.33"],
  "insecure-registries":["harbor.init.de"]
}
## scripted:
#!/bin/bash
if [ "$(echo $USERNAME)" != "root" ]; then
echo "this script needs to be run by root"
exit 1
fi
DOCKER_VERSION=$(docker version | grep -m 1 'Version:' | sed 's/ Version:[[:space:]]//g;s/\..*//g;')
if [ "$DOCKER_VERSION" -gt "16" ]; then
docker system prune --all --force
else
while $(docker images -a --no-trunc | grep -v IMAGE); do
for image in $(docker images -a --no-trunc | perl -pe 's/\s+ / /g;' | cut -d ' ' -f 3 | grep -v IMAGE); do
docker rmi -f --no-prune $image
done
done
fi
-----
## get a list of running containers
docker ps -a | cut -d ' ' -f 1 | grep -vi 'container'
## returns something like
# edf982b4e41f
# 0087ca30d1ec
# d6d7cec91928
# 06b42e344725
# d49b63067c18
## get the images currently in use by containers running
for d in $(docker ps -a | cut -d ' ' -f 1 | grep -vi container); do
docker inspect $d | grep -E 'Image.*sha256:' | perl -pe 's/.*sha256:([a-z0-9]{1,})\",/$1/g;';
done
## get a list of docker images not used by any (running) container
docker images --no-trunc -a | grep '<none>' | perl -pe 's/^.*sha256:([a-z0-9]{1,}) .*/$1/g;'
## remove unused images
for i in $(docker images --no-trunc -a | grep '<none>' | perl -pe 's/^.*sha256:([a-z0-9]{1,}) .*/$1/g;'); do
docker rmi $i;
done
## alternative rmi exec
docker rmi -f $(docker images --all=true --no-trunc=true | perl -pe 's/^.* [<lT2]{1,}.* ([0-9a-z]{10,}) .*/$1/g;' | grep -vE '[A-Z]' | uniq )
LINKS
https://docs.docker.com/userguide/dockerlinks/
http://linoxide.com/linux-how-to/networking-commands-docker-containers/
https://jpetazzo.github.io/2013/10/16/configure-docker-bridge-network/
http://unix.stackexchange.com/questions/155990/docker-bridges-dhcp
https://blog.codecentric.de/en/2014/01/docker-networking-made-simple-3-ways-connect-lxc-containers/
https://wiredcraft.com/blog/multi-host-docker-network/
http://www.dedoimedo.com/computers/docker-networking.html
http://www.nethero.org/post/115387066622/connecting-docker-containers-to-production-network
REPOS
https://github.com/nk23x/pipework
https://opsbot.com/advanced-docker-networking-pipework/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment