[1] Buildah – instalacja

6 sierpnia 2020 Wyłączono przez Adam [zicherka] Nogły

Zainstalujemy teraz Buildah, który wspiera tworzenie obrazów kontenerów.

Jest możliwe tworzenie obrazów w formacie OCI (Open Container Initiative), które nie wymagają specjalnego demona czy usługi.

[1] Zainstaluj Buildah’a

[root@lsr01vm ~]# dnf -y install buildah

[2] Pokażę teraz podstawowe, minimalne wykorzystanie Buildah’a.

Stworzymy działający kontener z obrazu.

# stwórz działający kontener z obrazu [centos]
[root@lsr01vm ~]# buildah from centos
Getting image source signatures
Copying blob 6910e5a164f7 done
Copying config 831691599b done
Writing manifest to image destination
Storing signatures
centos-working-container

# pokaż listę kontenerów
[root@lsr01vm ~]# buildah containers
CONTAINER ID BUILDER IMAGE ID IMAGE NAME CONTAINER NAME
d75ca7e5dc8b * 831691599b88 docker.io/library/centos:latest centos-working-container

# kontenery możliwe do użycia z Podman'em
[root@lsr01vm ~]# podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/library/centos latest 831691599b88 6 weeks ago 223 MB

[3] Operacje na pracującym kontenerze.

# ustaw zmienne shell'a
[root@lsr01vm ~]# container=$(buildah from centos)
[root@lsr01vm ~]# echo $container
centos-working-container-1

# przykładowe komendy
[root@lsr01vm ~]# buildah run $container echo "Witaj w świecie Buildah"
Witaj w świecie Buildah

[root@lsr01vm ~]# buildah run $container bash
[root@38b7e6085482 /]# dnf -y install python36

[root@38b7e6085482 /]# exit
exit
[root@lsr01vm ~]#

[root@lsr01vm ~]# buildah run $container whereis python3
python3: /usr/bin/python3.6 /usr/bin/python3.6m /usr/bin/python3 /usr/lib/python3.6 /usr/lib64/python3.6 /usr/include/python3.6m /usr/share/man/man1/python3.1.gz

[4] Kopiowanie plików do pracującego kontenera.

[root@lsr01vm ~]# echo "buildah test" > buildah.txt
[root@lsr01vm ~]# buildah copy $container buildah.txt /tmp/buildah.txt
1b77eaaf205c4f1a674e1cea1bb200499ee89b1bf0b2fb8fbd900576e90c4e0d
[root@lsr01vm ~]# buildah run $container cat /tmp/buildah.txt
buildah test

[5] Montowanie systemu plików w pracującym kontenerze.

[root@lsr01vm ~]# buildah mount $container
/var/lib/containers/storage/overlay/f6cd8b5d71179720817740e62fcce68cec97db1360781662ded9b20e28c5e968/merged
[root@lsr01vm ~]# ll /var/lib/containers/storage/overlay/f6cd8b5d71179720817740e62fcce68cec97db1360781662ded9b20e28c5e968/merged
razem 0
lrwxrwxrwx. 1 root root 7 2019-05-11 bin -> usr/bin
drwxr-xr-x. 2 root root 6 06-11 04:35 dev
drwxr-xr-x. 1 root root 56 08-04 20:12 etc
drwxr-xr-x. 2 root root 6 2019-05-11 home
lrwxrwxrwx. 1 root root 7 2019-05-11 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 2019-05-11 lib64 -> usr/lib64
drwx------. 2 root root 6 06-11 04:35 lost+found
drwxr-xr-x. 2 root root 6 2019-05-11 media
drwxr-xr-x. 2 root root 6 2019-05-11 mnt
drwxr-xr-x. 2 root root 6 2019-05-11 opt
drwxr-xr-x. 2 root root 6 06-11 04:35 proc
dr-xr-x---. 1 root root 27 08-04 20:12 root
drwxr-xr-x. 1 root root 42 08-04 20:10 run
lrwxrwxrwx. 1 root root 8 2019-05-11 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 2019-05-11 srv
drwxr-xr-x. 2 root root 6 06-11 04:35 sys
drwxrwxrwt. 1 root root 25 08-04 20:27 tmp
drwxr-xr-x. 1 root root 41 06-11 04:35 usr
drwxr-xr-x. 1 root root 52 06-11 04:35 var

# odmontowanie systemu plików
[root@lsr01vm ~]# buildah umount $container
38b7e60854829f7ab29114f13cd36a706eae2e2464453d128e39ae3b0c85b6cb

[6] Tworzenie obrazu kontenera z pracującego kontenera.

[root@lsr01vm ~]# buildah commit $container zicher-centos:latest
Getting image source signatures
Copying blob eb29745b8228 skipped: already exists
Copying blob af2f01d4c36c done
Copying config 30616f9ca7 done
Writing manifest to image destination
Storing signatures
30616f9ca7f6d445be49d1e531a63c3166e6fba795743556646de76e20e69fe4

[root@lsr01vm ~]# buildah images
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost/zicher-centos latest 30616f9ca7f6 45 seconds ago 262 MB
docker.io/library/centos latest 831691599b88 6 weeks ago 223 MB

# możliwe jest użycie obrazu kontenera w Podman'ie
[root@lsr01vm ~]# podman run localhost/zicher-centos hostname
6cc689a7cfa8