Basis van cloud en containers

FROM python:slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]

Welke combinatie van de opdracht die bij het bouwen van het image met docker build wordt uitgevoerd en de opdracht die bij het starten van een container met docker run wordt uitgevoerd, is voor het bovenstaande Dockerfile juist?

  1. ABij de build: pip install; bij het starten: python app.py
  2. BBij de build: pip install en python app.py; bij het starten: python app.py
  3. CBij de build: niets; bij het starten: pip install en python app.py
Antwoord en toelichting tonen

Antwoord: A. Bij de build: pip install; bij het starten: python app.py

RUN voert een opdracht uit terwijl het image wordt gebouwd en slaat het resultaat (hier de geïnstalleerde bibliotheken) als een nieuwe laag in het image op. CMD legt alleen als deel van de configuratie van het image de standaardopdracht vast die bij het starten van een container wordt uitgevoerd; tijdens de build wordt ze niet uitgevoerd. De bibliotheken worden dus één keer, bij de build, geïnstalleerd, en python app.py draait telkens wanneer een container start. Staat er in docker run een opdracht na de naam van het image, dan vervangt die de inhoud van CMD.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Basis van cloud en containers

  1. Een image met de naam pinger, gebouwd uit het bovenstaande Dockerfile, wordt gestart met docker run pinger example.com. Welke opdracht wordt in de container uitgevoerd?
  2. Met de bovenstaande opdracht wordt een container gestart uit het image nginx, een webserver die op poort 80 luistert. Het IP-adres van de host is 192.0.2.10, en er zijn geen beperkingen zoals een firewall. Welke URL is juist om deze webserver te bereiken vanuit een browser op een andere pc in hetzelfde netwerk?
  3. Het bovenstaande Dockerfile (B) is gemaakt uit Dockerfile (A), waarin RUN npm ci na COPY . . stond, door de volgorde zo te veranderen dat eerst alleen de bestanden met de afhankelijkheden worden gekopieerd. npm ci duurt 120 seconden, npm run build 30 seconden en COPY . . 2 seconden; de tijd van de andere instructies is verwaarloosbaar. Het image wordt 20 keer per dag opnieuw gebouwd nadat alleen de broncode onder src is gewijzigd (package.json en package-lock.json blijven ongewijzigd). Hoeveel korter is de totale buildtijd per dag met B dan met A, als de cache van de vorige build kan worden gebruikt?
  4. Welke beschrijving van benoemde volumes en bind mounts in Docker, die worden gebruikt om gegevens te bewaren die een container schrijft, is juist?
  5. Een image wordt gehaald (pull) door registry.example.com/team/web:1.4 op te geven. Welke combinatie geeft de betekenis van elk deel van deze verwijzing juist weer?