- Maschinen mit Vagrant oder Kickstart installieren.
-
Dann noch mit Ansible konfigurieren (playbook: s.u.):
ansible-playbook -i hosts -u root --extra-vars='{"dstk_hostname":{"name":"docker4","domain":"steinkopf.net"}}' ansible/baseserver.yml ansible-playbook -i hosts -u root ansible/docker.yml
- NFS-Share mit den Volumes, gemountet im Docker-Host auf
/opt/dockervolumes/
. Wird von anderem Host aus ebenfalls gemountet und von dort aus gesichert (Backup). -
docker-compose:
/opt/compose/
enthält je Anwendung ein Verzeichnis. Darin jeweils eindocker-compose.yml
. z.B. Jira:atlassian-jira: image: 'cptactionhank/atlassian-jira:latest' environment: - JAVA_OPTS=-Datlassian.plugins.enable.wait=300 ports: - '8091:8080' restart: always volumes: - '/opt/dockervolumes/atlassian_jira_home:/var/atlassian/jira' - /etc/localtime:/etc/localtime - /etc/timezone:/etc/timezone
- Simple (!) Überwachung, ob alle noch laufen: In separater Maschine läuft ein Cronjob:
*/5 * * * * ssh root@docker3 /root/bin/dockerstatus.sh | sort | maildiff.sh docker3_status
dockerstatus.sh
sieht so aus:docker inspect --format='{{.Name}}: {{.State.Status}}, started: {{.State.StartedAt}}, error: {{.State.Error}}.' $(docker ps --format "{{.Names}}")
Dessen Output sieht dann z.B. so aus:
/atlassianconfluence_atlassian-confluence_1: running, started: 2016-03-13T02:33:55.449812472Z, error: . /watchtower_watchtower_1: running, started: 2016-03-13T02:22:05.451858462Z, error: . /wordpress_wordpress_1: running, started: 2016-03-12T04:52:18.687126805Z, error: . /gitblit_gitblit_1: running, started: 2016-03-12T15:33:02.467254914Z, error: . /wordpress_mysql_1: running, started: 2016-03-12T04:52:17.894130738Z, error: . /atlassianjira_atlassian-jira_1: running, started: 2016-03-12T04:52:18.327794173Z, error: . /dockercomposeui_docker-compose-ui_1: running, started: 2016-03-12T04:52:18.329135739Z, error: . /haveged_haveged_1: running, started: 2016-03-12T04:52:17.657749912Z, error: .
- havaged löst das Problem mit
/dev/urandom
(siehe hier). -
watchtower schaut regelmäßig nach, ob es für eins der Images ein Update gibt.Hat sich als veraltet herausgestellt. Führt u.a. unverständlicher Fehlermeldung beim restart. -
Da
docker-compose pull
ggf. neue Images herunterlädt habe ich mir folgendes Skript erstellt, welches alle 10 Minuten läuft und ggf. alles aktualisiert:#!/bin/bash # update all containers: composefiles=$(find /opt/compose/ -maxdepth 2 -name docker-compose.yml | sort) for composefile in $composefiles ; do # see https://docs.docker.com/compose/reference/up/ : # docker-compose up picks up the changes by stopping and recreating the containers (preserving mounted volumes) echo "$composefile ..." docker-compose -f $composefile pull docker-compose -f $composefile up -d echo "" done \ 2>&1 | grep -v "Digest:\|Deleted:" echo "" # cleanup: docker ps -aqf status=exited | xargs --no-run-if-empty docker rm docker images -qf dangling=true | xargs --no-run-if-empty docker rmi
Anhang: ansible/docker.yml
- name: Install docker and docker-compose
hosts: all
become: true
become_user: root
# see https://galaxy.ansible.com/angstwad/docker_ubuntu/
roles:
- role: angstwad.docker_ubuntu
docker_pkg_name: docker-engine
update_docker_package: yes
install_kernel_extras: yes
kernel_update_and_reboot_permitted: yes
docker_opts: "--storage-driver=aufs --icc=false --iptables"
tasks:
- name: Fetch docker_compose_version
shell: docker-compose --version | awk 'NR==1{print $NF}'
register: docker_compose_version
- name: Install Bash completion for Docker Compose
get_url:
url='https://raw.githubusercontent.com/docker/compose/{{ docker_compose_version['stdout'] }}/contrib/completion/bash/docker-compose'
dest=/etc/bash_completion.d/docker-compose
force=yes # always overwrite in case docker version changed
when: docker_compose_version|success
Mein
docker-compose-update-all.sh
sieht seit heute so aus:Seit einiger Zeit habe ich immer wieder Probleme, dass sich Container nicht neu starten lassen (
Unable to remove filesystem for 47b17e8eaa449143e7abaf6efbfd5c44ea82e6e3dc0e9820d905c8a1b505017b: remove /var/lib/docker/containers/47b17e8eaa449143e7abaf6efbfd5c44ea82e6e3dc0e9820d905c8a1b505017b/shm: device or resource busy
).Googlen hat ergeben, dass wohl der Kern 3.13 aus Ubuntu 14.04 LTS ein Problem hat, welches in neueren Kerneln behoben ist.
(Info von hier.)
Hi,
vielen Dank für das Script zum Updaten der docker Images. Genau sowas habe ich gesucht 🙂
Gibt es denn inzwischen eine aktualisierte Version vom Script? Oder ist es noch aktuell?
Grüße
ErAzOr
Freut mich sehr. Danke.
Meine aktuelle Version des Skripts habe ich hier abgelegt: https://gitlab.steinkopf.net/snippets/11