Grundlagen der Containerisierung via Docker
node:11-alpine
)docker run -it --rm ubuntu /bin/bash
docker
- CLIrun
- Befehl-it --rm
- Optionenubuntu /bin/bash
- Argumentedocker pull <image-name>
docker run -it ubuntu /bin/bash --name ubuntu
docker start <container-name>
docker start <container-name>
docker ps
docker attach <container-name>
docker rm <container-name>
Die erste Aufgabe ist das eben gesehene Erstellen eines ubuntu
Containers, diesen nach Beenden erneut zu starten und sich mit diesem zu verbinden.
Als weitere kleine Aufgabe kann nun ein node
Container interaktiv gestartet werden, die Node-Shell geöffnet und damit zwei Zahlen in Variablen addiert werden (oder beliebige andere Node/JavaScript Befehle ausgeführt werden).
Option für Docker CLI:
-v <lokales Verzeichnis>:/<Verzeichnis im Container>
Nun soll eine app.js
-Datei in einen Node Container eingefügt werden und der darin enthaltene Server gestartet werden.
-p <Host-Port>:<Container-Port>
Nun soll der Port 8081
des Containers der vorherigen Aufgabe auf einen beliebigen Port des Hosts (Bsp: Port 1234
) freigegeben werden. Zur Überprüfung soll http://localhost:<Host-Port>
per curl
abgefragt werden.
FROM <Image Name>
EXPOSE <Portnummer>
RUN <Auszuführende Befehle, bspw. mkdir>
COPY <Quelldatei> <Zielpfad>
WORKDIR <Arbeitsverzeichnis>
CMD <Startbefehl>
Nun soll der Containers der vorherigen Aufgaben mit einer Dockerfile als eigenes Image erstellt werden.
Aus Dockerfiles wird mit dem folgenden Befehl ein Image erstellt.
docker build -t <Image Name> .
docker network create <Netzwerk Name>
docker run --rm -d --network <Netzwerk Name> --name <Container Name> <Image>
Du sollst nun einen Container erstellen und diesen mit einer Datenbank verbinden. Du kannst hierfür auch gerne ein eigenes, bestehendes Projekt nutzen und dieses in Docker ausführen.
Wenn du bereits eine Datenbank wie MongoDB für Entwicklung auf deinem Gerät installiert hast, kannst du auch diese verwenden und muss keinen eigenen Container für die Datenbank starten. Hierzu setzt du das Network auf host
, sodass der Container im Netzwerk deines Hosts ist.
version: "3.3"
services:
db:
image: <image-name>
volumes:
- <xyz>:</abc>
restart: always
server:
depends_on:
- db
ports:
-"<local>:<container>"
networks:
- web
build:
context: ./
dockerfile: Dockerfile
networks:
web:
docker-compose up
docker-compose down
docker-compose up server
Schreibe eine docker-compose.yml
-Datei und starte die Dockerfile aus der vorherigen Aufgabe mit docker-compose up
.
-e NAME=wert
docker run -it -e NAME=wert ubuntu /bin/bash
docker-compose.yml
:db:
image: <image-name>
volumes:
- <xyz>:</abc>
restart: always
environment:
PASSWORD: <sicheres-passwort>
docker-compose.yml
-Datei für eine WordPress-Installation und starte diese.mysql:5.7
und wordpress
.und noch viel Spaß mit Docker