Docker: Unterschied zwischen den Versionen
Admin (Diskussion | Beiträge) |
Admin (Diskussion | Beiträge) |
||
(52 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
[[Kategorie:Virtualisierung]] | |||
[[Kategorie:Docker]] | |||
= Installation = | = Installation = | ||
== | == Ubuntu (x86) == | ||
<source lang="bash" enclose="div"> | <source lang="bash" enclose="div"> | ||
apt-get install | apt-get update | ||
apt-get install apt-transport-https ca-certificates | |||
apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D | |||
docker run hello-world | |||
echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" > /etc/apt/sources.list.d/docker.list | |||
apt-get update | |||
apt-get purge lxc-docker | |||
apt-cache policy docker-engine | |||
apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual | |||
apt-get install docker-engine | |||
service docker start | |||
docker run hello-world # Test | |||
</source> | </source> | ||
== | == Raspbian (arm) == | ||
<source lang="bash" enclose="div"> | <source lang="bash" enclose="div"> | ||
curl -sSL https://get.docker.com | sh | |||
</source> | </source> | ||
= Docker Registry = | |||
''ToDo'' | |||
'' | |||
= | = Arbeiten mit Docker = | ||
== | == Eingerichtete Images auflisten == | ||
<source lang="bash" enclose="div"> | <source lang="bash" enclose="div"> | ||
> docker ps -a | |||
CONTAINER ID IMAGE COMMAND CREATED STATUS | CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES | ||
cc65f386f2d5 nginx:1 nginx 9 months ago | cc65f386f2d5 nginx:1 nginx 9 months ago Up 3 seconds 0.0.0.0:7890->80/tcp dc-nginx | ||
</source> | </source> | ||
== Container starten == | == Container starten == | ||
Wenn der Container schon konfiguriert ist: | |||
<source lang="bash" enclose="div"> | <source lang="bash" enclose="div"> | ||
> docker start cc65f386f2d5 | |||
</source> | |||
Sonst muss man die ganzen Paramter mitgeben: | |||
<source lang="bash" enclose="div"> | |||
docker run --name=myContainer -i -t -d -p 80:80/tcp -p 443:443/tcp -v /conf.d:/conf.d forumi0721alpinearmhf/alpine-armhf-nginx:latest /bin/ash | |||
</source> | </source> | ||
Ein paar bedeuten: | |||
-d, --detach=true|false | |||
-i, --interactive=true|false | |||
--name=myContainer | |||
-t, --tty=true|false | |||
-v|--volume[=[[HOST-DIR:]CONTAINER-DIR[:OPTIONS]]] | |||
== Container stoppen == | == Container stoppen == | ||
<source lang="bash" enclose="div"> | <source lang="bash" enclose="div"> | ||
docker | docker stop cc65f386f2d5 | ||
</source> | |||
== Interaktive Shell in laufenden Container == | |||
<source lang="bash" enclose="div"> | |||
docker exec -it 96d65e7eff87 ash | |||
</source> | </source> | ||
== Container löschen == | == Container löschen == | ||
== Image eines Containers löschen == | |||
= Hilfen = | |||
== docker-compose == | |||
docker-compose macht das Leben ein wenig einfacher. | |||
<source lang="bash" enclose="div"> | |||
curl -L https://github.com/docker/compose/releases/download/1.8.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose | |||
chmod +x /usr/local/bin/docker-compose | |||
</source> | |||
== Dockerimage Architektur == | |||
<source lang="bash" enclose="div"> | <source lang="bash" enclose="div"> | ||
docker inspect 882059b7ca70 | jq '.[] | .Architecture' | |||
docker search armhf- | |||
</source> | </source> | ||
== | == Finden von fertigen Images == | ||
Images lassen sich sowohl mit dem Befehl | |||
<source lang="bash" enclose="div"> | <source lang="bash" enclose="div"> | ||
docker | docker search gitlab | ||
</source> | </source> | ||
suchen. Eine Übersicht ist auch dem Docker-Webseite zu sehen. | |||
= | == Inspizieren von Images == | ||
<source lang="bash" enclose="div"> | <source lang="bash" enclose="div"> | ||
docker | docker inspect dcac31412f51 | ||
</source> | </source> | ||
= | = Verwaltung = | ||
Mit dem Befehl | |||
<source lang="bash" enclose="div"> | |||
docker pull sameersbn/gitlab | |||
</source> | |||
lassen sich dann die Iamges herunterladen. Dabei steht der Teil vor dem / für den Nutzer, das das Image erzeugt hat und der Teil nach dem Schrägstrich für das Programm, welches durch das Image bereitgestellt wird. | |||
=== Liste aller lokal vorliegenden Images === | |||
Die Liste der lokal vorliegenden Images lass sich mit dem Befehl | |||
<source lang="bash" enclose="div"> | |||
docker images | |||
</source> | |||
anzeigen. Ein mögliches Ergebnis könnte so aussehen: | |||
<source lang="bash" enclose="div"> | |||
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE | |||
sameersbn/gitlab latest 5e06a7e49560 34 hours ago 631.6 MB | |||
sameersbn/gitlab 7.11.4-1 e07ed8d5eff4 3 months ago 617 MB | |||
sameersbn/redis latest 44943bcb43f1 3 months ago 199.2 MB | |||
sameersbn/mysql latest d9d83f2d5b98 3 months ago 325.9 MB | |||
hello-world latest 91c95931e552 5 months ago 910 B | |||
sameersbn/postgresql 9.4 271ad7e099d3 7 months ago 228.2 MB | |||
nginx latest 61e8f94e1d65 14 months ago 499.1 MB | |||
</source> | |||
= | === Anzeige der verfügbaren Container === | ||
Die zur Verfügung stehenden Container kann man mit folgendem Befehl anzeigen lassen: | |||
<source lang="bash" enclose="div"> | |||
docker.io ps -a | |||
</source> | |||
Die Liste sieht dann wie folgt aus. | |||
<source lang="bash" enclose="div"> | |||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES | |||
cc65f386f2d5 nginx:1 nginx 9 months ago Exited (1) 8 months ago 0.0.0.0:7890->80/tcp dc-nginx | |||
</source> | |||
== | === Löschen von Images und Containern === | ||
Die Images, die bei Nichtbenutzung nur viel Speicherplatz belegen, lassen sich mit dem Befehl | |||
<source lang="bash" enclose="div"> | <source lang="bash" enclose="div"> | ||
docker rmi <image> | |||
</source> | |||
löschen. Analog gilt für das Entfernen von Containern: | |||
<source lang="bash" enclose="div"> | |||
docker rm <container> | |||
</source> | </source> | ||
=== Organisation === | |||
The contents of the /var/lib/docker directory vary depending on the driver Docker is using for storage. | |||
By default this will be aufs but can fall back to overlay, overlay2, btrfs, devicemapper or zfs depending on your kernel support. In most places this will be aufs but the RedHats went with devicemapper. | |||
= | You can manually set the storage driver with the -s or --storage-driver= option to the Docker daemon. | ||
* /var/lib/docker/{driver-name} will contain the driver specific storage for contents of the images. | |||
* /var/lib/docker/graph/<id> now only contains metadata about the image, in the json and layersize files. | |||
< | In the case of aufs: | ||
* /var/lib/docker/aufs/diff/<id> has the file contents of the images. | |||
< | * /var/lib/docker/repositories-aufs is a JSON file containing local image information. This can be viewed with the command docker images. | ||
In the case of devicemapper: | |||
* /var/lib/docker/devicemapper/devicemapper/data stores the images | |||
* /var/lib/docker/devicemapper/devicemapper/metadata the metadata | |||
* Note these files are thin provisioned "sparse" files so aren't as big as they seem. | |||
=== Backup === | |||
Es müssen die Beiden Verzeichnisse: | |||
* /var/lib/docker | |||
* /srv/docker | |||
mit den Unterordnern besichert werden. | |||
= Eigene Installationen = | |||
== Gitlab == | |||
=== x86 === | |||
[[Docker:Gitlab|Gitlab]] | |||
=== arm === | |||
<source lang=bash encl=div> | |||
# https://hub.docker.com/r/zsoltm/gitlab-armhf/ | |||
export GITLAB_ROOT_PASSWORD=xxxxx | |||
# eigentlich | |||
docker run -d --name gitlab-postgres -e POSTGRES_USER=git -e POSTGRES_PASSWORD=somepass zsoltm/postgresql-armhf | |||
# das geht auch nicht | |||
docker run -it -d --name gitlab-postgres2 -e POSTGRES_USER=git -e POSTGRES_PASSWORD=somepass zsoltm/postgresql-armhf --rm postgres sh -c 'exec psql -h 127.0.0.1 -p 5432 -U git' | |||
docker run -it -d --name gitlab-postgres --entrypoint /bin/bash -e POSTGRES_USER=git -e POSTGRES_PASSWORD=somepass zsoltm/postgresql-armhf | |||
docker run -d --name gitlab-redis -v `pwd`:/data zsoltm/redis-armhf | |||
docker run -it -p 80:80 -p 23:22 --link=gitlab-redis:redis --link=gitlab-postgres:postgres\ | |||
-v /home/docker/git-data:/home/git/data -e GITLAB_HOST=gitlab.kluge-pferde.de -e GITLAB_EMAIL_FROM=gitlab@kluge-pferde.de\ | |||
-e SMTP_HOST=smtp.gmail.com -e SMTP_PASSWORD=somepassword zsoltm/gitlab-armhf | |||
</source> | </source> | ||
== Traefik on ARM == | |||
<!-- git clone https://github.com/armswarm/traefik.git --> | |||
<source lang="bash" enclose="div"> | <source lang="bash" enclose="div"> | ||
docker pull nsteinmetz/traefik-arm | |||
docker run -d -p 8080:8080 -p 80:80 -v $PWD/traefik.toml:/etc/traefik/traefik.toml nsteinmetz/traefik-arm | |||
</source> | </source> | ||
== On Hold == | |||
* [https://registry.hub.docker.com/_/owncloud/ Owncloud] | |||
* [https://registry.hub.docker.com/_/sonarqube/ SonarQube] | |||
* Hudson oder [https://registry.hub.docker.com/_/jenkins/ Jenkins] | |||
* [https://hub.docker.com/r/turnkeylinux/mantis-14.0/ Mantis] |
Aktuelle Version vom 26. März 2017, 14:00 Uhr
Installation
Ubuntu (x86)
apt-get update
apt-get install apt-transport-https ca-certificates
apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" > /etc/apt/sources.list.d/docker.list
apt-get update
apt-get purge lxc-docker
apt-cache policy docker-engine
apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
apt-get install docker-engine
service docker start
docker run hello-world # Test
Raspbian (arm)
curl -sSL https://get.docker.com | sh
Docker Registry
ToDo
Arbeiten mit Docker
Eingerichtete Images auflisten
> docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cc65f386f2d5 nginx:1 nginx 9 months ago Up 3 seconds 0.0.0.0:7890->80/tcp dc-nginx
Container starten
Wenn der Container schon konfiguriert ist:
> docker start cc65f386f2d5
Sonst muss man die ganzen Paramter mitgeben:
docker run --name=myContainer -i -t -d -p 80:80/tcp -p 443:443/tcp -v /conf.d:/conf.d forumi0721alpinearmhf/alpine-armhf-nginx:latest /bin/ash
Ein paar bedeuten:
-d, --detach=true|false -i, --interactive=true|false --name=myContainer -t, --tty=true|false -v|--volume[=[[HOST-DIR:]CONTAINER-DIR[:OPTIONS]]]
Container stoppen
docker stop cc65f386f2d5
Interaktive Shell in laufenden Container
docker exec -it 96d65e7eff87 ash
Container löschen
Image eines Containers löschen
Hilfen
docker-compose
docker-compose macht das Leben ein wenig einfacher.
curl -L https://github.com/docker/compose/releases/download/1.8.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
Dockerimage Architektur
docker inspect 882059b7ca70 | jq '.[] | .Architecture'
docker search armhf-
Finden von fertigen Images
Images lassen sich sowohl mit dem Befehl
docker search gitlab
suchen. Eine Übersicht ist auch dem Docker-Webseite zu sehen.
Inspizieren von Images
docker inspect dcac31412f51
Verwaltung
Mit dem Befehl
docker pull sameersbn/gitlab
lassen sich dann die Iamges herunterladen. Dabei steht der Teil vor dem / für den Nutzer, das das Image erzeugt hat und der Teil nach dem Schrägstrich für das Programm, welches durch das Image bereitgestellt wird.
Liste aller lokal vorliegenden Images
Die Liste der lokal vorliegenden Images lass sich mit dem Befehl
docker images
anzeigen. Ein mögliches Ergebnis könnte so aussehen:
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
sameersbn/gitlab latest 5e06a7e49560 34 hours ago 631.6 MB
sameersbn/gitlab 7.11.4-1 e07ed8d5eff4 3 months ago 617 MB
sameersbn/redis latest 44943bcb43f1 3 months ago 199.2 MB
sameersbn/mysql latest d9d83f2d5b98 3 months ago 325.9 MB
hello-world latest 91c95931e552 5 months ago 910 B
sameersbn/postgresql 9.4 271ad7e099d3 7 months ago 228.2 MB
nginx latest 61e8f94e1d65 14 months ago 499.1 MB
Anzeige der verfügbaren Container
Die zur Verfügung stehenden Container kann man mit folgendem Befehl anzeigen lassen:
docker.io ps -a
Die Liste sieht dann wie folgt aus.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cc65f386f2d5 nginx:1 nginx 9 months ago Exited (1) 8 months ago 0.0.0.0:7890->80/tcp dc-nginx
Löschen von Images und Containern
Die Images, die bei Nichtbenutzung nur viel Speicherplatz belegen, lassen sich mit dem Befehl
docker rmi <image>
löschen. Analog gilt für das Entfernen von Containern:
docker rm <container>
Organisation
The contents of the /var/lib/docker directory vary depending on the driver Docker is using for storage.
By default this will be aufs but can fall back to overlay, overlay2, btrfs, devicemapper or zfs depending on your kernel support. In most places this will be aufs but the RedHats went with devicemapper.
You can manually set the storage driver with the -s or --storage-driver= option to the Docker daemon.
- /var/lib/docker/{driver-name} will contain the driver specific storage for contents of the images.
- /var/lib/docker/graph/<id> now only contains metadata about the image, in the json and layersize files.
In the case of aufs:
- /var/lib/docker/aufs/diff/<id> has the file contents of the images.
- /var/lib/docker/repositories-aufs is a JSON file containing local image information. This can be viewed with the command docker images.
In the case of devicemapper:
- /var/lib/docker/devicemapper/devicemapper/data stores the images
- /var/lib/docker/devicemapper/devicemapper/metadata the metadata
- Note these files are thin provisioned "sparse" files so aren't as big as they seem.
Backup
Es müssen die Beiden Verzeichnisse:
- /var/lib/docker
- /srv/docker
mit den Unterordnern besichert werden.
Eigene Installationen
Gitlab
x86
arm
# https://hub.docker.com/r/zsoltm/gitlab-armhf/
export GITLAB_ROOT_PASSWORD=xxxxx
# eigentlich
docker run -d --name gitlab-postgres -e POSTGRES_USER=git -e POSTGRES_PASSWORD=somepass zsoltm/postgresql-armhf
# das geht auch nicht
docker run -it -d --name gitlab-postgres2 -e POSTGRES_USER=git -e POSTGRES_PASSWORD=somepass zsoltm/postgresql-armhf --rm postgres sh -c 'exec psql -h 127.0.0.1 -p 5432 -U git'
docker run -it -d --name gitlab-postgres --entrypoint /bin/bash -e POSTGRES_USER=git -e POSTGRES_PASSWORD=somepass zsoltm/postgresql-armhf
docker run -d --name gitlab-redis -v `pwd`:/data zsoltm/redis-armhf
docker run -it -p 80:80 -p 23:22 --link=gitlab-redis:redis --link=gitlab-postgres:postgres\
-v /home/docker/git-data:/home/git/data -e GITLAB_HOST=gitlab.kluge-pferde.de -e GITLAB_EMAIL_FROM=gitlab@kluge-pferde.de\
-e SMTP_HOST=smtp.gmail.com -e SMTP_PASSWORD=somepassword zsoltm/gitlab-armhf
Traefik on ARM
docker pull nsteinmetz/traefik-arm
docker run -d -p 8080:8080 -p 80:80 -v $PWD/traefik.toml:/etc/traefik/traefik.toml nsteinmetz/traefik-arm