Docker

Exported from Notepad++
Docker < boo > —– \ \ \ ## . ## ## ## == ## ## ## ## === /””””””””””””””””___/ === ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~ \______ o __/ \ \ __/ \____\______/ ################################################################### Leichtgewichtige Application virtualisierung ################################################################### Stand: “Docker version 1.12.3, build 6b644ec” 11.2016 Mind. : FATA[0001] Your Linux kernel version 3.0.101-77-default is not supported for running docker. Please upgrade your kernel to 3.10.0 or newer. Prereq: Kernel Overlay Modul -> CONFIG_OVERLAY_FS=m #Source Code git clone https://github.com/docker/docker cd docker/ git checkout #Binaries downloaden wget –no-check-certificate https://get.docker.com/builds/Linux/x86_64/docker-latest.tgz wget https://download.docker.com/linux/static/stable/x86_64/docker-18.09.2.tgz wget https://download.docker.com/linux/static/stable/x86_64/docker-17.09.0-ce.tgz https://download.docker.com/linux/static/stable/x86_64/ tar -xzf docker-latest.tgz cd docker cp -frv * /usr/bin #Docker mit XFS ############## mkfs.xfs -f -n ftype=1 /dev/system/docker ############################## #Docker starten dockerd –bip 172.17.0.0/16 & docker –version docker info #Test Image docker run docker/whalesay cowsay boo docker images #Image aus online repository laden####################### docker images docker run -t -i ubuntu /bin/bash oder docker pull ubuntu = Image wird aus Repository gezogen aber nicht gestartet. exit docker ps -a #Mit Container verbinden docker start d30bf033c829 docker attach d30bf033c829 ################################################## #Eigenes Image erzeugen################################################## screen time tar –numeric-owner –exclude=/proc –exclude=/sys –exclude=/usr/src/linux-4.8.10 –exclude=/var/lib/docker -cvf test-base.tar / time tar –numeric-owner –exclude=’/proc/*’ –exclude=’/sys/*’ –exclude=’/mnt/*’ –exclude=’/var/lib/ntp/*’ –exclude=/proc –exclude=/sys –exclude=/usr/src/linux-4.13.1 –exclude=/var/lib/docker -cvf /mnt/sap/source/opensuse_leap_42.3_krnl_4.13.1.tar / time tar –numeric-owner –exclude=’/proc/*’ –exclude=’/sys/*’ –exclude=’/mnt/*’ –exclude=’/var/lib/ntp/*’ -cvf /mnt/cd_save/temporaer/AOOR/icinga_sles11sp3.tar / time cat test-base.tar | docker import – test-base docker images #docker run -i -t test-base cat /etc/issue docker run -i -t test-base /bin/bash crtl+p & crtl+q = Container verlassen. läuft weiter im Hintergrund docker rename happy_mahavira test_container docker ps -a ################################################## #Network config#################################### Prereq: Briging Utilities oder openVswitch (Dummy Netzwerk nicht möglich. Besser auf HyperVisor Ebene zustätzliche Netzwerkkarten hinzufügen) #Bridged Network ohne VLAN brctl addbr br0 brctl addif br0 eth1 brctl setfd br0 0 ifconfig br0 172.17.190.51 netmask 255.255.0.0 brctl show ifconfig docker network create –driver=bridge –ip-range=172.17.190.52/16 –subnet=172.17.0.0/16 –gateway=172.17.190.57 -o “com.docker.network.bridge.enable_icc=true” -o “com.docker.network.bridge.name=br0” br-admin docker network ls docker network inspect br-admin docker run –ip=172.17.190.65 –net=br-admin -it test-base /bin/bash docker run –privileged -it –ip=172.17.190.65 –net=vlan111 -it suse_leap_42.2_kernel_4.10.13 /bin/bash = Container mit mehr Rechten starten dann geht auch sowas wie “iptables -L -v -n” innerhalb des Containers docker run -d –privileged -it –ip=172.17.190.66 –net=vlan111 -it suse_leap_42.2_kernel_4.10.13 /usr/sbin/sshd -D = Container im Hintergrund starten. Daemon Mode. Ein “docker attach <conatiner>” macht dann Probleme docker run -d –privileged -it –ip=172.17.190.166 –net=vlan111 -m=512m –memory-swap=767m –cpus=1.5 -it suse_leap_42.2_kernel_4.10.13 /usr/sbin/sshd -D = Container mit limitiertem RAM,SWAP und CPU starten docker run -d –privileged -it –ip=172.17.190.56 –net=vlan111 –name puppet -it suse_leap_42.2_kernel_4.10.13 /usr/sbin/sshd -D = Namen vergeben docker run -d –privileged -it –ip=172.17.190.73 –net=vlan111 –name auditd_test –security-opt seccomp=unconfined -it suse_leap_42.3 /usr/sbin/sshd -D = Run without the default seccomp profile . https://docs.docker.com/engine/security/seccomp/#significant-syscalls-blocked-by-the-default-profile docker run -d –privileged -it –ip=172.17.190.77 –net=vlan111 –name asterisk_test_3 -it suse_leap_42.3 -v /usr/src:/usr/src -v /lib/modules:/lib/modules /usr/sbin/sshd -D = Container mit Kernel Source und Header Files vom Master Server starten . Notwendig falls man Programme kompilieren möchte die die Kernel Source Files und Header benötigen. docker run -d –privileged -it –ip=172.17.190.81 –net=vlan111 –hostname git-srv –name git -it -v /usr/src:/usr/src -v /lib/modules:/lib/modules opensuse_15_0 /usr/sbin/sshd -D = Hostname vergeben “–hostname {hostname} ” #### #Für V-LANs #lynx https://docs.docker.com/engine/userguide/networking/get-started-macvlan/#macvlan-8021q-trunk-bridge-mode-example-usage #ip link add link eth0.111 eth1 type vlan id 111 #ifconfig eth1 172.17.190.29 netmask 255.255.0.0 vconfig add eth0 111 ifconfig eth0.111 172.17.190.28 docker network create -d macvlan –subnet=172.17.0.0/16 –gateway=172.17.190.28 -o parent=eth0.111 vlan111 docker network connect vlan777 ed74afc0f044 = Dem Container ein weiteres Netzwerk hinzufügen. docker network connect vlan777 –ip 10.55.1.3 ff03f9ab0f8f = Einem laufenden Conatiner ein weiteres netz zuweisen bzw. Netzwerkkarte. #Default Routern ändern docker exec -it 385764b35c4d route -n docker exec -it 385764b35c4d route add -net 0/0 gw 10.55.1.251 # DMZ Default Gateway docker exec -it 385764b35c4d route del -net 0/0 gw 10.55.1.28 # Lokaler Docker Server. Wird default geladen. docker exec -it 385764b35c4d route -n ### docker network rm adbf1f10ddaa = Network löschen ### Docker mit openVswitch (und XEN parallel) betreiben. Alles wird nur über eine reale/physiche Netzwerkschnitstelle gemanaged (eth0). vconfig add eth0 111 ifconfig eth0.111 172.17.190.20 kill `cd /usr/local/var/run/openvswitch && cat ovsdb-server.pid ovs-vswitchd.pid` cp -frv /usr/local/etc/openvswitch/conf.db_ORG /usr/local/etc/openvswitch/conf.db cp -frv /usr/local/etc/openvswitch/.conf.db.~lock~_ORG /usr/local/etc/openvswitch/.conf.db.~lock~ ovsdb-server –remote=punix:/usr/local/var/run/openvswitch/db.sock \ –remote=db:Open_vSwitch,Open_vSwitch,manager_options \ –private-key=db:Open_vSwitch,SSL,private_key \ –certificate=db:Open_vSwitch,SSL,certificate \ –bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert \ –pidfile –detach ovs-vsctl –no-wait init ovs-vswitchd –pidfile –detach –log-file=/var/log/ovs_log.log ovs-vsctl show ovs-vsctl add-br xenbr0 ovs-vsctl add-port xenbr0 eth0.111 tag=111 #Docker Container OHNE Netzwerk starten docker run -d –privileged -it –net=none –hostname bc-peer-3 –name bc-peer-3 -it opensuse_15_0 /bin/bash besser mit SSHd starten “/usr/sbin/sshd -D” #Oder bei einem Nezustart des Docker Servers: docker start b834df42bfc5 docker ps -a ovs-docker add-port xenbr0 eth0 12ba41a88f72 –ipaddress=172.17.190.87/16 ovs-dpctl show | tail -n 1 ovs-vsctl show | grep -i 8028f21a771e4_l oder “ovs-vsctl show” Port “8028f21a771e4_l” tag: 111 Interface “8028f21a771e4_l” ovs-vsctl set port 8028f21a771e4_l tag=111 ovs-vsctl list interface 8028f21a771e4_l docker exec -it 12ba41a88f72 ifconfig eth0 ### ############################################### #Docker löschen############################################### killall -9 dockerd killall -9 docker-containerd-shim umount /var/lib/docker/overlay2 umount /var/lib/docker umount /var/lib/docker/btrfs btrfs subvolume list /var/lib/docker/btrfs/subvolumes btrfs subvolume delete /var/lib/docker/btrfs/subvolumes/* rm -frv /var/lib/docker ip link del docker0 ip link del docker_gwbridge ip link del vetha5c3f brctl delbr docker0 rm -frv /run/docker rm -frv /run/flocker rm -frv /var/lib/flocker ############################################### ############################################### #Commands############################################### docker inspect cranky_yonath docker exec -it cranky_yonath ip addr ethtool -S veth98eba27 docker top 8632297dabe2 = Prozesse innerhalb des Container anzeigen docker stats 8632297dabe2 = Live Auslastung des Containers docker search suse = Image suche im online repository docker rm 36196070cad6 d30bf033c829 = Conatiner löschen, zuvor stoppen (docker stop <ID>) docker rm -f 44e9eb41e558 = force löschen. docker rmi e4415b714b62 = Images löschen docker images -q -a | xargs –no-run-if-empty docker rmi docker system df = Platzverbrauch docker stop 3315eb064f97 = Container stoppen docker update -m 256m 823002bcf03c = Memory ändern im laufenden Betrieb docker search sles = Docker Hub durchsuchen docker pull debian = Image aus Docker Hub herunterladen docker exec 44e9eb41e558 ls = Kommando (ls) in einem laufenden Container ausführen docker exec -d -it ee7af8b429d8 /usr/sbin/sshd -D = Kommando im Hintergrund starten docker exec -i -t ea554b06d0cd /bin/bash = Bash starten und zum Container verbinden docker restart 44e9eb41e558 = Container neu starten, rebooten docker pause 44e9eb41e558 = Container pausieren. docker unpause 8660f35005f0 = Container (Prozesse) vortstezen. #Komandokombination docker ps -a | awk {‘print $1’} | xargs docker inspect | grep -iE “\”Name\”\: \”\/|source” = Anzeigen an welchem Container welche Volumes hängen docker ps -a | awk -F ” ” ‘{print $1}’ | grep -v CONTAINER | xargs docker inspect | grep -iE “Hostname\”:|\”IPAddress\”: \”1″ | column -t = IP des Containers anzeigen docker ps -a | awk -F ” ” ‘{print $1}’ | xargs docker pause = Alle Container pausieren. docker ps -a | awk -F ” ” ‘{print $1}’ | xargs docker unpause = Alle Container wieder starten. ######### ############################################### ############################################### #Docker commit (Snapshot bzw. Duplikat erzeugen) quasi ein Image aus dem original Image erzeugen und darauf dann arbeiten. docker commit d6af886a9521 debian:version2 docker images docker run -d –privileged -it –ip=172.17.190.71 –net=vlan111 -it debian:version2 bash docker attach d2ba175201e7 ############################################### #Information############################################### “/var/lib/docker” = Docker Root Dir: “cd /var/lib/docker/btrfs/subvolumes/fe97c717a26596eb7afbb9b4ddd472b637f2f33c6fec87019a679e4571009b82/root” = Zugriff auf Container Filesystem um die Zuordnung von btrfs subvolume unter /var/lib/docker vorzunehmen geht man wie folgt vor: 1. Die Container ID wird benötigt “docker ps -a ” CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f071a15f46a7 suse_leap_42.3 “/usr/sbin/sshd -D” 6 days ago Up 6 days asterisk_test_3 2.cat /var/lib/docker/image/btrfs/layerdb/mounts/<CONTAINER ID und tabben>0e0ee47da8e4c6792d1cf65e17341782ca0211ce900aa7b68e5e/mount-id “cat /var/lib/docker/image/btrfs/layerdb/mounts/f071a15f46a70e0ee47da8e4c6792d1cf65e17341782ca0211ce900aa7b68e5e/mount-id” 3. dann die ID uas machine-id “cd /var/lib/docker/btrfs/subvolumes/2d59f9ecb778442a7950ec9536813105347ad839dbdc06f1422d633292119171” “cat /var/lib/dbus/machine-id” = Die DBUS Machine ID kommt vom Docker Host und kann nicht von den Docker Containern (Clients) neu generiert werden. Der Container Kernel ist der des Docker Hosts, sowie diverse ähnlich Systemnahe Funktionen. Docker ist eine Prozess VM. das heißt es isoliert nur die Prozesse und dessen dazugehörige Abhängigkeiten aber keine Betriebssystemnahe Komponenten. Dafür wäre eine normel Hypervisor VM besser geeignet. Dafür ist sind Dockerconatiner leichtgewichtiger und Portabler als Hypervisor VMs. Unter “cd /var/lib/docker/btrfs/subvolumes” liegen die meisten Datein, das heißt hier wird der meiste Speicherplatz benötigt. “du -hs *” Obacht. Niemals das “/var/lib/docker/btrfs/subvolumes” von hand löschen. Erst prüfen ob der Container dazu weg ist Speicherplatz: #”du -sm /var/lib/docker/* | sort -n” ist leider nicht korrekt um die Infos einzuholen. btrfs filesystem df /var/lib/docker/ btrfs filesystem usage /var/lib/docker/ df -h /var/lib/docker/ Core Dumps innerhalb des Containers, laden beim Host System. “cd /var/lib/systemd/coredump” ” echo -n “rs-web-dev” > /proc/sys/kernel/hostname ” = Falls der interne Docker Container Hostanme eine Kryptische Nummer ist, einfach umbenennen. #Housekeeping für Docker: “date; time btrfs balance start -musage=100 -dusage=100 /var/lib/docker; date;” = /var/lib/docker BTRFS technisch ausbalancieren. Am besten jede Nacht Das Logging von Firewall Connections via iptables auf rsyslog funktioniert nicht ############################################ #Applications #SSH Server. Einfach den container mit “/bin/bash” starten und danach sshd starten “/usr/sbin/sshd -D &”. oder “docker run –ip=172.17.190.62 –net=br-admin -it test-base /usr/sbin/sshd -D” Sicherer und einfacher als ein “SSH chroot jail” #Apache Web Server Siehe Apache httpd Doku #SAP ERP IDES Siehe SAP Dokus #Icinga Monitoring Siehe Icinga Doku #MariaDB Siehe MariaDB Doku ############################################ SWARM Cluster Info: Für ein richtigen HA Modus sollten mind. 3 Manager Nodes zur Verfügung stehen. Default macht Docker ein Loadbalancing zwischen den Containern. Nüzlich zur Orchestrierung von Container. Aber kein Echtes HA sowei z.B. bei Xen Hypervisor. Am besten ein ceph RBD als Storage nutzen. #ceph osd pool ls #ceph osd pool create ceph_rdb_docker_swarm 8 #rbd create ceph_rdb_docker_swarm/docker_swarm –size 20G –object-size 8M –image-feature layering ceph osd pool ls rbd list ceph_rdb_docker_swarm rbd map –pool ceph_rdb_docker_swarm docker_swarm rbd showmapped #mkfs.btrfs /dev/rbd0 mount /dev/rbd0 /var/lib/docker dockerd & docker swarm init –advertise-addr 172.17.190.58 docker swarm –advertise-addr 172.17.190.58 init = Bei < 1.13 “docker swarm join-token worker” oder “manager” um den token separat anzuzeigen To add a worker to this swarm, run the following command: docker swarm join \ –token SWMTKN-1-3k9m5f7vkmbsjl49tlvazuqwwkzacjcr76mcb6mvqyz42ohci8-89nppo3zwb9muoek4k1bxs4rs \ 172.17.190.58:2377 To add a manager to this swarm, run ‘docker swarm join-token manager’ and follow the instructions. docker info docker node ls Node hinzufügen: docker swarm join –token SWMTKN-1-3k9m5f7vkmbsjl49tlvazuqwwkzacjcr76mcb6mvqyz42ohci8-89nppo3zwb9muoek4k1bxs4rs 172.17.190.58:2377 Manager Node hinzufügen. Auf dem ersten Manager Node docker swarm join-token manager Auf den hinzufügenden Manager Node: docker swarm join \ –token SWMTKN-1-1af1o86g1tx3u5xacoqdj4y47tg5rmp3zbmsq2fx8j3u2hpm0p-1b8vxbacq3rsrf0nlbuedvcbd \ 172.17.190.58:2377 #Overlay network docker network create -d overlay docker-test-net docker network create –driver overlay –subnet 172.17.0.0/16 docker-test-net Deploy Container in swarm #Auf manager node time cat test-base.tar | docker import – test-base docker images #docker pull nginx docker service create –name web –replicas 2 -p 8080:80 nginx –network my-network = bridge docker service create –name test –publish 8022:22 –replicas 1 test-base /usr/sbin/sshd -D #SSH in eigenem Template docker service create –name test –network docker-test-net –replicas 2 ubuntu sleep infinity docker network inspect docker-test-net docker ps -a = Container ID docker inspect –format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}’ 49351a6f14eb docker exec -it 49351a6f14eb bash swarm Container löschen: docker service rm swarmtest docker service ls Scaling up and Scaling down docker service scale swarmtest=2 Worker node aus SWARM verlassen docker swarm leave docker swarm leave –force docker node demote docker-node2 docker node rm –force nm7ppd3azzce6e5hmeilj9qll docker node ls Node im Status “Drain” wieder aktivieren docker node update –availability active docker-node1 ### Docker HA Betrieb nur im Active/Passiv Modus möglich. zumndest Out-of-the-Box ############################################ #Docker mit Ceph (RBD) Betrieb zuvor ein Ceph RBD (siehe Ceph Doku) anlegen und auf der Docker node mappen. “mount /dev/rbd0 /var/lib/docker” Dannach einfach den dockerd starten. Bei Ausfall der Docker Node, das RBD auf einer anderen Node mappen und mounten. #Device Mapper Storage Driver. #Vorteil die Daten werden im Ceph Cluster gespeichert. Container und Meta Files werden separate in RBD gespeichert. #RBD erstellen und mappen #rbd create ceph_rdb_docker_img/docker_data –size 20G –object-size 8M –image-feature layering #rbd create ceph_rdb_docker_img/docker_meta –size 30G –object-size 8M –image-feature layering #rbd create ceph_rdb_docker_img/docker_var_lib_docker –size 40G –object-size 8M –image-feature layering rbd map –pool ceph_rdb_docker_img docker_data rbd map –pool ceph_rdb_docker_img docker_meta rbd map –pool ceph_rdb_docker_img docker_var_lib_docker rbd showmapped #mkfs.btrfs /dev/rbd2 mount /dev/rbd2 /var/lib/docker “dockerd –storage-driver=devicemapper –storage-opt dm.datadev=/dev/rbd0 –storage-opt dm.metadatadev=/dev/rbd1 –storage-opt dm.override_udev_sync_check=true” “dockerd –storage-driver=devicemapper –storage-opt dm.datadev=/dev/loop0 –storage-opt dm.metadatadev=/dev/loop1 –storage-opt dm.override_udev_sync_check=true” “docker info” … Data file: /dev/rbd0 Metadata file: /dev/rbd1 … du -h /var/lib/docker/ dmsetup ls ########################################################################################## #Docker Volumes. File Share zwischen Containers. #In diesem Fall ein Ceph RBD. “docker volume create hello2 –opt device=/dev/rbd3 –opt type=btrfs” “docker volume ls” “docker volume inspect hello2” “mkfs.btrfs /dev/rbd3” “docker run –privileged -v hello2:/world -it suse_leap_42.2_kernel_4.10.13 /bin/bash” #Volume als sparse File auf einem entfernten Filesystem. #Volume kann von mehrern Containern gemountet werden, bei z.B. BTRFS ist das aber kein Shared Storage. Also obacht bei der Datenkonsitenz. “dd if=/dev/zero of=/tmp/docker_container_store.img bs=1024k seek=100000 count=0” = 100 GB File “losetup -a” “losetup /dev/loop0 /tmp/docker_container_store.img” “losetup -a” “mkfs.btrfs /dev/loop0” “docker volume ls” “docker volume create –driver local –opt type=btrfs –opt device=/dev/loop0 –name docker_container_store” “docker volume ls” “ls -al /var/lib/docker/volumes/docker_container_store/” #Container mit Volume starten “docker run –privileged -v docker_container_store:/world -it suse_leap_42.2_kernel_4.10.13 /bin/bash” “docker run -d –privileged -v docker_container_store:/container_store -it –ip=172.17.190.67 –net=vlan111 –name container_name -it suse_leap_42.2_kernel_4.10.13 /usr/sbin/sshd -D” #Test innerhalb des Containers “dd if=/dev/urandom of=/container_store/testfile.txt bs=1M count=10” “ls -al /container_store/” #Check auf Docker Server “du -h /tmp/docker_container_store.img” “ls -al /var/lib/docker/volumes/docker_container_store/_data/” “df -h” #Quasi an einem laufenden System das Volumen anhängen. Aber richtigerweise einen Clone erzeugen und an diesen dann das Volume hängen. Generell ist es aktuelle nicht möglich bei einem laufenden Container ein Vloume einzumounten. “docker commit ae9c566c2f41 clone_form_container” “docker run –privileged -v docker_container_store:/container_store -it clone_form_container /bin/bash” “docker run -d –privileged -v docker_container_store:/container_store -it –ip=172.17.190.67 –net=vlan111 –name container_name -it clone_form_container /usr/sbin/sshd -D” ######################################################################################## ######################################################################################## #Docker Image Stand speichern und exportieren . Vorsicht. Prüfen ob unter /var/lib/docker/tmp noch genügend Speicherplatz vorhanden ist. Work Around. “mount -t nfs 172.17.190.12:/root/vm_backup/temp /var/lib/docker/tmp -o noacl,nocto,noatime,nodiratime,soft,intr” docker images ggf. ein “docker commit” um den aktuellen Stand des Containers in einem Image abzubilden. “docker commit b1a5e2f2d8d3 git-server:backup_20180625″ docker save -o <save image to path> <image name> docker load -i <path to image tar file> ######################################################################################## #Docker Container Backupen######################################################################################## docker export –output=”/root/vm_backup/docker_backup/git-server_20180625.tar” b1a5e2f2d8d3 = Backup des laufenden Containers #Restore aus Backup ggf. alten Container löschen# docker rm b1a5e2f2d8d3 docker import /root/xen_storage_2/temp/rs-test_debain_grundinstall_20180730.tar docker images docker tag fdd818a91f0d debian_grundinstall docker run -d –privileged -it –ip=172.17.190.83 –net=vlan111 –hostname rs-test –name rs-test -it debian_grundinstall /usr/sbin/sshd -D ######################################################################################## ############################################ #Snapshot erstellen Docker commit (Snapshot bzw. Duplikat erzeuegn) quasi ein Image aus dem Original Image erzeugen und darauf dann arbeiten. docker commit d6af886a9521 debian:version2 docker run -d –privileged -it –ip=172.17.190.71 –net=vlan111 -it debian:version2 bash docker attach d2ba175201e7 ############################################ ############################################ #Rename Image Repository docker tag <old> <new> docker images docker tag suse_leap_42.2_kernel_4.10.13 suse_leap_42.2 docker rmi suse_leap_42.2_kernel_4.10.13 docker images docker ps -a #allerdings verschwinden hier die Namen der Images und es sind nur noch die IDs zu sehen, bei den bereits laufenden Container. Bei neu erstellten wird wieder der Name angezeigt. ############################################ Flocker is an open-source Container Data Volume Manager for your Dockerized applications. Leider ist Flocker für den Produktiv Einsatz nur bedingt geeignet. Nachteil, es werden out-of-the-box nur Cloud Storage (externe Speicher) unterstützt. pip install –upgrade pip curl -O https://bootstrap.pypa.io/get-pip.py python get-pip.py pip install docutils Babel: pip install babel #lynx https://pypi.python.org/pypi/Babel # Babel-2.4.0.tar.gz (md5) #wget https://pypi.python.org/packages/92/22/643f3b75f75e0220c5ef9f5b72b619ccffe9266170143a4821d4885198de/Babel-2.4.0.tar.gz#md5=90e7a0add19b2036a9b415630a0d9388 # git clone https://github.com/python-babel/babel.git #tar -xzf Babel-2.4.0.tar.gz #cd Babel-2.4.0/ #python setup.py install imagesize_py: lynx https://pypi.python.org/pypi/imagesize imagesize-0.7.1.tar.gz (md5) git clone https://github.com/shibukawa/imagesize_py cd imagesize_py python setup.py install cinderclient: pip install python-cinderclient #git clone https://github.com/openstack/python-cinderclient #cd python-cinderclient #python setup.py install git clone https://github.com/MiCHiLU/python-functools32 cd python-functools32 python setup.py install pip install eliot git clone https://github.com/ClusterHQ/flocker-ceph-driver cd flocker-ceph-driver/ python setup.py install pyparsing: wget https://pypi.python.org/packages/6f/2c/47457771c02a8ff0f302b695e094ec309e30452232bd79198ee94fda689f/pyparsing-1.5.7.tar.gz#md5=9be0fcdcc595199c646ab317c1d9a709 tar -xzf pyparsing-1.5.7.tar.gz cd pyparsing-1.5.7/ python setup.py install pip install -U pip setuptools git clone https://github.com/ClusterHQ/flocker cd flocker python setup.py install flocker-ca –version mkdir /etc/flocker cd /etc/flocker flocker-ca initialize docker-flocker flocker-ca create-control-certificate docker-node1 ln -s control-docker-node1.crt control-service.crt ln -s control-docker-node1.key control-service.key #ln -s control-docker-node1.crt node.crt #ln -s control-docker-node1.key node.key chmod 0700 /etc/flocker chmod 0600 /etc/flocker/control-service.key flocker-ca create-node-certificate Created 631da3fd-82c5-4f3c-8891-aef1df2ae907.crt. Copy it over to /etc/flocker/node.crt on your node machine and make sure to chmod 0600 it ln -s 631da3fd-82c5-4f3c-8891-aef1df2ae907.crt node.crt ln -s 631da3fd-82c5-4f3c-8891-aef1df2ae907.key node.key chmod 0600 /etc/flocker/node.crt scp 11be8a91-7318-48ae-aa4b-8a4daaae8c51.key 11be8a91-7318-48ae-aa4b-8a4daaae8c51.crt cluster.crt cluster.key <NODE2>:/etc/flocker ln -s 631da3fd-82c5-4f3c-8891-aef1df2ae907.crt node.crt ln -s 631da3fd-82c5-4f3c-8891-aef1df2ae907.key node.key flocker-ca create-api-certificate docker-node1 flocker-ca create-api-certificate plugin Ceph konfig: Funktioniert leider nicht mit ceph version 10.2.4-211-g12b091b (12b091b4a40947aa43919e71a318ed0dcedc8734) https://github.com/ClusterHQ/ceph-flocker-driver/issues/10 ceph osd pool ls ceph osd pool create ceph_flocker_docker 8 “vi /etc/flocker/agent.yml” -> version: 1 control-service: hostname: “docker-node1” dataset: backend: “ceph_flocker_driver” cluster_name: “ceph” user_id: “admin” ceph_conf_path: “/etc/ceph/ceph.conf” storage_pool: “ceph_flocker_docker” Flocker starten (auf Node1 / Controller): mkdir -p /var/lib/flocker /usr/bin/flocker-control -v –port tcp:4523 –agent-port tcp:4524 –journald & /usr/bin/flocker-dataset-agent –journald & /usr/bin/flocker-container-agent –journald & /usr/bin/flocker-docker-plugin –journald & sleep 60 dockerd & curl -sSL https://get.flocker.io/ | sh uft-flocker-ca –version Test: docker run -v apples:/data –volume-driver flocker busybox sh -c “echo hello > /data/file.txt” docker run -v apples:/data –volume-driver flocker busybox sh -c “cat /data/file.txt” losetup -a Auf den zustätzlichen nodes: Zuerst alle Zertis von der manager Node holen mkdir -p /var/lib/flocker /usr/bin/flocker-container-agent –journald & /usr/bin/flocker-dataset-agent –journald & /usr/bin/flocker-docker-plugin –journald & sleep 60 dockerd & curl -sSL https://get.flocker.io/ | sh export IGNORE_NETWORK_CHECK=1 export FLOCKER_CERTS_PATH=/etc/flocker/ export FLOCKER_USER=docker-node1 export FLOCKER_CONTROL_SERVICE=172.17.190.56 flockerctl list-nodes flockerctl list flockerctl create –node 1acbab49 –size 1Gb –metadata “name=apples,size=medium” losetup -a flockerctl list dockerd& docker info …. Volume: local flocker …. Test: docker run -v apples:/data –volume-driver flocker busybox sh -c “cat /data/file.txt” zuvor SWARM konfiguieren docker volume create –driver flocker –name yp-pune -o size=1GB flockerctl ls docker volume ls docker node list docker service create –mount type=volume,source=yp-pune,target=/Calsoft –name yogesh2 ubuntu sh -c ‘while true; do touch /Calsoft/$(hostname)-$(date +%F-%T); sleep 5; done’ docker service create –mount type=volume,source=yp-pune,target=/Calsoft –name yogesh ubuntu sh -c ‘echo “BLABLA_-$(date +%F-%T)” >> /Calsoft/file_node1’ docker run -v pune:/Calsoft –volume-driver flocker busybox sh -c “cat /Calsoft/file.txt” docker service ls docker service ps yogesh2 df -h ls -al /flocker/56925b44-0166-40c0-a59e-8ef7ba5c19bb docker node update –availability drain docker-node1 docker node list docker service ps yogesh ############################################## Zu startende Programme /usr/sbin/rsyslogd -n /usr/sbin/sshd -D ############################################################################################################################################################################### Troubleshooting Problem: Message from syslogd@docker01 at Jun 26 06:46:23 … kernel:[6014207.584215] unregister_netdevice: waiting for lo to become free. Usage count = 1 Lösung: sleep 15; echo 1 > /proc/sys/kernel/sysrq; echo b > /proc/sysrq-trigger; Problem: docker run -d –privileged -it –ip=172.17.190.83 –net=vlan111 –hostname rs-test –name rs-test -it debian_grundinstall /usr/sbin/sshd -D a7376efcfdd4dc5b20eb1833b46ee354d8ad947f3f63ccaed9fd1043c40c7d86 docker: Error response from daemon: endpoint with name rs-test already exists in network vlan111. Lösung docker inspect vlan111 docker network disconnect -f vlan111 rs-test docker inspect vlan111 Problem: Bei Opensuse 15.0 mit sshd SSH Connection werden im “nicht priviligeriten” Mouds abgelehnt Lösung: ??? oder nutze Opensuse Leap 42.3 #################################################################################################################################### ToDo: Checkpoint https://docs.docker.com/engine/reference/commandline/checkpoint/#description https://stackoverflow.com/questions/22378777/how-to-take-container-snapshots-in-docker autometd deployment for cloud UCP Block Ram Deveice Docker registry https://docs.docker.com/registry/ encrypted containers Spezial Volumens: https://github.com/moby/moby/pull/28645 Deployment via Kubernetes

Post Revisions: