Docker

Aus Alexander's Wiki

Installation

Paket für Ubuntu

  apt-get install docker lxc

  wget -qO- https://get.docker.com/ | sh
  docker run hello-world

docker-compose

docker-compose macht das Leben ein wenig einfacher.

 curl -L https://github.com/docker/compose/releases/download/1.3.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
 chmod +x /usr/local/bin/docker-compose

Docker Image

 docker run -p 666:80 -i -t ubuntu:12.04 /bin/bash

Der lokale Port 666 zeigt auf den Port 80 im Docker-Image.

Verwaltung

Finden und Herunterladen von Images

Images lassen sich sowohl mit dem Befehl

 docker search gitlab

suchen. Eine Übersicht ist auch dem Docker-Webseite zu sehen. Mit dem Befehl

docker pull 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>


Betrieb

Beispiel

Container interaktive starten

docker run -p 666:80 -i -t ubuntu:latest /bin/bash

Es existiert nun eine Portweiterelitung vom lokalen Port 666 auf den Port 80 im Docker-Image. Außerdem befinde ich mich jetzt im Image. Als erstes wir git installiert:

apt-get install git

Container starten

 docker.io start cc65f386f2d5

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 stoppen

 docker.io stop cc65f386f2d5

Benutzung

 docker.io attach cc65f386f2d5

Liebling Docker Images

Special Gitlab

Gitlab arbeitet mit den Datenbanken:

  • postgress
  • mysql
  • Redis

Einfachste Weg

 wget https://raw.githubusercontent.com/sameersbn/docker-gitlab/master/docker-compose.yml
 docker-compose up

Im Browser http://localhost:10080 aufrufen und mit den folgenden Zugangsdaten einloggen:

  • username: root
  • password: 5iveL!fe

Der manuelle Weg

Ist hier nicht vollständig beschrieben: siehe hier

 docker pull sameersbn/gitlab:latest
 docker pull sameersbn/mysql:latest
 docker run --name=mysql-gitlab -d \
  --env='DB_NAME=gitlabhq_production' \
  --env='DB_USER=gitlab' --env='DB_PASS=password' \
    --volume=/srv/docker/gitlab/mysql:/var/lib/mysql \
    sameersbn/mysql:latest

The above command will create a database named gitlabhq_production and also create a user named gitlab with the password password with full/remote access to the gitlabhq_production database.

 docker run --name=redis-gitlab -d \
  --volume=/srv/docker/gitlab/redis:/var/lib/redis \
  sameersbn/redis:latest
 docker run --name=gitlab -d --link=mysql-gitlab:mysql --link=redis-gitlab:redisio \
  --publish=10022:22 --publish=10080:80 \
  --env='GITLAB_PORT=10080' --env='GITLAB_SSH_PORT=10022' \
  --volume=/srv/docker/gitlab/gitlab:/home/git/data \
  sameersbn/gitlab:latest

Here the image will also automatically fetch the DB_NAME, DB_USER and DB_PASS variables from the mysql container as they are specified in the docker run command for the mysql container. This is made possible using the magic of docker links.