±à¼ÍƼö: |
±¾ÎĽéÉÜ´´½¨
Podman ÈÝÆ÷£¬½«ËüÒÆµ½ÈÎÒâÖ§³Ö Podman µÄ Linux ϵͳÉÏ¡£È»ºóʹÓÃ
Buildah ½øÐпª·¢,Ï£Íû¶ÔÄúÓÐËù°ïÖú
±¾ÎÄÀ´×ÔÓÚOsChina£¬ÓÉ»ðÁú¹ûÈí¼þDelores±à¼¡¢ÍƼö¡£ |
|
È¥ÄêÊ¥µ®½Ú£¬±ÊÕßË͸øÆÞ×ÓÒ»Ì×¶íÂÞ˹Ì×ÍÞ¡£ËüÃÇÓÉÒ»¸öľż×é³É£¬Ã¿¸öľż´ò¿ªºóÊÇÁíÍâÒ»¸ö¸üСµÄľż£¬Ö±µ½×îСÄǸö³öÏÖ¡£Õâ¸ö¸ÅÄîÈÃÎÒÏëµ½ÁËǶÌ×ÈÝÆ÷¡£
ÎÒÏëÎÒ»òÐí¿ÉÒÔ³¢ÊÔÓà Podman À´¹¹½¨×Ô¼ºµÄǶÌ×ÈÝÆ÷£¬ÎÒ¿ÉÒÔÔÚÈÝÆ÷ÖлùÓÚ Buildah ×ö¿ª·¢£¬Ò²¿ÉÒÔ¼ÌÐø´´½¨ Buildah ÈÝÆ÷ºÍÓ³Ïñ¡£
»·¾³×¼±¸
±¾ÎÄÊÇÔÚÒ»¸öȫа²×°µÄ Fedora 29 ÐéÄâ»úÉϽøÐеģ¬ÏµÍ³Éϰ²×°ÁË×îа汾µÄ Podman ºÍ container-selinux £¬°²×°ÃüÁîΪ£ºdnf -y install podman container-selinux --enablerepo updates-testing¡£ÏàÓ¦°æ±¾ÊÇ Podman v1.1.2 ºÍ container-selinux 2.85-1.
²»¹ÜÊÇÈÝÆ÷£¬»¹ÊÇÈÝÆ÷ÖеÄÈÝÆ÷¶¼ÒªÓõ½ fuse-overlayfs£¬µ±³¢ÊÔ½«ÆäÏàӦĿ¼°²×°ÔÚÒ»Æðʱ»áÓкܶàÂé·³¡£Òò´Ë£¬µÚÒ»²½Ó¦¸ÃΪÈÝÆ÷´´½¨Ò»¸öĿ¼£¬ÕâÀïÎÒÃǽ«ÆäÃüÃûΪ /var/lib/mycontainer:
# mkdir /var/lib/mycontainer |
´´½¨ Podman ÈÝÆ÷
½ÓÏÂÀ´ÎÒ´´½¨ÁËÈçÏ嵀 Dockerfile £¬Ö÷Òª²Ù×÷°üÀ¨ÀÈ¡ Fedora¡¢ÉèÖà GOPATH¡¢°²×° Buildah ÒÀÀµ£¬Ê¹Óà git ¿Ë¡ buildah ÏîÄ¿µ½ /root/buildah Ä¿£¬×îºó¸üР/etc/container/storage.conf Îļþ£¬Ö÷ÒªÊÇÈ¥µô mount_program µÄ×¢ÊÍ£º
# FILE=~/Dockerfile.cinc
# /bin/cat <<EOM >$FILE
FROM fedora:latest
ENV GOPATH=/root/buildah
RUN dnf -y install \
make \
golang \
bats \
btrfs-progs-devel \
device-mapper-devel \
glib2-devel \
gpgme-devel \
libassuan-devel \
libseccomp-devel \
ostree-devel \
git \
bzip2 \
go-md2man \
runc \
fuse-overlayfs \
fuse3 \
containers-common; \
mkdir /root/buildah; \
git clone https://github.com/ containers/buildah
/root/ buildah/src/github.com/ containers/buildah
RUN sed -i -e 's|#mount_program = "/usr/bin/fuse-overlayfs" |mount_program
= "/usr/bin /fuse-overlayfs"|' /etc/containers /storage.conf
EOM |
½ÓÏÂÀ´ÎÒÃÇʹÓøà Dockerfile ´´½¨Ò»¸ö¾µÏñ£¨ Çë×¢ÒâÐÐÄ©²»ÈÝÒ×·¢ÏֵľäºÅ£©£¬¸ÃÃüÁîÖ´ÐÐÍêÐèÒª 5 µ½ 10 ·ÖÖÓÖ®¾Ã£¬¶øÇÒ¼´½«½áÊøÊ±¿´ÆðÀ´Ïñ¼ÙËÀÒ»Ñù£¬ÇëÄÍÐĵȴý£¬Äã¿ÉÒÔ³Ã×ÅÕâ¸öʱ¼äÈ¥ºÈ±²è¡£
# podman build
-t buildahimage -f ~ /Dockerfile.cinc . |
½ÓÏÂÀ´ÊÇÒ»¸öºÜÖØµÄ¹ý³Ì£¬ÎÒÃÇ´´½¨ÁËÒ»¸ö Podman ÈÝÆ÷ÓÃÀ´×ö Buildah ¿ª·¢¡£ÏÂÃæÃüÁî´´½¨Ò»¸öÃûΪ buildahctrµÄÈÝÆ÷£¬²¢½«ËÞÖ÷ mycontainer °²×°µ½ÈÝÆ÷µÄ containers Ŀ¼£¬¸ÃÈÝÆ÷»áÓëËÞÖ÷Ö÷»úÍøÂç¸ôÀ룬¹Ø±Õ±êÇ©ºÍ seccomp ÏÞÖÆ£¬×îºóÖ´ÐÐһЩ½Å±¾ÈÃÈÝÆ÷Æô¶¯²¢ÔËÐС£
# podman run
--detach --name= buildahctr --net=host --security -opt
label=disable --security-opt seccomp=unconfined
--device /dev/fuse:rw -v /var/lib /mycontainer:/var/lib /containers:Z
buildahimage sh -c ' while true ;do wait; done' |
Buildah ¿ª·¢
°ô¼«ÁË£¬ÏÖÔÚÎÒÃÇÒѾÓÐÒ»¸öÔËÐÐÁË Fedora µÄÈÝÆ÷£¬½ÓÏÂÀ´ÎÒÃÇ¿ÉÒÔÔÚÈÝÆ÷ÄÚ¿ªÊ¼±àÒëºÍ°²×° Buildah ¡£ÃüÁîÈçÏ£º
# podman exec
-it buildahctr /bin/sh |
ÏÖÔÚÎÒÃÇÒѾÔÚÈÝÆ÷ÄÚÁË£¬½ÓÏÂÀ´ÊDZê×¼µÄ make¡¢git ºÍÔËÐÐ buildah¡££¨Çë×¢Òâ½ÓÏÂÀ´µÄ 5 ¸öÃüÁîÎÒÃÇÊÇÔÚÌáʾ·û sh-4.4# ÏÂÔËÐеģ¬ÎªÁ˼ò»¯¸´ÖÆÕ³ÌùÎÒÒѾɾÁ˺ܶàÌáʾÐÅÏ¢)
sh-4.4# cd /root/buildah
export GOPATH=`pwd`
cd /root/buildah/src/github.com /containers/buildah
make
make install
sh-4.4# buildah from alpine
alpine-working-container
sh-4.4# buildah images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/library/alpine latest 5cb3aa00f899
9 days ago 5.79 MB |
µ½´ËΪֹÎÒÃÇÒѾÔÚ Podman ÈÝÆ÷ÖбàÒë¡¢°²×°ºÍÔËÐÐ Buildah ÁË¡£
½ÓÏÂÀ´ÎÒÃǽ«¿ìËٵĵ÷Õû Buildah Ô´Âë²¢¿´¿´ÕâЩ±ä»¯ÊÇ·ñÉúЧ¡£ÇëÓà vi »òÕßÄãϲ»¶µÄ±à¼Æ÷ÐÞ¸Ä cmd/buildah/images.go. ËÑË÷ outputHeader() º¯Êý (´óÔ¼ 219 ÐÐ) £¬Ä㽫ÕÒµ½ÕâôһÐдúÂë format := "table {{.Name}}\t{{.Tag}}\t". ɾ³ýµ¥´Ê ¡°table¡± £¬¸Ä³É format := "{{.Name}}\t{{.Tag}}\t¡±. ±£´æÎļþ²¢Í˳ö£¬È»ºóÔÙ´ÎÖ´ÐÐ make ºÍ make install ¡£
sh-4.4# vi cmd/buildah/images.go
sh-4.4# make
sh-4.4# make install |
ÏÖÔÚÔÙ´ÎÔËÐÐ buildah images, Ä㽫¿´µ½ËùÓеÄÊä³öÐÐΪ¸ú´ò¿ª --quiet ²ÎÊýµÄЧ¹ûÒ»Ñù£¬¶øÇÒ²»ÏÔʾ±íÍ·£º
sh-4.4# buildah
images
docker.io/library/alpine latest 5cb3aa00f899 9
days ago 5.79 MB |
ÔÚ Podman ÈÝÆ÷ÖÐÔËÐÐ buildah ÈÝÆ÷
½ÓÏÂÀ´ÊÇ×îÓÐȤµÄÊÂÇé¡£ÎÒÃǽ«À´¿´¿´ÊÇ·ñ¿ÉÒÔÔÚ Podman ÈÝÆ÷ÖÐÔËÐÐ Buildah ÈÝÆ÷¡£½ÓÏÂÀ´ÎÒÃÇÐèÒª×öһЩ¼òµ¥¹¤×÷À´Áгö / Ŀ¼ÄÚÈÝ¡£
sh-4.4# buildah
from --name myalpine alpine
myalpine
sh-4.4# buildah run --isolation=chroot myalpine
ls /
bin dev etc home lib media mnt opt proc root
run sbin srv sys tmp usr var |
±ãЯµÄ Buildah ¿ª·¢»·¾³
Èç¹ûÄãÒÑ˳ÀûÍê³ÉÉÏÊö²½Ö裬Äã¾Í¿ÉÒÔÔÚ Podman ÈÝÆ÷ÖÐ×ö Buildah ¿ª·¢ÁË¡£Õâ¸öÈÝÆ÷ͬʱ»¹¿ÉÒÔ¹¹½¨²¢ÔËÐÐÆäËûÈÝÆ÷¡£ÕâÀïÎÒʹÓõÄÊÇ Buildah£¬µ«ÆäʵҲ¿ÉÒÔʹÓà Podman À´¹¹½¨ÄÚ²¿ÈÝÆ÷¡£ÎÞÂÛÑ¡ÔñºÎÖÖÄÚ²¿¹¤¾ß£¬ÏÖÔÚÎÒÃǶ¼ÓµÓÐÁËÒ»¸ö°üº¬ÆäËûÈÝÆ÷µÄÈÝÆ÷£¬¾ÍºÃÏñÇ°ÃæÎÒÃÇÌáµ½µÄÌ×ÍÞ¡£¶øÇÒÎÒÒ²¿ÉÒÔ½«Õâ¸öÈÝÆ÷Ìá½»µ½ Quay.io ºÍÆäËûÈÝÆ÷×¢²áÍøÕ¾£¬²¢´ÓÕâÐ©ÍøÕ¾ÀÈ¡ÈÝÆ÷¾µÏñÔËÐе½ÁíÍâµÄ Fedora »úÆ÷»òÕ߯äËû Linux ƽ̨ÉÏ¡£ÕâÑùÎÒÃÇÒ²¾Í»ñµÃÁËÒ»¸ö±ãЯµÄ Buildah ¿ª·¢»·¾³¡£
Ï£ÍûÕâÆªÎÄÕ¿ÉÒÔÈÃÄãѧϰµ½ÈçºÎʹÓà Podman ºÍ Buildah ´´½¨Ò»¸ö¸üÁé»îµÄ¿ª·¢»·¾³¡£
P.S. Ôڴ˹ý³ÌÖв»ÐèÒªÔËÐÐÈκÎÊØ»¤½ø³Ì£¬Ã»ÓжÔϵͳ×öÈÎºÎÆÆ»µ¡£
|