nk23x
10/23/2015 - 3:59 PM

docker

docker

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/



## 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 )

 
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
## 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