Slides voor Docker workshop van het IT-lab
https://hogent-it-lab.github.io/docker-workshop/slides
Wat is nu eigenlijk het verschil met een virtuele machine (VM)?
Virtuele machine: emuleert volledige computer (virtuele hardware!)
(Docker) container: emuleert op applicatie-niveau
Docker Image -> blauwdruk voor een container
Docker Container -> instantie van een image
FROM node:20-alpine # Kies jouw base image -kan verschillen per versie! WORKDIR /app COPY . . # Kopieer de broncode # Installeer de dependencies en run de software RUN yarn install --production CMD ["node", "./src/index.js"]
docker build
docker build -t my-image-name:latest .
docker run
# Add Docker's official GPG key: sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc # Add the repository to Apt sources: echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
docker
sudo usermod -aG docker <jouwUserHere>
docker ps
docker run <image> <parameters>
Start jouw eerste testcontainer:
docker run hello-world
docker image list
docker rmi <image>
docker ps -a
docker stop <container>
docker rm <container>
docker run -p 8089:80 --name webserver nginx
OF
docker run -d -p 8089:80 --name webserver nginx
Open een browser en surf naar http://localhost:8089
Je ziet nu een webserver die je zelf aan het hosten bent op jouw eigen systeem!
docker run commando's: handig maar omslachtig...
Wat met meerdere containers tegelijk opstarten?
Een oplossing: Docker compose!
Beschrijving van container(s) in yaml formaat: docker-compose.yaml
docker-compose.yaml
TIP: clone deze git repository met git clone https://github.com/HOGENT-IT-Lab/docker-workshop.git
git clone https://github.com/HOGENT-IT-Lab/docker-workshop.git
WORDT in docker-compose.yaml:
name: nginx services: nginx: ports: - 8089:80 container_name: webserver image: nginx
Containers opstarten met compose (in achtergrond) docker compose up -d
docker compose up -d
Containers stopzetten met compose docker compose down
docker compose down
Plaats de docker-compose.yaml file van nginx ergens op jouw systeem
Open de terminal in deze map en gebruik docker compose up -d om de container te starten
nginx-root
name: nginx services: nginx: ports: - 8089:80 container_name: webserver volumes: - ./nginx-root:/usr/share/nginx/html image: nginx
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Docker demo</title> </head> <body> <h1>Dit is nieuwe content!</h1> </body> </html>
alexander@docker-demo:~/Desktop/nginx-volume-bind$ tree . ├── docker-compose.yaml └── nginx-root └── index.html 2 directories, 2 files
docker exec -ti <container> <shell>
docker system prune -a
services: minecraft-server: image: itzg/minecraft-server container_name: minecraft-server environment: EULA: "true" MEMORY: 4G # recommended amount of dedotated wam is 4G # VERSION: "1.18.1" # Specify version ports: - "25565:25565" volumes: - ./server-data:/data stdin_open: true tty: true restart: unless-stopped
Docker documentatie
Docker installatie
Docker Compose documentatie
Docker Networking documentatie
Composerize - docker run commando naar docker-compose
DockerHub
Docker cheat sheet
Link naar repository:
Source: https://www.techlistic.com/2023/05/what-is-operating-system.html