Skip to content

justmvv/podman

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

21 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Intro to Podman

2 days, 8 ac.hrs, 7 as.hrs.

Знакомство

  1. Роль
  2. Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ с Linux: 0–3
  3. Π’Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ с Docker/Podman: 0–3
  4. Как ΠΏΠΎΠΉΠΌΠ΅Ρ‚Π΅, Ρ‡Ρ‚ΠΎ Ρ‚Ρ€Π΅Π½ΠΈΠ½Π³ Π΄Π°Π» Π’Π°ΠΌ Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ?

Prerequisites

  • Virtual machine for practice @ vra8: IT Academy Training Group, HDD 50Gb, OS AlmaLinux + local ssh client
  • ДоступСн git repo с Π΄Π°Π½Π½Ρ‹ΠΌ руководством {{ git-repo }} https://github.com/eugene-krivosheyev/podman
  • ДоступСн {{ registry-host }}
  • Доступ ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи {{ registry-account }} Π½Π° {{ registry-host }}
  • УстановлСн Podman ΠΈ зависимости
sudo dnf update
sudo dnf install -y podman
sudo dnf install -y slirp4netns # for rootless containers
sudo dnf install -y bash-completion
source <(podman completion bash)
sudo podman completion -f /etc/bash_completion.d/podman bash

Intro to containerization and Podman 30 ΠΌΠΈΠ½

Π—Π°Π΄Π°Ρ‡ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ

  • ΠŸΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚ΡŒ ПО: запуск Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… окруТСниях – dev, test, prod
  • исполняСмыС Ρ„Π°ΠΉΠ»Ρ‹ нашСго ПО
  • зависимости
  • конфигурация
  • Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки
  • ΠΏΠΎΡ€Ρ‚Ρ‹
  • ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Π΅ эффСкты

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡ vs виртуализация

  • мСсто Π½Π° дискС для гостСвой ОБ
  • врСмя запуска гостСвой ОБ
  • overhead ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ гостСвой ОБ

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ

puml
@startuml
node "image\nregistry" {
    database "disk\nimage" as disk_image
}

node "host" {
    rectangle "pod" {
        rectangle "infra\ncontainer"
        rectangle "container" {
            component "application"
            database "container\nlayer" as layer
        }
    }
    database "disk" {
        database "image"
        file "volume"
        folder "shared\nfolder" as folder
        disk_image - image
    }
    image --layer
    volume -# container
    folder -# container
    volume -# pod
    folder -# pod
}

pod #--# host : "port\nmapping"
container #--# host : "port\nmapping"
@enduml

Podman vs Π΄Ρ€ΡƒΠ³ΠΎΠΉ популярный ΡΡ‚ΠΈΡ€Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎΡ€ΠΎΡˆΠΎΠΊ

  • pod

  • bunch of containers

  • infra container

  • localhost

  • port mappings

  • mounts

  • daemonless

  • rootfull and rootless modes

Hands-on practice quest #00: Prerequisites sound-check and tools install 20 ΠΌΠΈΠ½ ΠΏΠ°Ρ€Π½ΠΎΠΉ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ + 10 ΠΌΠΈΠ½ Π΄Π΅Π±Ρ€ΠΈΡ„

Given

  • ΠŸΠ°Ρ€Ρ‹ участников с Ρ‡Π΅Ρ€Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ€ΠΎΠ»Π΅ΠΉ Π² ΠΏΠ°Ρ€Π΅
  • Π€ΠΎΡ€ΠΊ Π΄Π°Π½Π½ΠΎΠ³ΠΎ руководства для собствСнных ΠΏΠΎΠΌΠ΅Ρ‚ΠΎΠΊ
  • ВсС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π·Π°ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ ΠΈΠ·-ΠΏΠΎΠ΄ ΡΡƒΠΏΠ΅Ρ€ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ
sudo

ΠΈΠ»ΠΈ

su -
  • Как ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ сцСнарий использования ΠΊΠΎΠΌΠ°Π½Π΄?
- ΠΊΠ°ΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° систСмы Π² Π½ΡƒΠΆΠ½ΠΎΠ΅ состояниС
- ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ дСйствия
- ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΡΡ‚ΠΈ ΠΈ коррСктности дСйствия 
  • Hints
  • ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Tab ΠΈ ↑ для автоподстановки Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ
  • синонимы ΠΊΠΎΠΌΠ°Π½Π΄ cli
  • ... --help
  • podman cli reference

When участники ΠΈΠΌΠ΅Π½ΡƒΡŽΡ‚ сцСнарии, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ ΠΈΡ… Π²Ρ‹Π²ΠΎΠ΄ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅

  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ "Как ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΠΎΠ΄ΠΌΠ°Π½Π°/ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ хостовой ОБ/занятоС мСсто?"
podman version # TODO: собствСнныС ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΠΈ участников для Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ использования Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…
podman system info
podman system df
  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ "Как ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ?"
podman logout {{ registry-host }}
podman login {{ registry-host }}
  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ "Как Π½Π°ΠΉΡ‚ΠΈ Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· Π² registry?" Π—Π°Π»ΠΎΠ³ΠΈΠ½ΠΈΡ‚ΡŒΡΡ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ ΠΏΠΎ адрСсу {{ registry-host }}, Π² поискС Π½Π°ΠΉΡ‚ΠΈ Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· ΠΈ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΠ΅ символьноС имя (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ сСтСвой адрСс хоста).

  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ "Как ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π· ΠΈΠ· ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ рСпозитория?"

podman image pull {{ registry-host }}/{{ os-images-path }}/alpine:3.14
podman system df
  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ "Как Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€?"
podman container run hello

podman container run --name demo -it {{ registry-host }}/{{ os-images-path }}/alpine:3.14
/# cat /etc/os-release
/# exit 
  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ "Как ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ [всС] ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€?"
podman container ls [--all]
podman container rm demo

Then участники ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π½Π° вопросы

  • Как Π½Π°Π·Π²Π°Π»ΠΈ сцСнарии?
  • УспСшна Π»ΠΈ сконфигурирована систСма для использования Podman?
  • ΠžΡ‚ΠΊΡƒΠ΄Π° взялся ΠΎΠ±Ρ€Π°Π· диска?
  • Бколько мСста Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π·?
  • Бколько мСста Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€?
  • Какая вСрсия ΠΎΠ±Ρ€Π°Π·Π° скачиваСтся ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ?
  • Какая гостСвая ΠΊΠΎΠΌΠ°Π½Π΄Π° запускаСтся ΠΏΡ€ΠΈ запускС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°?

Π–ΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π° 30

Π—Π°Ρ‡Π΅ΠΌ Π½ΡƒΠΆΠ΅Π½ ΠΎΠ±Ρ€Π°Π·

  • Π—Π°Π΄Π°Ρ‡Π° срСды исполнСния ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²: изоляция нашСго ПО ΠΎΡ‚ хоста
  • ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ диска ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π½Π° диск хоста: ΠΎΠ±Ρ€Π°Π·

Π§Ρ‚ΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΎΠ±Ρ€Π°Π·

  • Π§Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π½Π° дискС для запуска ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ прилоТСния?
  • Бостав ΠΎΠ±Ρ€Π°Π·Π° диска (ΠΎΡ‚ scratch Π΄ΠΎ prod-ready)
  • OS libraries
  • OS package manager (для ΡƒΠ΄ΠΎΠ±Π½ΠΎΠΉ установки зависимостСй, Π½ΡƒΠΆΠ΅Π½ Π½Π° этапС сборки ΠΎΠ±Ρ€Π°Π·Π°)
  • OS commands (для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ, ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΈ Ρ‚Ρ€Π°Π±Π»ΡˆΡƒΡ‚ΠΈΠ½Π³Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Π½Π° этапС эксплуатации)
  • Application libraries
  • Application executables
  • Config files
  • Data files
$ podman run --rm -it alpine:3.14 ls
bin    dev    etc    home   lib    media  mnt    opt    proc   root   run    sbin   srv    sys    tmp    usr    var

Как идСнтифицируСтся ΠΎΠ±Ρ€Π°Π·

$ podman images
REPOSITORY                TAG         IMAGE ID      CREATED       SIZE
quay.io/podman/hello      latest      577bf902f284  9 hours ago   85.1 kB
<none>                    <none>      4f391b4bf86f  3 days ago    85.1 kB
docker.io/library/alpine  3.14        376ba31ae3da  2 months ago  5.63 MB
docker.io/library/alpine  latest      a6215f271958  2 months ago  5.58 MB
  • id ΠΊΠ°ΠΊ Ρ…Π΅Ρˆ ΠΎΠ±Ρ€Π°Π·Π°
  • хост/Π³Ρ€ΡƒΠΏΠΏΠ°/имя ΠΊΠ°ΠΊ имя рСпозитория
  • хост/Π³Ρ€ΡƒΠΏΠΏΠ°/имя:Ρ‚Π΅Π³ ΠΊΠ°ΠΊ ΠΏΠΎΠ»Π½ΠΎΠ΅ символьноС имя

Как создаСтся ΠΎΠ±Ρ€Π°Π·

  • podman container run + side effects > podman container commit > podman image push # Ρ€Π΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ "Ρ€ΡƒΡ‡Π½ΠΎΠΉ" Π–Π¦
  • podman image build > podman image push # ΡˆΡ‚Π°Ρ‚Π½Ρ‹ΠΉ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π–Π¦
  • Overlay FS
$ podman image history quay.io/podman/hello
ID            CREATED       CREATED BY                                     SIZE        COMMENT
577bf902f284  10 hours ago  /bin/sh -c #(nop) LABEL "org.opencontainer...  0 B         FROM d2f3fdcf80a2
<missing>     10 hours ago  /bin/sh -c #(nop) LABEL "org.opencontainer...  0 B         FROM cc07153b17e6
<missing>     10 hours ago  /bin/sh -c #(nop) LABEL "org.opencontainer...  0 B         FROM d45976f9036e
<missing>     10 hours ago  /bin/sh -c #(nop) CMD ["/usr/local/bin/pod...  0 B         FROM aeedbc3e44e3
<missing>     10 hours ago  /bin/sh -c #(nop) COPY file:d246003209ea6b...  80.9 kB     FROM a796bd9429dc
<missing>     10 hours ago  /bin/sh -c #(nop) USER 1000                    0 B         FROM 190f78d5a9fb
<missing>     10 hours ago  /bin/sh -c #(nop) LABEL artist="MΓ‘irΓ­n N...    0 B         FROM 78ab72a99b9f
<missing>     10 hours ago  /bin/sh -c #(nop) LABEL maintainer="Podman...  0 B
$ docker run --rm -v /var/run/docker.sock:/var/run/docker.sock nate/dockviz images -t
β”œβ”€<missing> Virtual Size: 5.6 MB
β”‚ └─<missing> Virtual Size: 5.6 MB
β”‚   └─<missing> Virtual Size: 5.6 MB
β”‚     └─<missing> Virtual Size: 19.8 MB
β”‚       └─<missing> Virtual Size: 19.8 MB
β”‚         └─<missing> Virtual Size: 19.8 MB
β”‚           └─<missing> Virtual Size: 116.7 MB
β”‚             └─<missing> Virtual Size: 116.7 MB
β”‚               β”œβ”€<missing> Virtual Size: 116.7 MB
β”‚               β”‚ └─<missing> Virtual Size: 116.7 MB
β”‚               β”‚   └─<missing> Virtual Size: 116.7 MB
β”‚               β”‚     └─<missing> Virtual Size: 136.7 MB
β”‚               β”‚       └─<missing> Virtual Size: 136.7 MB
β”‚               β”‚         └─3c1355b22f16 Virtual Size: 136.7 MB Tags: training-docker/ekr-stub:1.0.0
β”‚               └─<missing> Virtual Size: 116.7 MB
β”‚                 └─<missing> Virtual Size: 116.7 MB
β”‚                   └─<missing> Virtual Size: 116.7 MB
β”‚                     └─<missing> Virtual Size: 116.7 MB
β”‚                       └─e96641ea7cdf Virtual Size: 182.6 MB Tags: training-docker/ekr-backend:1.0.0
  • Как ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π·Π°ΠΌΠΈ c Crane

Hands-on practice quest #01: Pre-built disk image lifecycle 20 + 10

Given

  • ΠΏΠ°Ρ€Ρ‹ участников

When участники ΠΈΠΌΠ΅Π½ΡƒΡŽΡ‚ сцСнарии, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ ΠΈΡ… Π²Ρ‹Π²ΠΎΠ΄ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅

  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ "Как ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ список ΠΎΠ±Ρ€Π°Π·ΠΎΠ²?"
podman image ls # TODO: собствСнныС ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΠΈ участников для Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ использования Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…
  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ "Как ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π· ΠΈΠ· Ρ€Π΅ΠΏΡ‹?"
podman image pull {{ registry-host }}/{{ os-images-path }}/alpine:3.14
podman image ls
  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ "Как ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ создания ΠΎΠ±Ρ€Π°Π·Π° ΠΈ Π΅Π³ΠΎ описаниС (слои)?"
podman image history {{ registry-host }}/{{ os-images-path }}/alpine:3.14
podman image inspect {{ registry-host }}/{{ os-images-path }}/alpine:3.14 [| jq]
  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ "Как ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ измСнСния Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΡ…?"
podman container run --name demo -it {{ registry-host }}/{{ os-images-path }}/alpine:3.14 # run = pull + start
/# touch side-effect.txt
/# exit
podman container diff demo # ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ нотация Git
podman container commit demo {{ registry-host }}/container-training-docker/{{ registry-account }}/demo # фиксируСм измСнСния ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π·
podman image ls
  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ "Как ΠΏΠΎΠ²Π΅ΡΠΈΡ‚ΡŒ тэг Π½Π° ΠΎΠ±Ρ€Π°Π·?"
podman image tag {{ registry-host }}/container-training-docker/{{ registry-account }}/demo:latest {{ registry-host }}/container-training-docker/{{ registry-account }}/demo:1.0.0 # Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ символьноС имя
podman image ls
  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ "Как ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π· Π² Ρ€Π΅ΠΏΡƒ?"
podman image push {{ registry-host }}/container-training-docker/{{ registry-account }}/demo:1.0.0
  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ "Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ / ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π· ΠΈΠ· Ρ€Π΅ΠΏΡ‹?"
podman image ls
podman container rm demo # удаляСм ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€
podman image prune  # удаляСм "подвисшиС" ΠΎΠ±Ρ€Π°Π·Ρ‹ -> ΠΎΠ±Ρ€Π°Π·Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΈΠΌΠ΅Π½ΠΈ ΠΈ тэга 
podman image ls
podman image rm {{ registry-host }}/container-training-docker/{{ registry-account }}/demo:1.0.0 # untag = unlink Π² Linux
podman image ls
podman image rm {{ registry-host }}/container-training-docker/{{ registry-account }}/demo:latest
podman image ls
podman image prune --all # удаляСм Π½Π΅ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅(!) ΠΎΠ±Ρ€Π°Π·Ρ‹ = Π½Π΅Ρ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΈ Π½Π΅Ρ‚ остановлСнного ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°

Then участники дСлятся ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΈ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π½Π° вопросы

  • Как Π½Π°Π·Π²Π°Π»ΠΈ сцСнарии?
  • Какой Ρ‚Π΅Π³ Ρƒ ΠΎΠ±Ρ€Π°Π·Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ?
  • Π’ Ρ‡Π΅ΠΌ физичСский смысл удалСния ΠΎΠ±Ρ€Π°Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ rm?
  • ВсСгда Π»ΠΈ удаляСтся ΠΎΠ±Ρ€Π°Π· ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ rm?
  • Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ prune?
  • Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ dangling image?

Π–ΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» ΠΏΠΎΠ΄Π° ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° 30

  • container = running process + container data (container layer)

  • Π§Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ "запуск" ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°? Π§Ρ‚ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Π°ΠΌ запускаСтся?

  • Бколько ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€?

  • Как ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Π·Π°ΠΏΡƒΡΠΊΠ°Π΅ΠΌΡƒΡŽ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅?

  • Π§Ρ‚ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ для запуска ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°?

  • disk image

  • ΠΌΠ΅ΠΏΠΏΠΈΠ½Π³ (Ρ„ΠΎΡ€Π²Π°Ρ€Π΄ΠΈΠ½Π³) ΠΏΠΎΡ€Ρ‚ΠΎΠ²

  • имя ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° (+defaults)

  • virtual network

  • folder | volume mapping

  • guest environment variables

  • command line (image entrypoint override)

  • command line arguments (image cmd override)

  • ЭкстСрнализация ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ прилоТСния

  • Π—Π°Π΄Π°Ρ‡ΠΈ экстСрнализации ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ прилоТСния

  • Бпособы: --env ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки

  • Π–ΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°

  • podman container create + podman container start = podman container run [args]

  • podman container commit

  • podman container ls [--all]

  • podman container logs

  • podman container stop & podman container kill

  • podman container rm

  • Запуск ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π² ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌ ΠΈ Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ°Ρ…:

  • -i vs -d

  • -t

  • Π–ΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» ΠΏΠΎΠ΄Π°

  • podman pod create & podman container run --pod [new:]

  • podman pod ps

  • podman pod ls

  • podman pod logs

  • podman pod stop

  • podman pod rm

Hands-on practice quest #02: Pod and Container lifecycle 20 + 10

Given

  • ΠΏΠ°Ρ€Ρ‹ участников

When участники ΠΈΠΌΠ΅Π½ΡƒΡŽΡ‚ сцСнарии, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ свои сцСнарии ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ ΠΈΡ… Π²Ρ‹Π²ΠΎΠ΄ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅

  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ "Как ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ список Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… ΠΈ остановлСнных ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²?"
podman container ls --all
  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ "Как Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ 'ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²Ρ‹ΠΉ' ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€?"
podman container run --rm -it {{ registry-host }}/{{ os-images-path }}/alpine:3.14 # note `--rm`
/# exit
podman container ls --all
  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ "Как Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅?"
podman container run --detach --name proxy --publish 8080:80 {{ registry-host }}/{{ software-images-path }}/nginx:1.19.4 # note `--detach` or `-d`
podman container ls
curl localhost:8080
  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ "Как 'ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ' ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΌΡƒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρƒ?"
podman container logs proxy

podman container attach --sig-proxy=false proxy # otherwise detach key `ctrl-c` will stop container 

podman container top proxy

podman container exec -it proxy /bin/sh # run additional process `sh` within _running_ container
  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ "Как ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ свойства ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°?"
podman container port proxy
podman container inspect proxy [| jq]
  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ "Как ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€?"
podman container stop ... # send SIGTERM, and then SIGKILL after grace period
podman container kill ... # send SIGKILL, or specified signal

podman container start ...
podman container restart ...
  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ "Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€?"
podman container rm --force
  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ "Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ остановлСнный ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€?"
podman container rm ...
podman container prune ...
  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ "Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎΠ΄?"
podman ...
  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ "Как Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ с Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π΅Π³ΠΎ Π² ΠΏΠΎΠ΄?"
podman ...
  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ "Как ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ список ΠΏΠΎΠ΄ΠΎΠ²?"
podman ...
  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ "Как ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ список ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Π² ΠΏΠΎΠ΄Π΅?"
podman pod ps
podman ps -a --pod
podman pod inspect ...
  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ "Как ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π»ΠΎΠ³ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² Π² ΠΏΠΎΠ΄Π΅?"
podman logs --latest ...
  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ "Как ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ k8s manifest ΠΈΠ· Π³ΠΎΡ‚ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Π°?"
podman generate kube ...
  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ "Как ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄?"
podman ...

Then участники дСлятся ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΈ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π½Π° вопросы

  • КакиС способы ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°?
  • КакоС имя Ρƒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ?
  • Π“Π΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ сСти (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠ΅ΠΏΠΏΠΈΠ½Π³ ΠΏΠΎΡ€Ρ‚ΠΎΠ²) – для ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΈΠ»ΠΈ для ΠΏΠΎΠ΄Π°?
  • Π§Ρ‚ΠΎ Π·Π° Π»ΠΎΠ³ΠΈ Π½Π°Π±Π»ΡŽΠ΄Π°ΡŽΡ‚ΡΡ для ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΈ ΠΏΠΎΠ΄Π°?
  • Π’ Ρ‡Π΅ΠΌ физичСский смысл удалСния ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°?
  • Π’ Ρ‡Π΅ΠΌ физичСский смысл удалСния ΠΏΠΎΠ΄Π°?
  • Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ container prune?
  • Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ k8s manifest?

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡ простого сСрвиса: автоматичСская сборка ΠΎΠ±Ρ€Π°Π·Π° 40

Π—Π°Π΄Π°Ρ‡ΠΈ автоматичСских сборщиков

  • На Π²Ρ‹Ρ…ΠΎΠ΄Π΅ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΎΠ±Ρ€Π°Π·Π°
  • На Π²Ρ…ΠΎΠ΄Π΅ дСскриптор сборки ΠΎΠ±Ρ€Π°Π·Π° Containerfile/Dockerfile
  • Π§Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π² этом дСскрипторС?

Как ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ с Containerfile ΠΈ Buildah ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡ‚ΠΎΠΌ

podman container run [--entrypoint Dockerfile's ENTRYPOINT override] IMAGE [Dockerfile's CMD defaults override] 
FROM alpine
ENTRYPOINT ["echo", "Hello"]
CMD ["World"] # 'default parameters to ENTRYPOINT' form
...
$ podman build --tag test .
...
$ podman run --rm test
Hello World
...
$ podman run --rm test Alpine
Hello Alpine
  • БистСмныС ΠΎΠ±Ρ€Π°Π·Ρ‹ для Π±Π°Π·Ρ‹ VS ΠΏΡ€ΠΈΠΊΠ»Π°Π΄Π½Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π·Ρ‹ с прилоТСниями

  • ΠšΡ€Π°Ρ‚ΠΊΠΎ ΠΏΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ сборки:

  • Π‘Π±ΠΎΡ€ΠΊΠ° FROM scratch, "ΠΏΠΈΠ½Ρ†Π΅Ρ‚Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄"

  • ИспользованиС лСгковСсных Π±Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΎΠ±Ρ€Π°Π·ΠΎΠ²

alpine 5.33MB
registry.access.redhat.com/ubi8/ubi-micro 51.6MB
debian:stable-slim 74.3MB
  • ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ build context ΠΈ ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈ сборкС (+ .dockerignore)
  • ИзмСнСниС порядка Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ² Π² Dockerfile, Ρ‡Ρ‚ΠΎΠ±Ρ‹ максимально ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ кСш builder
  • ОбъСдинСниС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ², Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ количСство слоёв ΠΎΠ±Ρ€Π°Π·Π°
  • Multi-stage build, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ Π² ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· инфраструктуру сборки
  • ОбъСдинСниС слоёв ΠΎΠ±Ρ€Π°Π·Π° Π² ΠΎΠ΄ΠΈΠ½ слой

Hands-on practice quest #03: Simple java application containerization with Buildah 30 + 10

Given

  • Π‘ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ git repo c ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ
application
└── backend
    β”œβ”€β”€ Containerfile
    └── dbo-1.0-SNAPSHOT.jar
  • Π—Π°Π΄Π°Π½Π° рабочая ΠΏΠ°ΠΏΠΊΠ°
cd application
  • ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° аутСнтификация консольного Podman CLI Π² Registry
podman login ...

When участники ΠΈΠΌΠ΅Π½ΡƒΡŽΡ‚ сцСнарии, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ свои ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ ΠΈΡ… Π²Ρ‹Π²ΠΎΠ΄ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅

  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ "Как ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π· Π½Π° основС Containerfile?"
vi backend/Containerfile # Replace base image with one that suitable for corporate image registry
podman image build \
  --tag {{ registry-host }}/container-training-docker/{{ registry-account }}/app:1.0.0 \ # set up symbolic name for image
  ./backend # folder where Containerfile located

podman image ls
  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ "Как Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ 'ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²Ρ‹ΠΉ' ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π½Π° Π±Π°Π·Π΅ своСго ΠΎΠ±Ρ€Π°Π·Π° с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ?"
podman container run \
 --name backend \
 --rm \ # ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²Ρ‹ΠΉ: удалится послС остановки
 --detach \ # -d
 --publish 8080:8080 \ # -p [host address:]8080:8080
 --env SPRING_PROFILES_ACTIVE=qa \ # -e: Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ дСйствуСт пСрСмСнная окруТСния
 {{ registry-host }}/container-training-docker/{{ registry-account }}/app:1.0.0 \ #  имя ΠΈ Ρ‚Π΅Π³
  --spring.profiles.active=qa # ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки
  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ "Как ΠΏΡ€ΠΎΡ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½ΠΎΠ΅ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅?"
podman container ls --all # Check for status

curl localhost:8080/dbo/actuator/health
open http://localhost:8080/dbo/swagger-ui/
  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ "Как мягко ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ срСдствами самого прилоТСния?"
curl -X POST localhost:8080/dbo/actuator/shutdown
  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ "Как ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ?"
podman image push ...

Then участники дСлятся ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΈ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π½Π° вопросы

  • Π’ ΠΊΠ°ΠΊΠΎΠΌ порядкС Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡŒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ Dockerfile?
  • Бколько Π½ΠΎΠ²Ρ‹Ρ… layers Π΄ΠΎΠ±Π°Π²ΠΈΠ»Π° сборка ΠΊ Π±Π°Π·ΠΎΠ²ΠΎΠΌΡƒ ΠΎΠ±Ρ€Π°Π·Ρƒ?
  • Когда ΠΈ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ остановился ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€?
  • Π§Ρ‚ΠΎ происходит с процСссом прилоТСния, ΠΊΠΎΠ³Π΄Π° останавливаСм ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€?
  • Бколько Ρ€Π°Π· Π²Ρ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ с настройкой экстСрнализированной ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ прилоТСния?

Π˜Π·ΠΎΠ»ΡΡ†ΠΈΡ Π΄Π°Π½Π½Ρ‹Ρ… 20

  • Π§Ρ‚ΠΎ происходит с измСнСниями Π² ΠΎΠ±Ρ€Π°Π·Π΅ ΠΏΡ€ΠΈ остановкС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°?
  • Как Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ измСнСния Π² ΠΎΠ±Ρ€Π°Π·Π΅?
  • Как ΠΎΡ‚ΠΊΠ°Ρ‚ΠΈΡ‚ΡŒ измСнСния Π² ΠΎΠ±Ρ€Π°Π·Π΅?
  • Как ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ измСнСния Π½Π° дискС Π²Π½Π΅ ΠΎΠ±Ρ€Π°Π·Π°? (stateful containers): mounts
  • tmpfs
podman container run 
 --tmpfs /tmp
 --tmpfs /var/log
 --tmpfs /dbo/log 
  • shared folders
podman container run --volume "$(pwd)"/folder/file:/folder/file:ro # ΠΏΡƒΡ‚ΠΈ Ρƒ folder Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½Ρ‹Π΅, Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с "/"
  • volumes
podman container run --volume my_volume:/folder/file:ro # имя volume Π½Π΅ начинаСтся с "/"
  • Π›ΠΎΠ³ΠΈ
  • ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹Π΅ Π»ΠΎΠ³ΠΈ: stdout/stderr
  • ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ΡΡ ΠΈ ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ (опрСдСляСтся log driver)
podman logs [--until=10s] ...

Hands-on practice quest #04: Simple stateful application containerization 20 + 10

Given

  • Π‘ΠΎΠ±Ρ€Π°Π½ ΠΎΠ±Ρ€Π°Π· с ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ

When участники ΠΈΠΌΠ΅Π½ΡƒΡŽΡ‚ сцСнарии, Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ свои ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ ΠΈΡ… Π²Ρ‹Π²ΠΎΠ΄ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅

  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ "Как Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ stateful container c пробросом Π½Π° Ρ…ΠΎΡΡ‚ΠΎΠ²ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ?"
podman container run \
 -- ... \ # TODO имя ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°
 -- ... \ # TODO ΠΎΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²Ρ‹ΠΉ: удалится послС остановки
 -- ... \ # TODO Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΉ Ρ€Π΅ΠΆΠΈΠΌ
 -- ... \ # TODO проброс ΠΏΠΎΡ€Ρ‚Π° Π½Π° хост
 -- ... \ # TODO ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Spring 'qa'
 --volume $(pwd)/log:/dbo/log \ # -v: ΠΏΠ°ΠΏΠΊΠ° Π² ΠΊΠΎΠ½Π΅ΠΉΠ½Π΅Ρ€Π΅ /dbo/log ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π° Π½Π° ΠΏΠ°ΠΏΠΊΡƒ Π½Π° хостС /current-path/log. Windows caution for $()!
 {{ registry-host }}/container-training-docker/{{ registry-account }}/app:1.0.0

cat $(pwd)/log/dbo.log

Then участники дСлятся ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΈ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π½Π° вопросы

  • Π’ Π΄Π°Π½Π½Ρ‹Ρ… сцСнариях ΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ mount Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚? tmpfs, shared folder, volume?

ΠžΡ€ΠΊΠ΅ΡΡ‚Ρ€Π°Ρ†ΠΈΡ 40

Π—Π°Π΄Π°Ρ‡ΠΈ оркСстраторов

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π³Ρ€ΡƒΠΏΠΏΠΎΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² с Podman Compose

cd application
podman-compose up --detach

podman-compose ps
podman-compose logs

podman-compose down

Hands-on practice quest #05: Multi-component stateful application containerization with Compose 30 + 10

Given

  • УстановлСн Podman Compose
sudo dnf install -y pip
pip3 install https://github.com/containers/podman-compose/archive/devel.tar.gz

When

  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ "Как Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Compose?"
cd application
podman-compose up --detach
  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ "Как Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΏΠΎΠ΄ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Compose?"
cd application
podman-compose ps
podman-compose port
podman-compose logs
  • Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉ "Как ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹?"
cd application
podman-compose down

Then участники дСлятся ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ ΠΈ ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π½Π° вопросы

  • МоТно Π»ΠΈ Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ срСдствами podman, Π° Π½Π΅ Compose?

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ 30

  1. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π·Ρ‹: быстрСС ΠΈ мСньшС зависимостСй + мСньшС рисков
  2. Запуск Π² rootless mode
  3. ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π·Ρ‹ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ подписи
  4. Π‘ΠΊΠ°Π½Π΅Ρ€Ρ‹ уязвимостСй для ΠΎΠ±Ρ€Π°Π·ΠΎΠ² docker scan --dependency-tree <image>
  5. Π›ΠΈΠ½Ρ‚Π΅Ρ€Ρ‹ для Dockerfile
  6. COPY вмСсто ADD + .dockerignore
  7. ЀиксированныС Ρ‚Π΅Π³ΠΈ для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π·ΠΎΠ² (Semantic versioning or Unique tags)
  8. Multi-Stage Build Π² Ρ‚ΠΎΠΌ числС для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² ΠΈΡ‚ΠΎΠ³ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· Π½Π΅ ΡƒΡ‚Π΅ΠΊΠ»ΠΈ Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅
  9. Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈ Ρ‡ΡƒΠ²ΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…: Secrets

About

Podman training

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Dockerfile 100.0%