Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
ǶÌ×ÈÝÆ÷ ¡ª¡ª ÔÚ Podman ÈÝÆ÷ÄÚ¹¹½¨²¢ÔËÐÐ Buildah
 
×÷Õߣº ºìÊí
  2316  次浏览      28
 2019-12-6
 
±à¼­ÍƼö:
±¾ÎĽéÉÜ´´½¨ 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. Ôڴ˹ý³ÌÖв»ÐèÒªÔËÐÐÈκÎÊØ»¤½ø³Ì£¬Ã»ÓжÔϵͳ×öÈÎºÎÆÆ»µ¡£

   
2316 ´Îä¯ÀÀ       28
Ïà¹ØÎÄÕÂ

ÔÆ¼ÆËãµÄ¼Ü¹¹
¶ÔÔÆ¼ÆËã·þÎñÄ£ÐÍ
ÔÆ¼ÆËãºËÐļ¼ÊõÆÊÎö
Á˽âÔÆ¼ÆËãµÄ©¶´
Ïà¹ØÎĵµ

ÔÆ¼ÆËã¼ò½é
ÔÆ¼ÆËã¼ò½éÓëÔÆ°²È«
ÏÂÒ»´úÍøÂç¼ÆËã--ÔÆ¼ÆËã
ÈídzÎöÔÆ¼ÆËã
Ïà¹Ø¿Î³Ì

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
ÔÆ¼ÆËãÓ¦ÓÃÓ뿪·¢
CMMIÌåϵÓëʵ¼ù
»ùÓÚCMMI±ê×¼µÄÈí¼þÖÊÁ¿±£Ö¤