Konteneryzacja

Obrazy kontenerów

Rodzaje kontenerów

Tworzenie obrazów kontenerów

Przykład: Dockerfile

<!-- index.html -->
<h1>Hello World from Docker!</h1>
FROM ubuntu
ENV DEBIAN_FRONTEND=noninteractive
COPY index.html /var/www/html/index.html
RUN apt-get update -y
RUN apt-get install -y apache2
EXPOSE 80
CMD ["/usr/sbin/apachectl", "-DFOREGROUND"]

Optymalizacja obrazów

Przykład: Dockerfile po optymalizacji

FROM ubuntu
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update -y \
 && apt-get install -y \
        apache2 \
 && rm -rf /var/lib/apt/lists/*
EXPOSE 80
CMD ["/usr/sbin/apachectl", "-DFOREGROUND"]
COPY index.html /var/www/html/index.html

Wieloetapowe budowanie obrazów

Przykład: wieloetapowe budowanie obrazu

// hello.go
package main
import "fmt"
func main() {
    fmt.Println("hello world")
}
FROM golang AS builder
COPY hello.go hello.go
RUN go build hello.go

FROM ubuntu
COPY --from=builder /go/hello /usr/bin/hello
CMD /usr/bin/hello

Przechowywanie obrazów w rejestrze

Uruchamianie kontenerów

Aplikacje wielokontenerowe

Przykład: docker-compose.yml

version: 3.9
services:
  container1:
    image: ubuntu
    command: sleep infinity
  container2:
    image: ubuntu
    command: sleep infinity

Zadanie