Docker - LucasReynaert/It-Landscape GitHub Wiki

1 Inleiding Docker-Emblem-2824623119

Docker is een open-source containerization platform waarin je je applicatie en dependencies in één pakketje stopt en dat noem je een container. Dit wordt gebruikt om het eeuwenoude probleem op te lossen waarin de applicatie werkt op de developers computer maar niet op de server. Containers zijn licht en kunnen makkelijk verplaatst worden waardoor je Docker image (blauwdruk van je Docker container) op elke computer kan runnen als een Docker container zonder problemen.

Docker is gemaakt in 2013 om deels VM's te vervangen door lichtere en snellere containers. Dit wordt gebruikt door AWS, Azure Cloud en nog veel andere grote en kleine bedrijven voor de portabiliteit van de applicatie en het makkelijke schaalbare aspect.

2 Installatie

Stap 1. Navigeer naar de https://www.docker.com/ website

image

Stap 2. Druk op download docker desktop knop en selecteer u OS en open de gedownloade installer

image

Stap 3. Run door de installer

image

Nu hebt u Docker geïnstalleerd en bent u klaar om het te gebruiken. U kan eventueel door de tutorial gaan om Docker gewoon te worden : https://www.docker.com/101-tutorial/.

image

3 Basiscommando’s

3.1 docker run : Dit is een commando dat word gebruikt om een nieuwe container te starten gebaseerd op een specifieke image bv. docker run hello-world

image

3.2 docker build : Dit commando maakt een nieuwe Docker image gebaseerd op de Dockerfile in u directory

bv. docker build -t test

image

Je hebt voor dit commando ook meerdere opties:

  • -t of --tag : geeft een tag aan de image
  • -f of --file : specificeert een atlernatieve Dockerfile
  • --build-arg : geeft een argument door aan de Dockerfile
  • --no-cache : Voorkomt cashing waardoor er altijd iets nieuws gebouwd word
  • --pull : Forceer het pullen van de nieuwste versie van de image
  • -q of --quiet: Minimaliseert de output

3.3 docker images : Dit commando lijst al de Docker images op u pc image

3.4 docker ps : Dit commando lijst al de actieve containers image

3.5 docker stop : Stopt de aangegeven container bv. docker stop getting-started-todo-app image

3.6 docker rm : Verwijderd de aangeveven container bv. docker rm angry_carson image

3.7 docker pull : Dit commando pulled de laatste docker image van een docker register bv. docker pull ubuntu image Je hebt voor dit commando meerdere opties:

  • :latest : pulled de laatste versie van de gevraagde image(default tag)
  • :1.2 : pulled de image met gegeven versie

3.8 docker push : Dit commando push een gegeven dokcer image naar een dokcer register bv. dock push test

3.9 docker exec : Dit commando opent eem command prompt om de gegeven container bv. image

3.10 docker-compose : Dit commando is een tool voor het definiëren en het runnen van meerdere containers gebruikt makende van een YAML file image

4 DockerFile

Een Dockerfile is een blauwdruk van een Docker container. Hierin word stap voor stap beschreven hoe u docker container moet opgemaakt worden. Hier is een voorbeeld van een DockerFile.

FROM python:3.12 //gebruik python 3.12 WORKDIR /usr/local/app //zet het pad naar /usr/local/app

COPY requirements.txt ./ //kopieer requirements.txt naar werk directory RUN pip install --no-cache-dir -r requirements.txt //installeer python dependencies

COPY src ./src //kopieer de source naar de container map EXPOSE 5000 //de container luistert naar poort 5000

RUN useradd app //maak een gebruiker app aan USER app //zet gebruiker naar app zodat je in cmd niet de root bent(dit is veiliger)

CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8080"] //de instructie om de container te starten

5 Docker Compose

Docker Compose is een tool waarmee je meerdere containers kunt runnen en beheren met één configuratiebestand (docker-compose.yml). Compose maakt het makkelijk om je services, volumes en netwerken te beheren in één YAML-bestand. Deze tool is ideaal voor developers die meerdere dingen tegelijk willen draaien, zoals een backend, database en frontend. Je werkt zo volledig in isolatie, waardoor je geen compatibiliteitsproblemen hebt met verschillende versies. Hiermee kun je ook makkelijk productiesystemen simuleren. Je gebruikt deze tool met het commando: docker compose up, en sluit het af met: docker compose down.

Hier zijn nog een paar commando's:

  • docker compose logs : Dit commando laat je alle logs bekijken
  • docker compose logs -f : Dit commando laat je live logs volgen
  • docker compose exec web bash : Dit commando opent een shell in een container
  • docker compose up db : Dit commando start slechts één container
  • docker compose up -d : Dit commando laat alles op de achtergrond draaien

Hieronder is een voorbeeld van een docker-compose.yml-bestand: services: app: image: node:18-alpine # Gebruikt Node.js versie 18 met Linux (Alpine) command: sh -c "yarn install && yarn run dev" # Installeert dependencies en start de applicatie in dev-mode ports: - 127.0.0.1:3000:3000 # Verbindt poort 3000 van de container met poort 3000 op de host working_dir: /app # Zet de werkmap in de container op /app volumes: - ./:/app # Mount de huidige map naar de /app map in de container environment: MYSQL_HOST: mysql # Verwijst naar de mysql-container MYSQL_USER: root # Gebruikt de rootgebruiker MYSQL_PASSWORD: secret # Stelt het wachtwoord in op 'secret' MYSQL_DB: todos # De naam van de database die gebruikt wordt mysql: image: mysql:8.0 # Gebruikt MySQL versie 8.0 volumes: - todo-mysql-data:/var/lib/mysql # Slaat de databasegegevens op in het genoemde volume environment: MYSQL_ROOT_PASSWORD: secret # Stelt het wachtwoord in op 'secret' MYSQL_DATABASE: todos # Maakt automatisch een database aan met de naam 'todos' volumes: todo-mysql-data: # Definieert een volume voor permanente opslag van de MySQL-gegevens

⚠️ **GitHub.com Fallback** ⚠️