De Complete Gids voor het Maken en Beheren van Docker‑images op Ubuntu | Installatie, Optimalisatie en Probleemoplossing

目次

1. Inleiding

Wat is Docker?

Docker is een platform dat containergebaseerde virtualisatietechnologie gebruikt om applicaties efficiënt te ontwikkelen, te distribueren en uit te voeren. In tegenstelling tot traditionele virtuele machines (VM’s) delen containers de kernel van het host-besturingssysteem, wat leidt tot snellere opstarttijden en lager resourceverbruik.

Voordelen van het Gebruik van Docker op Ubuntu

Ubuntu is een van de Linux-distributies die zeer compatibel is met Docker. De belangrijkste voordelen zijn:

  • Officiële Ondersteuning : Docker ondersteunt Ubuntu officieel, en de installatie is eenvoudig via de officiële repository.
  • Stabiel Pakketbeheer : De APT-pakketbeheerder van Ubuntu maakt het eenvoudig om Docker-versies te beheren.
  • Uitgebreide Community-ondersteuning : Ubuntu heeft een grote wereldwijde gebruikersbasis, wat het eenvoudiger maakt om oplossingen te vinden bij het oplossen van problemen.

Wat Je in Dit Artikel Zal Leren

Dit artikel leidt je stap voor stap door de volgende onderwerpen:

  1. Hoe Docker op Ubuntu te installeren
  2. Basis Docker-image-operaties
  3. Aangepaste images maken met Dockerfile
  4. De Japanse taalomgeving configureren in een Ubuntu-container
  5. Docker-images optimaliseren en de grootte verkleinen
  6. Applicaties ontwikkelen in een Ubuntu-container
  7. Veelvoorkomende fouten en oplossingen voor probleemoplossing

Deze handleiding is nuttig voor zowel beginners als gevorderde gebruikers, dus voel je vrij om het als referentie te gebruiken.

2. Docker Installeren op Ubuntu

Docker Installeren met de Officiële Repository

Op Ubuntu kun je Docker eenvoudig installeren met de officiële repository. Volg de onderstaande stappen om het in te stellen.

1. Bestaande Docker-pakketten Verwijderen

Ubuntu biedt standaard een pakket genaamd docker.io, maar dit kan een verouderde versie zijn. Het wordt aanbevolen om het eerst te verwijderen.

sudo apt remove docker docker-engine docker.io containerd runc

2. Vereiste Pakketten Installeren

Voordat je Docker installeert, installeer je de benodigde afhankelijkheidspakketten.

sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

3. De Officiële Docker-repository Toevoegen

Voeg de officiële GPG-sleutel van Docker toe en stel de repository in.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

4. Docker Installeren

Zodra de repository is toegevoegd, installeer je Docker.

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

5. De Installatie Verifiëren

Om te controleren of Docker correct is geïnstalleerd, toon je de versie-informatie.

docker --version

Initiële Instelling Na Installatie

1. De Docker-service Starten en Inschakelen

Start de Docker-service en configureer deze om automatisch te starten bij het opstarten van het systeem.

sudo systemctl start docker
sudo systemctl enable docker

2. Niet-root-gebruikers Toestaan Docker te Gebruiken

Standaard kan alleen de root-gebruiker Docker uitvoeren. Om een gewone gebruiker toe te staan Docker-opdrachten uit te voeren, voeg je de gebruiker toe aan de docker-groep.

sudo usermod -aG docker $USER

Om de wijzigingen toe te passen, log je uit en log je weer in.

3. Docker Testen

Voer de hello-world-container uit om te controleren of Docker correct werkt.

docker run hello-world

Als je de boodschap “Hello from Docker!” ziet, was de installatie succesvol.

3. Basisoperaties met Docker-images

Wat is een Docker-image?

Een Docker-image dient als sjabloon voor het maken van containers. Door een op Ubuntu-gebaseerde Docker-image te gebruiken, kun je snel een Ubuntu-omgeving in een container inrichten.

Ubuntu-images Downloaden van Docker Hub

Docker Hub bevat een enorme collectie officiële Docker-images. Om een Ubuntu-image te downloaden, gebruik je de volgende opdracht:

docker pull ubuntu

Containers Starten en Stoppen

U kunt een container starten met behulp van het gedownloade Ubuntu-beeld met het volgende commando:

docker run -it ubuntu bash

Dit commando opent een shell binnen de Ubuntu-container, waardoor u direct met de container kunt communiceren.

Containers die draaien weergeven

Om te controleren welke containers momenteel draaien, gebruikt u dit commando:

docker ps

Om alle containers weer te geven, inclusief gestopte, voegt u de optie -a toe:

docker ps -a

Containers stoppen en verwijderen

Om een draaiende container te stoppen, gebruikt u het volgende commando:

docker stop [container ID or name]

Om een onnodige container te verwijderen, gebruikt u dit commando:

docker rm [container ID or name]

Docker-beelden beheren

Om alle gedownloade Docker-beelden te tonen, gebruikt u het volgende commando:

docker images

Om een ongebruikt beeld te verwijderen, gebruikt u dit commando:

docker rmi [image ID]

4. Aangepaste Docker-beelden maken met Dockerfile

Wat is een Dockerfile?

Een Dockerfile is een configuratiebestand dat wordt gebruikt om Docker-beelden te maken. Door specifieke instructies in een Dockerfile te definiëren, kunt u aangepaste Docker-beelden bouwen die zijn afgestemd op uw behoeften. Dit helpt bij het standaardiseren van ontwikkelomgevingen en het opnemen van noodzakelijke pakketten in het beeld.

Basis syntax van een Dockerfile

Een Dockerfile bevat typisch de volgende belangrijke commando’s:

CommandDescription
FROMSpecifies the base image
RUNExecutes commands to build the image
COPYCopies files into the container
WORKDIRSets the working directory
CMDDefines the default command to run when the container starts
ENTRYPOINTSpecifies the main command executed when the container runs

Een aangepast Docker-beeld op basis van Ubuntu maken

Volg deze stappen om een aangepast Docker-beeld op basis van Ubuntu te maken.

1. Een werkmap aanmaken

Maak eerst een nieuwe projectmap aan en navigeer ernaartoe.

mkdir my-ubuntu-image
cd my-ubuntu-image

2. Een Dockerfile aanmaken

Maak binnen de map een Dockerfile aan en voeg de volgende inhoud toe:

# Use the official Ubuntu base image
FROM ubuntu:latest

# Maintainer information (optional)
LABEL maintainer="your-email@example.com"

# Update package lists and install basic tools
RUN apt update && apt install -y curl vim git

# Set the working directory
WORKDIR /workspace

# Default command executed when the container starts
CMD ["bash"]

3. Het Docker-beeld bouwen

Gebruik het volgende commando om het aangepaste beeld vanuit de Dockerfile te bouwen.

docker build -t my-ubuntu-image .

De optie -t wijst een naam toe aan het beeld.

4. Het gebouwde beeld verifiëren

Controleer de lijst van beschikbare beelden om te zorgen dat het nieuwe beeld succesvol is aangemaakt.

docker images

5. Een container starten vanuit het aangepaste beeld

Start een container met behulp van het nieuw aangemaakte aangepaste beeld.

docker run -it my-ubuntu-image

Deze container zou tools zoals curl en vim moeten bevatten zoals gespecificeerd in de Dockerfile.

5. De Japanse taalomgeving configureren in een Ubuntu-container

Standaard is het Ubuntu Docker-beeld ingesteld op Engels. Als u Japans wilt gebruiken, zijn aanvullende configuraties vereist.

Japanse locale instellen

Om Japanse weergave en invoer in een Ubuntu-container mogelijk te maken, installeert u de noodzakelijke taalpakketten.

1. Vereiste pakketten installeren

apt update
apt install -y language-pack-ja locales

2. De locale configureren

Stel de locale in en pas de instellingen toe.

locale-gen ja_JP.UTF-8
update-locale LANG=ja_JP.UTF-8

3. De instellingen toepassen

export LANG=ja_JP.UTF-8

Japanse invoer instellen

Om Japanse tekstinvoer in de terminal mogelijk te maken, installeert u ibus-mozc.

apt install -y ibus-mozc

Als u een GUI-omgeving gebruikt, voegt u de volgende omgevingsvariabelen toe:

export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus

GUI-toepassingen gebruiken

Om GUI-toepassingen binnen een Docker-container uit te voeren, kunt u een X-server gebruiken.

Installeer een X-server op de hostmachine en voer de container uit met X11 ingeschakeld.

docker run -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix my-ubuntu-image

6. Docker-beelden optimaliseren en de grootte verkleinen

Het optimaliseren van Docker-images verbetert de opstarttijd van containers en vermindert het opslaggebruik. Dit gedeelte introduceert methoden voor het maken van lichte images.

Een lichte Ubuntu-gebaseerde image maken

De standaard ubuntu:latest-image is relatief groot. Om de containergrootte te verminderen, overweeg dan een kleiner alternatief zoals ubuntu:minimal te gebruiken.

FROM ubuntu:minimal

Als alternatief kun je Alpine Linux gebruiken, dat aanzienlijk kleiner is dan Ubuntu.

FROM alpine:latest
RUN apk add --no-cache bash curl

Deze methode kan de image-grootte met enkele honderden megabytes verminderen.

Onnodige bestanden verwijderen om de image-grootte te verminderen

Na het installeren van pakketten met apt-get kun je onnodige cache-bestanden verwijderen om de image-grootte te minimaliseren.

RUN apt update && apt install -y curl vim 
    && apt clean 
    && rm -rf /var/lib/apt/lists/*

Het commando rm -rf /var/lib/apt/lists/* verwijdert de pakketlijst, waardoor onnodige gegevens worden verminderd.

Multi-stage builds gebruiken

Met multi-stage builds kun je een tijdelijke container gebruiken voor het bouwen van afhankelijkheden terwijl de uiteindelijke image licht blijft.

FROM ubuntu as builder
RUN apt update && apt install -y gcc

FROM ubuntu:minimal
COPY --from=builder /usr/bin/gcc /usr/bin/gcc

Deze techniek stelt je in staat om onnodige ontwikkeltools uit de uiteindelijke image uit te sluiten, waardoor deze aanzienlijk kleiner wordt.

7. Praktische gids: Toepassingen ontwikkelen in een Ubuntu-container

In dit gedeelte richten we een ontwikkelomgeving in binnen een Ubuntu-container en demonstreren we hoe je toepassingen ontwikkelt met Docker.

Een Python-ontwikkelomgeving inrichten

Om een Python-ontwikkelomgeving in een Docker-container te maken, gebruik je de volgende Dockerfile.

FROM ubuntu:latest
RUN apt update && apt install -y python3 python3-pip
CMD ["python3"]

Bouw de image en start de container.

docker build -t python-dev .
docker run -it python-dev

Binnen de container kun je het python3-commando uitvoeren om Python-scripts uit te voeren en toepassingen te ontwikkelen.

Een Node.js-ontwikkelomgeving inrichten

Voor Node.js-ontwikkeling gebruik je de volgende Dockerfile.

FROM ubuntu:latest
RUN apt update && apt install -y nodejs npm
CMD ["node"]

Bouw en start de container.

docker build -t node-dev .
docker run -it node-dev

Met deze setup kun je het node-commando gebruiken om JavaScript-code uit te voeren en toepassingen te ontwikkelen in een gecontroleerde omgeving.

8. FAQ & Probleemoplossing

Tijdens het gebruik van Docker kun je verschillende problemen tegenkomen. Dit gedeelte biedt oplossingen voor veelvoorkomende problemen en veelgestelde vragen.

Verschil tussen Docker en virtuele machines

  • Docker: Deelt de kernel van de host-OS, waardoor het lichtgewicht is en snelle containeropstart mogelijk maakt.
  • Virtuele machines (VM’s): Elke VM heeft zijn eigen OS, wat meer resources verbruikt en langer duurt om te starten.

Docker is efficiënter in het gebruik van resources, waardoor het ideaal is voor ontwikkelomgevingen en geautomatiseerde deployments.

Gegevens behouden in een Ubuntu-container

Om gegevens te behouden zelfs nadat een container is gestopt, gebruik je volume mounting.

docker run -v my_data:/data ubuntu

Het my_data-volume slaat gegevens persistent op, waardoor het toegankelijk blijft zelfs nadat de container is verwijderd.

Veelvoorkomende fouten en oplossingen

1. permission denied-fout

Als je een permission denied-fout ziet bij het uitvoeren van Docker-commando’s, bevindt je gebruiker zich mogelijk niet in de docker-groep.

Voeg je gebruiker toe aan de docker-groep met het volgende commando:

sudo usermod -aG docker $USER

Na het uitvoeren van dit commando, log uit en log weer in om de wijzigingen toe te passen.

2. image not found-fout

Als een image is verwijderd van Docker Hub, specificeer dan een andere tag om een geldige versie te pullen.

docker pull ubuntu:22.04

Door een versie te specificeren, kun je ervoor zorgen dat je een werkende image downloadt.