https://github.com/docker/docker/issues/3156ã®@cpuguy83ã«ãã£ãŠææ¡ãããŠããããã«
ããã¯ããã«ãæã®æè»ãª-vãªãã·ã§ã³ã®äœ¿çšäŸã§ãã
Dockerã€ã¡ãŒãžãæ§ç¯ãããšãã¯ãããŒã¿ããŒã¹ãšã¢ããªãã€ã³ã¹ããŒã«ããå¿
èŠããããŸãã ãã¹ãŠã2ã€ã®tarballã«ãŸãšããããŠããŸãã1ã€ã¯DBçšã§ããã1ã€ã¯ã€ã³ã¹ããŒã«ããå¿
èŠã®ããã¢ããªïŒã¹ããŒãããªããžã§ã¯ããéçããŒã¿ãã¯ã¬ãã³ã·ã£ã«ãªã©ïŒçšã§ãã 次ã«ããœãªã¥ãŒã·ã§ã³å
šäœããããã€ãã®ã·ã§ã«å€æ°ãåŠçããããã«å¿ããŠOSã¯ã¬ãã³ã·ã£ã«ãªã©ã調æŽããã·ã§ã«ã¹ã¯ãªãããä»ããŠå®è¡ãããŸãã
äžèšã®tarballãå解ãããšïŒãŸãã¯Dockerfile ADDãã£ã¬ã¯ãã£ãã䜿çšãããšïŒãå
šäœãæ倧çŽ1.5GBïŒïŒïŒã«èšãäžãããŸãã ããªããæ³åã§ããã®ã§çæ³çã§ã¯ãããŸããã
ãã®'-v/ distrib / ready2installAppïŒ/ distrib'ãã£ã¬ã¯ãã£ããåŒãç¶ãå¯èœã«ãããïŒä»æ¥ã®Dockerfileã«ããããã«ïŒ
ããã
Dockerfileã®æåŸã§å®è¡ã§ãã--unmount-volumeãªãã·ã§ã³ã䜿çšã§ããŸããïŒ
ãŸã
çŸåšDockerfileã§Volumeãã©ã®ããã«æ©èœããããèãããšãã€ã³ã¹ããŒã«äžã«äœ¿çšããäžæããªã¥ãŒã çšã®æ°ããDockerfileãã£ã¬ã¯ãã£ããå¿
èŠã«ãªãã®ã§ã¯ãªãã§ããããã @fatherlinuxã«ãã£ãŠæäŸãããPuppetã®äŸãåæ§ã®è¡ã«ãã£ããšæããŸã...
ãŸã
ããªããã¡ãèããããšãã§ãããã®ã¯äœã§ãã
ç®çã¯ããããã€ãããã¢ããªãŸãã¯ãµãŒãã¹ã«åœ¹ã«ç«ããªããã¹ãŠã®èªéãæã¡æ©ãå¿
èŠããªãããã«ããããšã§ãã ãã ãããã®èªéã¯@install-timeã«å¿
èŠã§ãã 誰ããå
¬åŒãªããžããªããã®åçŽãªãyumã€ã³ã¹ããŒã«ããæã£ãŠããããã§ã¯ãããŸããã :)
ã©ããããããšãããããŸã
ç§ã¯åæ§ã®è§£æ±ºçãæ¢ããŠããŸãã
æè¿ãç§ãåããŠããäŒæ¥ã¯ãSSLæ€æ»ã䜿çšããŠZscalerãããã·ãæå¹ã«ããŸãããããã¯ã蚌ææžãã€ã³ã¹ããŒã«ãããã«ãäžã«ããã€ãã®ç°å¢å€æ°ãèšå®ããããšãæå³ããŸãã
äžæçãªè§£æ±ºçã¯ã蚌ææžãšç°å¢å€æ°ãèšå®ãããæ°ããDockerfileãäœæããããšã§ããã ããããé·æçã«èŠããšãããã¯åççã§ã¯ãªãããã§ãã
ãã®ãããæåã«èããã®ã¯HTTPãšHTTPSã䜿çšããééãããã·ãèšå®ããããšã§ãããããã«ãäžã«èšŒææžãæž¡ãå¿ èŠããããŸãã
çæ³çãªã·ããªãªã¯ãåãDockerfileã䜿çšããããšã§ããã©ããããããèªå® ãããã³äŒæ¥ã§ã€ã¡ãŒãžãæ§ç¯ã§ããŸãã
# Enterprise
$ docker build -v /etc/ssl:/etc/ssl -t myimage .
# Home
$ docker build -t myimage .
ãã®æ©èœã®äœ¿çšäŸã¯å°ãç°ãªããŸããASP.Net5ããã±ãŒãžãããŒãžã£ãŒã«ãã£ãŠããŠã³ããŒã/æŽæ°ãããããã±ãŒãžããã£ãã·ã¥ããŸãã ããã±ãŒãžãããŒãžã£ãŒã¯ç¬èªã®ãã£ãã·ã¥ãã©ã«ããŒã管çãããããæçµçã«ã¯ãã«ãéã§åå©çšã§ãããã©ã«ããŒãå¿ èŠã«ãªããŸãã
ããªãã¡ïŒ
docker build -v /home/dokku/cache/dnx/packages:/opt/dnx/packages -t "dokku/aspnettest" .
@yngndrwã¯ãç§ã«ãšã£ãŠãåé¡ãããŸãããã€ãŸããã³ã³ããã«ã€ã³ã¹ããŒã«ãããŠãããããå®è¡æã«å¿ èŠã®ãªãè¿œå ã®ãªãœãŒã¹ããã«ãæã«ããŠã³ãããå¿ èŠããããŸãã
FWIWãããã®ããŒãžã®ã©ããã§ã誰ãããåæ§ã®ãã¹ããã·ã³ã§ã³ã³ãã€ã«ã®åé¡ã解決ããŠããããããã€å¯èœãªã¢ãŒãã£ãã¡ã¯ããŸãã¯exeãã³ã³ããã«ã€ã³ã¹ããŒã«ããããšããèšãæããããŠããã®ãèŠãŸããã
ç§ã¯ãããããã»ã©åçŽãªäººã§ã¯ãªãã®ã§ã¯ãªãããšæããŸãã æã
ã/ usr / binã«ã€ã³ã¹ããŒã«ããå¿
èŠããããŸãããããã€ãã®æ§æãã¡ã€ã«ãç·šéããå¿
èŠããããŸãã å®è¡ããŠããOSã調æŽããå¿
èŠã®ããã«ãŒãã«ãã©ã¡ãŒã¿ãå€æ°ãŸãã¯ãããã§ã¹ããã«ããã¡ã€ã«ã«å¿ããŠäœæããå¿
èŠã®ãããã¡ã€ã«ã確èªããŸãã ã³ã³ãã€ã«ããã補åã®åçŽãªã³ããŒã§ã¯æºè¶³ã§ããªãå€ãã®äŸåé¢ä¿ããããŸãã
åé¡ãéãããšãã«èšã£ãããšãèšãçŽããŸãããããã§ã¹ã宣èšãã¡ã€ã«ãšãã®ããã»ã¹ãããã³ã¢ãŒãã£ãã¡ã¯ãã®å®è¡æéã«ã¯éãããããŸãã
ç§ãã¡ãInfrastructure-as-Codeãããã«ã¯äžå€ã®ã€ã³ãã©ã¹ãã©ã¯ãã£ãæ¬åœã«ä¿¡ããŠããå ŽåãDockerèªäœãããã«æšé²ããŠããŠãç§ã¯ããã奜ãã§ããããã¯IMOãšçå£ã«æ€èšããå¿
èŠããããŸãïŒããã®æçš¿1ã®è¥å€§åãåç
§ïŒ
ããããšãããããŸãã
æ¬åœã«èå³æ·±ããã1ã€ã®äœ¿çšäŸã¯ããœãããŠã§ã¢ã®ã¢ããã°ã¬ãŒãã§ãã FreeIPAã®å Žåã®ããã«ãæ¬çªããŒã¿ã®ã³ããŒã䜿çšããŠå®éã«ãã¹ãããããŸããŸãªã³ã³ããŒãã³ãããã¹ãŠæ£åžžã«ã¢ããã°ã¬ãŒãã§ããããšã確èªããå¿ èŠãããå ŽåããããŸãã ããã§ããããã«ããç°å¢ã§ã¢ããã°ã¬ãŒããå®è¡ããå¿ èŠããããŸãã ããŒã¿ã®æ¬çªã³ããŒãå¥ã®å Žæã«é 眮ããŠãã¢ããã°ã¬ãŒããããæ°ããããŒãžã§ã³ã®ã³ã³ãããŒãæ¬çªç°å¢ã«ç§»åãããšãã«ãã¢ããã°ã¬ãŒããè¡ã£ãæ£ç¢ºãªããŒã¿ãããŠã³ãã§ããããã«ããå¿ èŠããããŸãã
ãã1ã€ã®äŸã¯ãã¹ããŒããé »ç¹ã«å€æŽããããŒã¿ããŒã¹ãOracleããããŒãžã§ã³5.6ïŒIIRCïŒã®Postgresqlã«å€æŽããSatellite/Spacewalkã§ãã
ã³ã³ããåããããã«ãã§ãœãããŠã§ã¢ã®ã¢ããã°ã¬ãŒããè¡ã£ãŠãããšãã«ãç¹ã«åæ£/ãã€ã¯ããµãŒãã¹ã䜿çšããŠäžæçã«ããŒã¿ã«ã¢ã¯ã»ã¹ããå¿ èŠãããå Žåã¯ãéåžžã«å€ãã®ã·ããªãªããããŸãã
åºæ¬çã«ã-vãã€ã³ãããŠã³ãã䜿çšããŠéåžžã®ã³ã³ãããŒãå®è¡ãã次ã«ãdocker commitããå®è¡ããããšã«ãããæåã¢ããã°ã¬ãŒããå®è¡ããå¿ èŠããããŸãã èªååãããDockerfileãã«ãã§åãæ©èœãå©çšã§ããªãçç±ãç解ã§ããŸãããïŒ
ãã£ãã·ã¥ãææãã@yngndrwã®2çªç®ïŒMavenãnpmãaptãrpmãªã©ã®å€ãã®äžè¬çãªãããžã§ã¯ãã«ãŸã£ããåãçç±ãåœãŠã¯ãŸããŸã-å ±æãã£ãã·ã¥ãèš±å¯ãããšããã«ããåçã«é«éåãããŸãããæçµçãªã€ã¡ãŒãžã«ããããšã¯ã§ããŸããã
@stevenschlanskerã«åæããŸãã ãã£ãã·ã¥ããªã¥ãŒã ãã¢ã¿ããããããã®å€ãã®èŠä»¶ããŸãã¯ããçš®ã®æ°ã®ã¬ãã€ãã®ããŒã¿ã§ããå¯èœæ§ããããŸãããããã¯ãçããŒã¿ãšããŠã§ã¯ãªããæçµã€ã¡ãŒãžã«ïŒè§£æãããç¶æ ã§ïŒååšããå¿ èŠããããŸãã
ãŸãã docker run
ã§äœ¿çšã§ããããªã¥ãŒã ããµããŒãããããã«ã docker build
ãæ¡åŒµããããšãžã®äžè²«ããæµæã«æ©ãŸãããŠããŸããã åæ§ç¯ãããã³ã«ããã±ãŒãžãªããžããªå
šäœãåããŠã³ããŒãããå¿
èŠãããå ŽåãDockerã€ã¡ãŒãžã®éçºãšå埩ãããå°é£ã§æéããããããã«èŠãããããããã¹ãã«äŸåããªããã«ããã®ãã³ãã©ãéåžžã«èª¬åŸåããããšã¯æããŸããã§ãããç»åã
ç§ã®æåã®ãŠãŒã¹ã±ãŒã¹ã¯ãéçºã®å埩ãã¹ããŒãã¢ããããããã«OSããã±ãŒãžãªããžããªããã£ãã·ã¥ããããšãããã®ã§ããã ç§ãããçšåºŠæåããŠäœ¿çšããŠããåé¿çã¯ã @ fatherlinuxã«ãã£ãŠææ¡ãããã¢ãããŒãã«äŒŒãŠããŸããããã¯ã docker build
ãšDockerfile
ã®ã¬ã¹ãªã³ã°ãå®å
šã«æŸæ£ãã docker run
ã䜿çšããŠæåããéå§ããããšã§ããæšæºã·ã§ã«ã¹ã¯ãªããã®docker commit
ãç¶ããŸãã
ã¡ãã£ãšããå®éšãšããŠãPOSIXã·ã§ã«ã¹ã¯ãªãããå°ã䜿ã£ãŠããã¯ããã¯ãdocker build
ã®æ¬æ Œçãªä»£æ¿åã«æ¡åŒµããŸããïŒ dockerize ã
ãã®ã¹ã¯ãªãããŸãã¯äžè¬çãªã¢ãããŒãããã¹ããããå Žåã¯ããããèå³æ·±ãã圹ç«ã€ãïŒãŸãã¯ããŸã£ããæ©èœãããã©ããïŒããç¥ãããã ããã 䜿çšããã«ã¯ãã¹ã¯ãªãããPATHã®ã©ããã«çœ®ãããã«ãã¹ã¯ãªããã®ã·ãã³ãšããŠè¿œå ãïŒ #!
ã®ãã®ïŒãDockerã€ã³ã¹ããŒã«ã¹ã¯ãªããã®éå§ã瀺ã2çªç®ã®ã·ãã³è¡ã®åã«é¢é£ããç°å¢å€æ°ãèšå®ããŸãã
FROM
ã RUNDIR
ãããã³VOLUME
å€æ°ã¯ãåŒæ°ãšããŠdocker run
ã«èªåçã«æž¡ãããŸãã
TAG
ã EXPOSE
ãããã³WORKDIR
å€æ°ã¯ãåŒæ°ãšããŠdocker commit
ã«èªåçã«æž¡ãããŸãã
ä»ã®ãã¹ãŠã®å€æ°ã¯ã·ã§ã«ã§è©äŸ¡ãããç°å¢åŒæ°ãšããŠdocker run
ã«æž¡ããããã«ãã¹ã¯ãªããå
ã§äœ¿çšã§ããããã«ãªããŸãã
ããšãã°ããã®ã¹ã¯ãªããã¯ãã«ãéã§Alpine Linuxããã±ãŒãžããã£ãã·ã¥ããŠåå©çšããŸãïŒVOLUMEã¯ããŒã ãã£ã¬ã¯ããªãCACHEã«ããŠã³ãããã€ã³ã¹ããŒã«ã¹ã¯ãªããã§OSã®ããã±ãŒãžãªããžããªãã£ãã·ã¥ã®ã·ã³ããªãã¯ãªã³ã¯ãšããŠäœ¿çšãããŸãïŒã
#!/usr/bin/env dockerize
FROM=alpine
TAG=${TAG:-wjordan/my-image}
WORKDIR=/var/cache/dockerize
CACHE=/var/cache/docker
EXPOSE=3001
VOLUME="${HOME}/.docker-cache:${CACHE} ${PWD}:${WORKDIR}:ro /tmp"
#!/bin/sh
ln -s ${CACHE}/apk /var/cache/apk
ln -s ${CACHE}/apk /etc/apk/cache
set -e
apk --update add gcc g++ make libc-dev python
[...etc etc build...]
ããã§ãå
é±MesoConã§Dockerãããã©ã³ã¹ã®æŽŸé£å£ã«äŒã£ãåŸïŒããã¯åã³ã®äººã§ããïŒç§ã¯åœŒãã瀟å
ã§åãåé¡ãæ±ããŠããããšã«æ°ã¥ãã圌ããå¿
èŠãªãã®ãæ°ããã¹ãªã ãªç»åã«ã³ããŒããããã¯ãéçºããŸããã
ç§ã¯ããããã³ã°ã¯äŒæ¥ã®äžçã§ã¯æè¿ãããŠãããšæããŸã;ïŒãããŠãã®èŠæ±ã¯é©åã«åŠçãããã¹ãã§ãã
èããŠãããŠããããšã...
ãŸãããã«ãæã«ãã£ãã·ã¥ãã£ã¬ã¯ããªãå
±æããããšã§ãã«ããé«éåããããã«ããã«ãæã®-v
ãã©ã°ãè¿œå ããããšã«è³æã§ãã
@yngndrw2ã€ã®é¢é£ããåé¡ãéããçç±ãããããŸããã ç§ã¯ããªãã®ïŒ59å·ãèªã¿ãŸããããããããããšã©ã®ããã«é¢é£ããŠãããããããŸããã å Žåã«ãã£ãŠã¯ãå®è¡æã«å¿
èŠããªããšãã«ã³ã³ãããè¥å€§åããããšããããŸãã æåã®æçš¿ãèªãã§ãã ããã
ããã§äœããèŠéããŠããªãããšãé¡ã£ãŠããŸã...é·ãäžæ¥ã ã£ãã®ã§ïŒ-o
@zrmlåé¡https://github.com/aspnet/aspnet-docker/issues/59ã¯ããã¹ãŠã®Dockerãã¡ã€ã«ãžã®ãã«ãäžã«dockerãæäŸããçµã¿èŸŒã¿ã®ã¬ã€ã€ãŒããšã®ãã£ãã·ã¥ã«é¢é£ããŠããŸãããããã®çŸåšã®åé¡ã¯ããã¹ãããªã¥ãŒã ã䜿çšããŠãããªã¥ãŒã ãç¹å¥ã«äœ¿çšããdockerfileã«äŸåããdockerfileåºæã®ãã£ãã·ã¥ãæäŸããããšã«ã€ããŠè©±ãåã£ãŠããŸãã åé¡https://github.com/aspnet/aspnet-docker/issues/59ã¯ãç¹ã«aspnet-dockerãããžã§ã¯ã/ãªããžããªã«é¢é£ããŠããªããããéããŸããã
ããªããèšåããŠãããšæããã1ã€ã®åé¡ã¯ã httpsïŒ//github.com/progrium/dokku/issues/1231ã®åé¡ã§ããããã¯ãçµã¿èŸŒã¿ã®Dockerã¬ã€ã€ãŒãã£ãã·ã³ã°ãæ瀺çã«ç¡å¹ã«ããDokkuããã»ã¹ã«é¢ãããã®ã§ããã Michaelã¯ããã®åäœãæ§æã§ããããã«ããããã«Dokkuã«å€æŽãå ããŸãããããã«ãããDokkuãããžã§ã¯ã/ãªããžããªã«é¢ããåé¡ã解決ãããåé¡ã解決ãããŸããã
æªè§£æ±ºã®Dockeré¢é£ã®åé¡ããŸã ååšããå¯èœæ§ããããŸãïŒã€ãŸããDockerãåé¡https://github.com/aspnet/aspnet-docker/issues/59ã§æåŸ ããããã«çµã¿èŸŒã¿ã®ã¬ã€ã€ãŒãã£ãã·ã³ã°ãåŠçããªãã£ãã®ã¯ãªãã§ããïŒãããããªãã§ãããã解æããããããŸã èµ·ãã£ãŠãããã©ããã確èªããæ©äŒããããŸããã§ããã ããã§ãåé¡ã解決ããªãå Žåã¯ããã®çŸåšã®åé¡ãšã¯ç°ãªãããããã®ãããžã§ã¯ã/ãªããžããªã®æ°ããåé¡ãæèµ·ããå¿ èŠããããŸãã
@yngndrwã¯æ£ç¢ºã«ãããã¯ç°ãªãã@ docker.comãšããŠç¥ãããŠããããšã«åæããã®ã§ããããããã°åéããŸã...ãŸããã§ããŸããã ããããã§ããïŒ
å°ãªããšãSFãéããåã«ãSFã®ååããã®ã³ã¡ã³ããããã€ãèŠããã§ãã
ãšããã§ãç§ã¯@ cpuguy83ããããŠãŒã¶ãŒã±ãŒã¹ãéããŠããã°ïŒ3156ãããã¹ãŠã説æããããã«æ±ããããŸããã
@zrmlãã©ããŒãããã©ããããããŸãã-å床éãããã®ã¯https://github.com/aspnet/aspnet-docker/issues/59ã§ããïŒ ããã¯/aspnet/ aspnet-dockerã®åé¡ã§ã¯ãªãããããã®åé¡ãå床éãã®ã¯é©åã§ã¯ãªããšæããŸãã ããã¯å®éã«ã¯/docker/ dockerã®æ°ããåé¡ã§ããã¯ãã§ãããæ€èšŒããå¿ èŠããããæåã«çæãããåçŸå¯èœãªæé ãå¿ èŠã«ãªããŸãã
ããããããæšæ¥éåºããããïŒ14080ã
ãã®åé¡ã¯ãŸã éããŠããŸããïŒ
@yngndrwèµ€ããéãããã¢ã€ã³ã³ãèªã¿ééãããšæããŸãã è¬çœªã
ãã«ãæé-vã倧ããªå©ãã«ãªãããšã«å¿ããåæããŸãã
ãã«ããã£ãã·ã³ã°ã¯1ã€ã®ãŠãŒã¹ã±ãŒã¹ã§ãã
ãã1ã€ã®ãŠãŒã¹ã±ãŒã¹ã¯ããã«ãæã«sshããŒã䜿çšããŠãã¬ã€ã€ãŒã«ä¿åããã«ãã©ã€ããŒããªããžããªãããã«ãããããšã§ããããã«ããã https ïŒ//github.com/dockito/vaultã®ãããªãããã³ã°ã®å¿ èŠããªããªããŸãã
ããã¯äŒæ¥ã®äžçã§ã¯å°çãªã®ã§ãããã§ã³ã¡ã³ãããŸãã
SSLã€ã³ã¿ãŒã»ãããããã·ããããŸããããã©ãã£ãã¯ã転éããããšã¯ã§ããŸããããããžã§ã¯ãã®ããŒãã¯ãSSLæ¥ç¶ãè¯å¥œã§ãããšæ³å®ããŠãããããã²ã©ãæ»ãã§ããŸããŸãã
ç§ã®ãã·ã³ïŒãããã£ãŠDocker BuilderïŒã¯ãããã·ãä¿¡é ŒããŠããŸãããDockerã€ã¡ãŒãžã¯ä¿¡é ŒããŠããŸããã
ããã«ææªã®ãã¹ããã©ã¯ãã£ã¹ã¯ãã³ã³ãããŒå
ã§curlã䜿çšããããšã§ããããã¯é¢åãªã®ã§ãDockerfileãå€æŽããŠãã«ãããå¿
èŠããããŸãã -vãªãã·ã§ã³ã䜿çšããŠèšŒææžãããŠã³ãã§ããæºè¶³ããŠããŸãã
ããã¯èšãããŠããŸãã Dockerã®ããã§ã¯ãªããapt-getã®åäœãšåæ§ã®ã·ã¹ãã ã䜿çšããå¿ èŠããããšãã«httpsã䜿çšããããã±ãŒãžãããŒãžã£ãŒã®ããã§ãã ããã§ãå®å šã§æ€èšŒå¯èœã§ãããhttpãããã·ã«ãã£ãŠãã£ãã·ã¥ããããšãã§ããŸãã
@btreppã¯ãå¥ã®è¯ããŠãŒã¹ã±ãŒã¹ãããããšãããããŸãã
å¥ã®ç¶æ³ãèããããŸãã
dockerfilesã§ããããããšã®1ã€ã¯ããã³ã³ãã€ã«ããããdockerfileã䜿çšããŠãã«ãããŒã«ãåºè·ããªãããšã§ãã Cã¢ããªãgccãå¿ èŠãšããçç±ããrubyã¢ããªãã€ã¡ãŒãžå ã®ãã³ãã©ãŒãå¿ èŠãšããçç±ããããŸããããçŸåšDockerãã«ãã䜿çšããŠããŸãã
ç§ãæã£ãŠããã¢ã€ãã¢ã¯ãdockerfileãæå®ããããšã§ããããã¯ãå éšã§ãã«ããããšãã«è€æ°ã®dockerã³ãã³ããå®è¡ããŸãã 以äžã®ç䌌ã£ãœãdockerfilesã
ä»ãæ§ç¯ããDockerãã¡ã€ã«
FROM dockerbuilder
RUN docker build -t docker/builder myapp/builder/Dockerfile
RUN docker run -v /app:/app builder
RUN docker build -t btrepp/myapplication myapp/Dockerfile
btrepp / myapplication dockerfile
FROM debian:jessie+sayrubyruntime
ADD . /app //(this is code thats been build using the builder dockerfile
ENTRYPOINT ["rails s"]
ããã«ããã¹ãŠã®ãã³ãã«ã€ã³ã¹ããŒã«/ããã±ãŒãžç®¡çãšãã«ãã¹ã¯ãªãããå®è¡ããäžæã³ã³ãããŒããããŸãããã©ã³ã¿ã€ã ã³ã³ãããŒãå¿ èŠãšãããã¡ã€ã«ãçæããŸãã
ã©ã³ã¿ã€ã ã³ã³ããã¯ããã®çµæãè¿œå ããã ãã§ããã€ãŸããrubyãã€ã³ã¹ããŒã«ããã ãã§æžã¿ãŸãã ããšãã°GCCãŸãã¯éçã«ãªã³ã¯ãããgoã®å Žåãå®è¡ããã®ã«ã³ã¢OSãã¡ã€ã«ä»¥å€ã®ãã®ã¯å¿ èŠãªããããããŸããã
ããã«ãããDockerã€ã¡ãŒãžãè¶ è»œéã«ä¿ãããŸãã
ããã§ã®åé¡ã¯ãäžæçãªãã«ããŒã³ã³ãããæåŸã«ãªããªãããšã§ããã€ãŸããããçš®ã®ãã£ãã·ã¥ãããŒãããæ©èœããªããšéåžžã«é«äŸ¡ã«ãªãã debianïŒjessieãäœåºŠãååŸããããšã«ãªããŸãã
ãã®ãããªç¹å®ã®ææ³ã䜿çšããŠãã人ãèŠãŠããŸããããå€éšhttpãµãŒããŒã䜿çšããŠãã«ããã¡ã€ã«ãè¿œå ããŠããŸãã ãã¹ãŠãdockerã§ãã«ããç¶ããããšæããŸãã Dockerã€ã¡ãŒãžã䜿çšããŠãããé©åã«è¡ãæ¹æ³ã¯ãããããããŸããã runã䜿çšããŠãããªã¥ãŒã ãããŠã³ãã§ããããã«ããŸãã
å¥ã®äŸã瀺ããŸãã ã«ãŒãã«ã®ãã¹ãŠã®ãããã°ã·ã³ãã«ïŒYuuuugeïŒãå«ãsystemtapã®ã³ã³ãããŒãäœæãããšããŸãã åºç€ãšãªã/lib/ modulesãããŠã³ãããŠãyumã³ãã³ããã€ã³ã¹ããŒã«ããRPMãèªèã§ããããã«ããå¿ èŠããããŸãã
ããã«ã1.5GBã®ã€ã¡ãŒãžïŒãããã°ã·ã³ãã«ããïŒä»¥å€ã®å Žæã«ããããã©ã€ãã§é 眮ãããã®ãããããŸãã
Dockerfileãæžãã«è¡ã£ããšãããäžå¯èœã ãšæ°ã¥ããŸãã:-(
docker run --privileged -v /lib/modules:/lib/modules --tty=true --interactive=true rhel7/rhel-tools /bin/bash
yum --enablerepo=rhel-7-server-debug-rpms install kernel-debuginfo-$(uname -r) kernel-devel-$(uname -r)
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
52dac30dc495 rhel7/rhel-tools:latest "/bin/bash" 34 minutes ago Exited (0) 15 minutes ago dreamy_thompson
docker commit dreamy_thompson stap:latest
ä»ã®çç±ã§ãã°ãã¯ããŒãºãããã®ã§ãããã§ïŒ3949ãããŠãŒã¹ã±ãŒã¹ãç¹°ãè¿ããããšæããŸãã
Dockerã§ãããã©ã€ãšã¿ãªãœãããŠã§ã¢ããµã³ãããã¯ã¹åãããã®ã§ããã ã©ãã«ã§ããã¹ãããããšã¯éæ³ã§ãããããŠã³ããŒãããã»ã¹ãçŸå®çã«ïŒãŸãã¯åæ³çã«ïŒèªååããããšã¯ã§ããŸããã åèšãããšãã€ã³ã¹ããŒã©ãŒã¯çŽ22GBã«ãªããŸãïŒãªãªãŒã¹ããšã«å€§ãããªããŸãïŒã ããããã«ãæã«Dockerã€ã¡ãŒãžã«ã³ããŒããå¿ èŠããããšæåŸ ããã®ã¯ã°ãããŠãããšæããŸãã
ãã®å¿
èŠãªæ©èœã«é¢ãããã¥ãŒã¹ã¯ãããŸããïŒ
ããããšãããããŸã
_USER POLL_
_ãã®ãã£ã¹ã«ãã·ã§ã³ã«å€æŽããã£ãå Žåã«éç¥ãåãåãæè¯ã®æ¹æ³ã¯ãå³äžã®[賌èª]ãã¿ã³ãã¯ãªãã¯ããããšã§ãã_
以äžã«ãªã¹ããããŠãã人ã ã¯ãã©ã³ãã ãª+1ã§ããªãã®ææ矩ãªè°è«ã«æè¬ããŠããŸãã
@vad
ãã®æ©èœã®+1ïŒ
ãã1ã€ã®ãŠãŒã¹ã±ãŒã¹ã¯ããã«ãæã«sshããŒã䜿çšããŠãã¬ã€ã€ãŒã«ä¿åããã«ãã©ã€ããŒããªããžããªãããã«ãããããšã§ããããã«ããã https ïŒ//github.com/dockito/vaultã®ãããªãããã³ã°ã®å¿ èŠããªããªããŸãã
ããã¯ç§ãã¡ã®ãŠãŒã¹ã±ãŒã¹ã§ããããŸãïŒãã®å Žåããã¹ãã§tmpfsã䜿çšããŠã¬ã³ããªã³ã°ãããsshããŒïŒã
ããã®ãã1ã€ã®äœ¿çšäŸã¯ããã«ãæéãççž®ããããã®CIãµãŒããŒäžã®node_modules
ãã£ã¬ã¯ããªã®ããŒã«ã«ãã£ãã·ã¥ã§ãã
npm install
ã¯éåžžã«é
ãã package.json
ãç»åã«ADD
ãããŠããçŸåšã®ãæè¯ã®ãã±ãŒã¹ã§ãã npm install
ãå®è¡ãããŠããpackage.json
ãžã®å€æŽã«åºã¥ããŠè¿œå ããã³æ§ç¯ãããå®éã®ãããžã§ã¯ããœãŒã¹ã¯ããã¹ãŠã®äŸåé¢ä¿ãå床ããŠã³ããŒãããå¿
èŠããããŸãã
ããŒã/npmåŽã§ã®ããã«é¢ããåé¡ã«ã€ããŠã¯ãnpm / npmïŒ8836ãåç §ããŠãã ããã
ããã±ãŒãžã®åŸ©å
ãé
ãããšãšãã¬ã€ã€ãŒã«çŸåšã®ããã±ãŒãžããã£ãã·ã¥ããçµæã®ã€ã¡ãŒãžãµã€ãºã«é¢ãããé¢é£ããaspnet-dockerã®åé¡ã ããã±ãŒãžã®ãã£ãã·ã¥ã«ã¯ãããŠã³ããããããªã¥ãŒã ã䜿çšããæ¹ãã¯ããã«åªããŠããŸãã
https://github.com/aspnet/aspnet-docker/issues/123
ããã¯èšèªåºæã®åé¡ã§ã¯ãããŸãããããã±ãŒãžãããŒãžã£ãŒãçŸåšåãå ¥ããããŠããæšæºã§ããããšãèãããšãå€ãã®äººã«åœ±é¿ããããŸãã
OPã¯ããdocker build -vãããã«ãããã»ã¹ãã©ã³ã¿ã€ã ç°å¢ããåãé¢ãã®ã«å€§ãã«åœ¹ç«ã€ãšããç¹ã§ãåé¡ãé ã«æ±ããŠããŸãã
ããã«ããªãŒããŒããŒããæ§ç¯ããããã€ãã®ãããžã§ã¯ããèŠãŠããŸããããããã®ãããžã§ã¯ãã¯ãå®éã®Dockerãæ§ç¯ããããã«äœ¿çšãããããã·ã¥/é åžãããŸãã ããã¯ã管çãšã³ã³ãã¥ãŒãã£ã³ã°ãªãœãŒã¹ã®äž¡æ¹ã®èŠ³ç¹ããéåžžã«è€éã§ãããCIãšåäœãã¹ããé ããªããå šäœçã«çç£æ§ã®äœãéçºã¯ãŒã¯ãããŒã«ãªããŸãã
ç§ã¯ããã«ã€ããŠèããŠããŸããããããŠç§ãèããããšãã§ããä»ã®ãªãã·ã§ã³ã¯ãsrcãã¬ã€ã€ãŒãšããŠã¬ã€ã€ãŒãããŒã¯ããæ©èœã§ãã
ãããã®ã¬ã€ã€ãŒã®ç·ã«æ²¿ã£ããã®ã¯ãDockerã®ãã«ãäžã«ã®ã¿ã¢ã¯ã»ã¹å¯èœã§ãããçµæã®ã€ã¡ãŒãžãã¡ã€ã«ã«ã¯ãã«ãããŸããã
ãã®ããã«ããŠãDockerã¯ä»¥åã®ã¬ã€ã€ãŒ/ã€ã¡ãŒãžãäžæçãªãã«ãã¢ãŒãã£ãã¡ã¯ãããã£ãã·ã¥ã§ããŸãããæçµçãªã€ã¡ãŒãžãå©çšããããã«ãããã¯å¿ èŠãããŸããã
äŸãã°ã
FROM ubuntu
RUN apt-get install gcc
ADDPRIVATE . /tmp/src <--these can be cached by docker locally
RUNPRIVATE make <-- basically these layers become scoped to the current build process/dockerfile
RUN make install <--result of this layer is required.
ãã¡ãããããã¯ãéèŠãªãã¡ã€ã«ãé€å€ããããšãã§ãããããèªåãäœãäžæãè¡ã£ãŠããããç¥ãå¿ èŠãããããšãæå³ããŸãã
@yngndrw
ãããã³ã¢ã®ãããªç¶æ³ã§ã®ã¯ããã«åªãããœãªã¥ãŒã·ã§ã³ã¯ãããã±ãŒãžç®¡çã«HTTPSã䜿çšããªãããšã§ãããã®åŸãDockerãã«ãçšã®ééçãªãã£ãã·ã³ã°ãããã·ãæã€ããã«iptables + squidãèšå®ããã®ã¯ç°¡åã§ããç§ã®å人çãªæèŠã§ã¯ããããã®ããã±ãŒãžãããŒãžã£ãŒã¯ã²ãŒã ã§ã¯ãsslãèŸä»»ãããããäŒæ¥ç°å¢ã§ã®äœ¿çšã¯ã²ã©ããã®ã§ãããapt-getãªã©ã¯å®å
šã«æ£åžžã«æ©èœããDockerçšã®iptables+squidã§æ¢ã«ãã£ãã·ã¥å¯èœã§ãã
ãŸãããã«ãæéããªã¥ãŒã ã䜿çšããããšã®æ¬ ç¹ãããããŸããdockerfileã¯åçŸæ§ãäœããdocker build -t btrepp / myappã®å€éšã§è¿œå ã®ã»ããã¢ãããå¿ èŠã«ãªããŸãããŸããdockerhubã§ã®èªåãã«ããå°é£ã«ãªããŸãã
@btrepp ïŒç§ã¯ããªãã®ææ¡ã奜ãã§ãã DockerãæããŠãããããŒãã³ãŒããããTMPãã£ã¬ã¯ããªã䜿çšããŠãŠãŒã¹ã±ãŒã¹ãçããããšãã§ããŸããããã«ããããã¹ãŠã®ã¬ã€ã€ãŒããæçµçãªã¢ãŒãã£ãã¡ã¯ããæ§ç¯ãããšãã«ã1ã€ãå¿ãããé€å€ãããã§ããããã«ãªããŸãã /this_is_the_tmp_explosion_folder_that_will_be_removed_from_your_final_container_imageã«ããŠã³ããããŠããŸã
ç°¡åã§ã...
@btreppç§ã¯ããªãã®ãœãŒã¹ã¬ã€ã€ãŒã®ã¢ã€ãã¢ããšãŠã奜ãã§ãã
ãã ããSSLã䜿çšããªãããã±ãŒãžãããŒãžã£ãŒã«é¢ããŠã¯ãåæããªãå¿ èŠããããŸãã
ãã®ãããªããã±ãŒãžããã£ãã·ã¥ãããå Žåã¯ãå ¬åŒãœãŒã¹ãåæ ããïŒããŒã«ã«ïŒãã©ã€ããŒãããã±ãŒãžãã£ãŒãã代ããã«äœ¿çšããå¿ èŠããããŸãã HTTPã«æ»ãããšã¯ç§ã«ã¯æªãèãã®ããã«æããŸããç¹ã«ãå€ãã®ããã±ãŒãžãããŒãžã£ãŒãããã±ãŒãžã«çœ²åããŠããªãããã§ããããããã£ãŠHTTPSã«äŸåããŠããããšãèãããšã
ãã®åé¡ããŸã ä¿®æ£ãããŠããªããšãã«äœ¿çšã§ããããŒã«grammarly/rockerããããŸãã
@yngndrw
ããŒã«ã«ãããã·ãªã©ã§ããç§ã®ãã€ã³ãã¯ãé·ãé解決ãããŠããåé¡ã§ãã ããã±ãŒãžãããŒãžã£ãŒã¯æ€èšŒã®ã¿ãå¿ èŠã§ããããã©ã€ãã·ãŒã¯å¿ èŠãããŸããã httpsã䜿çšããããšã¯æ€èšŒãæäŸããæ æ°ãªæ¹æ³ã§ããããã©ã€ãã·ãŒã®æ·»ä»ãã¡ã€ã«ãä»å±ããŠããŸãã
httpïŒsïŒãä»ããŠãã«ããŠã³ããããšãã«ããsuper_awesome_ruby_libãããã©ã€ããŒãã«ããå¿ èŠãããçç±ã¯ãããŸããã ããè¯ãæ¹æ³ã¯ãã«ããŒã®å®ç³ã«ããŒãªã³ã°ãä»ããããšã§ãã ãŸãã¯ãæ¢ç¥ã®å ¬ééµã§ãããããã±ãŒãžã«çœ²åããããã®ãã®ã§ãã ããã¯å€ããå°ãªããapt-getã®ä»çµã¿ã§ãããæšæºã®httpãããã·ãç©äºããã£ãã·ã¥ã§ããããã«ããŸãã
ããŒã«ã«ã®ãã©ã€ããŒãããã±ãŒãžãã£ãŒãã«é¢ããŠã¯ãdockerã¯ããèªäœããµããŒãããŠããŸããã æšæºãã£ãŒããç¡å¹ã«ããæ¹æ³ã¯ãããŸãããhttps蚌ææžã蚌ææžã¹ãã¢ã«ãªãå Žåã¯ã_æ£ãã_倱ãããŸãã Dockerã¯ãç»åããã«ãããšãã«ãå°ãªããšãã¡ã€ã³ãã£ãŒããåžžã«ãã§ãã¯ããããšæã£ãŠãããšç¢ºä¿¡ããŠããŸãã Afaik the rocket / rktã®å®è£ ã§ã¯ãsigning+httpã䜿çšããŠã³ã³ããã€ã¡ãŒãžãååŸããŠããŸããã
ãã«ãæéããªã¥ãŒã ã®äž»ãªåæ©ãããã±ãŒãžã®ãã£ãã·ã¥ã ãã§ããå ŽåãçŸåšã®Dockerã®èªåå/çŽç²æ§ã®äžéšãæãªãã®ã§ã¯ãªãããã£ãã·ã¥ãããé©åã«ãµããŒãããããã«ããã±ãŒãžãããŒãžã£ãŒã«å§åããããå¿ èŠããããšæããŸãã
æ確ã«ããããã«ãç§ã¯ããã±ãŒãžãããŒãžã£ãŒãhttpã䜿çšããŠhttpsãåé€ããã ãã«åãæ¿ããããšãæšå¥šããŠããŸããã äžéè æ»æãé²ãããã«ãããã±ãŒãžã®æ€èšŒãå¿ èŠã§ãã 圌ããå¿ èŠãšããªãã®ã¯ãhttpsããã»ãã¥ãªãã£ããã¹ãŠã®ã¹ã¬ããžãã³ããŒãæãŸãããæäŸãšããŠäœ¿çšãããã©ã€ãã·ãŒã®åŽé¢ã§ãã
ããã¯æ¬åœã«çãèŠéã§ãã ããªãã¯ãããã±ãŒãžãããŒãžã£ãŒã®äžçå šäœã«ãã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããšåœŒããèããæ¹æ³ã«é¢ããDockerã®èŠå®ã«åãããã«åœŒããã©ã®ããã«æ¯ãèãããå€æŽããããã«æ±ããŠããŸãã
ãã®ã¹ã¬ããã§ãããå¿ èŠãªçç±ã®äŸã¯ä»ã«ããããããããŸãã ãã¢ããªã±ãŒã·ã§ã³ã®æ§ç¯ã«äœ¿çšãããã¹ãŠã®ããŒã«ã®åäœãå€æŽããã ãã§ããããšèšã£ãŠããåé¡ã¯è§£æ±ºãããŸããããŠãŒã¶ãŒãåé¿ããã ãã§ãã
ïŒDockerã®ãããªãã¯ã¬ãžã¹ããªãžã®ã¢ã¿ããã¡ã³ãã«ã匷ãåæããŸããããããªãã¯ã¬ãžã¹ããªãžã®ã¢ã¯ã»ã¹ãçŠæ¢ããå éšã¬ãžã¹ããªã®ã¿ã䜿çšã§ããããã«ããããšã匷ãæãã§ããŸããããããããã¯ãŸã£ããå¥ã®ããŒãã§ããïŒ
ç§ã«ãšã£ãŠã¯docker build -v
ãå¿
èŠã§ãã
ãã®äŸã§ã¯ãé¢é£ãã補åã®äºåæ§æãããã€ã³ã¹ããŒã«ã§æ§æãããã€ã¡ãŒãžãæ§ç¯ããå¿ èŠããããã€ã³ã¹ããŒã©ãŒã¯2GBãè¶ ããŠããŸãã ãã¹ãããªã¥ãŒã ãããŠã³ãã§ããªãããããã¹ãOSã«æ¢ã«ããŠã³ããŒãããŠããã«ãããããããã€ã³ã¹ããŒã©ãŒã§ã€ã¡ãŒãžããã«ãã§ããŸããããã¹ãOSã«ã¯ãããŸããŸãªããŒã«/ãããã³ã«ãããšãã°https cert/authã䜿çšãããããã·ã䜿çšã§ããŸãã ããŸãã¯å€åå°ãæ¥æµã
åé¿çãšããŠã docker build
ã®éã«wgetã䜿çšããŠã€ã³ã¹ããŒã©ãŒãåããŠã³ããŒãããå¿
èŠããããŸããããã¯ãéåžžã«å¶éãããç°å¢ã§ãããå©äŸ¿æ§ãã¯ããã«äœããæéããããããšã©ãŒãçºçãããããªããŸãã
ãŸãã補åã®ã€ã³ã¹ããŒã«/æ§æãªãã·ã§ã³ã®æè»æ§ã«ãããåã«ã€ã³ã¹ããŒã©ãŒã§ã€ã¡ãŒãžãåºè·ãããããã補åããã¬ã€ã³ã¹ããŒã«ãããç¶æ ã§ã€ã¡ãŒãžãåºè·ããæ¹ãã¯ããã«çã«ããªã£ãŠããŸãã
@thaJeztahãããèµ·ããå¯èœæ§ã¯ãããŸããïŒ
ããããDockerã䜿çšããªãïŒãŸãã¯å®éã«ã¯äœ¿çšã§ããªãïŒå¯äžã®çç±ã§ãã
-vãªãã·ã§ã³ãå«ãDockerã®RedHatããŒãžã§ã³ã§ããããæäŸããŠããŸãã ããããããã«å¯Ÿããçã®è§£æ±ºçã¯ãDockerãã«ã以å€ã®OCIã³ã³ããã€ã¡ãŒãžããã«ãããããã®æ°ããããŸããŸãªæ¹æ³ãæ§ç¯ããããšã§ãã
@rhatdan RHELãŸãã¯FedoraïŒ
ãŸããresin.ioã®å éšããŒãžã§ã³ã®dockerã«dockerbuildã®-vãªãã·ã§ã³ãå®è£ ããŸããã ããã§å·®åãèŠã€ããããšãã§ããŸãhttps://github.com/resin-io/docker/commit/9d155107b06c7f96a8951cbbc18287eeab8f60cc
@rhatdan @petrosaggãã®ããã®PRãäœæã§ããŸããïŒ
@jeremyherbertãããã¯ãRHELãCentOSãããã³Fedoraã®æè¿ã®ãã¹ãŠã®ããŒãžã§ã³ã«ä»å±ããdockerããŒã¢ã³ã«å«ãŸããŠããŸã...
@graingertéå»ã«æåºããŸããããåŽäžãããŸããã
@rhatdanããªãã¯ããã«ãªã³ã¯ããããŸããïŒ
@runcoââmãªã³ã¯ã¯ãããŸããïŒ
@thaJeztahããã¯ããªããã¡ãæåŠããã§ããããã®ã§ããïŒ
ã¯ããŒãºãããããŸãã¯å¯Ÿå¿ãããŠããªãæ¢åã®åé¡ã®ãªã¹ãã¯æ¬¡ã®ãšããã§ãã
https://github.com/docker/docker/issues/3949
https://github.com/docker/docker/issues/3156
https://github.com/docker/docker/issues/14251
https://github.com/docker/docker/issues/18603
RHEL / CentOS /Fedoraã§äœ¿çšãããProjectAtomicãããã«é¢ããæ
å ±ã¯ã次ã®å Žæã«ãããŸãã
http://www.projectatomic.io/blog/2016/08/docker-patches/
@daveisferaã¯ãRWããªã¥ãŒã ã§ã¯ãªãRããªã¥ãŒã ã®ã¿ãè¿œå ããããã«èŠããããã @yngndrwãšç§ã®ãŠãŒã¹ã±ãŒã¹ã§ã¯æ©èœããŸããã
@graingertãªãRWããªã¥ãŒã ãå¿ èŠãªã®ã§ããïŒ ç¹å®ã®å Žåã®åé¿çãšããŠãèªã¿åãå°çšãç解ããŠããŸãã
ã¹ããŒãã®ç§»è¡ããã¹ãããããšã¯ã1ã€ã®æ£åœãªçç±ã§ã...
2016幎11æ1æ¥åå10æ36åããã©ã€ã¢ã³ãŽãã¯æ¬¡ã®ããã«æžããŠããŸãã
@graingert https://github.com/graingertãªãRWããªã¥ãŒã ãå¿ èŠãªã®ã§ããïŒ
ç¹å®ã®å Žåã®åé¿çãšããŠãèªã¿åãå°çšãç解ããŠããŸããâ
ããªããèšåãããã®ã§ãããªãã¯ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/docker/docker/issues/14080#issuecomment -257582035ã
ãŸãã¯ã¹ã¬ããããã¥ãŒãããŸã
https://github.com/notifications/unsubscribe-auth/AAHLZdp0D6fAtuNglajPBIwnpWGq3slOks5q5050gaJpZM4FIdOcã
ã¹ã³ããããã«ãŒãã£
ã¹ã³ããã [email protected]
@fatherlinux
@cpuguy83RWã®ãã1ã€ã®ãŠãŒã¹ã±ãŒã¹ã¯ccacheã§ã
@fatherlinuxãã©ããŒãããã©ããããããŸããã ãªãããã«ããªã¥ãŒã ãå¿ èŠãªã®ã§ããïŒ ãŸãããªããã«ããã§ãŒãºã§å®è¡ããå¿ èŠãããã®ã§ããïŒ
ãã®æ©èœã®äœ¿çšäŸã¯å°ãç°ãªããŸããASP.Net5ããã±ãŒãžãããŒãžã£ãŒã«ãã£ãŠããŠã³ããŒã/æŽæ°ãããããã±ãŒãžããã£ãã·ã¥ããŸãã ããã±ãŒãžãããŒãžã£ãŒã¯ç¬èªã®ãã£ãã·ã¥ãã©ã«ããŒã管çãããããæçµçã«ã¯ãã«ãéã§åå©çšã§ãããã©ã«ããŒãå¿ èŠã«ãªããŸãã
ããšãã°ãããŠã³ãããã€ã³ãããŸãã
docker build -v /home/jenkins/pythonapp/cache/pip:/root/.cache/pip -t pythonapp .
docker build -v /home/jenkins/scalaapp/cache/ivy2:/root/.ivy2 -t scalaapp .
ã¹ããŒãã®ç§»è¡ã¯ã次ã®å Žåã«å®è¡ããå¿
èŠãããããšãå€ãããã§ãã
ãœãããŠã§ã¢ãã€ã³ã¹ããŒã«ãããŸãã èªã¿åãå°çšã³ã³ãããå®è¡ããå Žåã¯ã
ã«ãããšã以å€ã¯ãœãããŠã§ã¢ãã€ã³ã¹ããŒã«ããªãã§ãã ãã
ãã«ããã§ãŒãº....ã
2016幎11æ1æ¥åå10æ42åããã©ã€ã¢ã³ãŽãã¯æ¬¡ã®ããã«æžããŠããŸãã
@fatherlinuxhttps ://github.com/fatherlinuxãã©ããŒãããã©ããããããŸããã
ãªãããã«ããªã¥ãŒã ãå¿ èŠãªã®ã§ããïŒ ãŸãããªããããäžã«è¡ãããªããã°ãªããªãã®ã§ããïŒ
ãã«ããã§ãŒãºïŒâ
ããªããèšåãããã®ã§ãããªãã¯ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/docker/docker/issues/14080#issuecomment -257583693ã
ãŸãã¯ã¹ã¬ããããã¥ãŒãããŸã
https://github.com/notifications/unsubscribe-auth/AAHLZfhBG8RUWtqPD-6RaLC7uoCNc-3nks5q50_TgaJpZM4FIdOcã
ã¹ã³ããããã«ãŒãã£
ã¹ã³ããã [email protected]
@fatherlinux
ãã®ãã£ã¬ã¯ããªã®å 容ã«ãã£ãŠãã«ãããã¹ãã«äŸåããããšã¯ãªãããšãç§ã¯ç¥ã£ãŠããŸãïŒãããã®ããŠã³ãããªããšããã«ãã¯ãšã«ããåäœããŸãããé ããªããŸãïŒ
NFSã¯30幎åã®ããã«ããã解決ããŸãã...
2016幎11æ1æ¥åå10æ45åãããŒãã¹ã»ã°ã¬ã€ã³ãžã£ãŒã¯æ¬¡ã®ããã«æžããŠããŸãã
ãã®ãã£ã¬ã¯ããªã®å 容ããã«ããåæ¢ããªãããšãç§ã¯ç¥ã£ãŠããŸã
ã¹ãçãŸãã¯ãã¹ãã«äŸåããŠããïŒãããã®ããŠã³ããæ¬ èœããŠãããšã
ãšã«ããåäœãããã«ãïŒâ
ããªããèšåãããã®ã§ãããªãã¯ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/docker/docker/issues/14080#issuecomment -257584576ã
ãŸãã¯ã¹ã¬ããããã¥ãŒãããŸã
https://github.com/notifications/unsubscribe-auth/AAHLZS75Vq0BSEvUjI2oXORsS0el2mwOks5q51CQgaJpZM4FIdOcã
ã¹ã³ããããã«ãŒãã£
ã¹ã³ããã [email protected]
@fatherlinux
NFSã¯30幎åã®ããã«ããã解決ããŸãã...
圹ã«ç«ããªãã³ã¡ã³ã
@graingertç³ãèš³ãããŸããããããã¯æ·±å»ã«ééã£ãŠããŸããã ç§ã¯ããŸãã«ãè¿ éã«å¯Ÿå¿ããããšããŠããŠãååãªã³ã³ããã¹ããæäŸããŠããŸããã§ããã çå£ã«ãç§ãã¡ã¯ãããã®ã¿ã€ãã®åé¡ã®ããã€ãã解決ããããã«CRIOãšçµã¿åãããNFSãæ€èšããŠããŸãã
ã€ã¡ãŒãžã¬ãžã¹ããªãšbuldã®äž¡æ¹ã«ãå€ãã®å ±éç¹ããããŸãã ããªãã話ããŠããã®ã¯åºæ¬çã«ãã£ãã·ã³ã°ã®åé¡ã§ãã NFSãç¹ã«çµã¿èŸŒã¿ã®ãã£ãã·ã³ã°ã«ããããã«ãããã¹ãã«äŸåããããã¹ãŠã®ãã£ãã·ã³ã°ãåŠçã§ããŸãã
ãããã£ãŠã-vãã«ãæéãªãã·ã§ã³ã䜿çšããŠãããã«ãã1ã€ã®ãã¹ãã®ã¿ã«ããã¯ããå¿ èŠã¯ãããŸããã ã€ã³ã¿ãŒãããã®èŠæš¡ã«äŸåããªãå ŽåããããŸããããã«ãç°å¢ãåäžã®ãµã€ããŸãã¯å Žæã«å¶åŸ¡ããå€ãã®äººã«ãšã£ãŠã¯ååã§ãã
@fatherlinux gitlabãŸãã¯travisãã£ãã·ã³ã°ã䜿çšããŠããã£ãã·ã¥ãã£ã¬ã¯ããªãååŸããS3ã«ã¢ããããŒã/ããŠã³ããŒãããŸãã
@graingertããããããããã¯ç¹å®ã®ã¿ã€ãã®ããŒã¿/ã¢ããªã§ã®ã¿æ©èœãããŸããã±ããã¬ãã«ã§ã®ã¿æ©èœããposixã¡ã¿ããŒã¿ãšãããã¯ã¬ãã«ã§ã¯æ©èœããŸããã certianã¿ã€ãã®ããã³ããšã³ãããã³ããã«ãŠã§ã¢ã¢ããªã®å Žåãåé¡ãããŸããã ããŒã¿ããŒã¹ã¹ããŒãã®ç§»è¡ã§ã¯ãäºåã«ãã¹ããè¡ããé床ãäžããããã«ãã£ãã·ã¥ãããŒã«ã«ã«ããå¿ èŠããããŸããéåžžããã£ãã·ã¥ã¯posixã§ããå¿ èŠããããŸãã
1TBã®ããŒã¿ãå«ãMySQLGaleraã¯ã©ã¹ã¿ãŒããããã¢ããã°ã¬ãŒããå®è¡ããããšããŸãããããã¯ãã¹ãŠã³ã³ãããŒå ã«ãããŸãã ã³ã³ããå/ãªãŒã±ã¹ãã¬ãŒã·ã§ã³ããããã«ãããŒããã·ã£ãŒãã£ã³ã°ãããã¬ã¬ã©ã¯æ¬åœã«äŸ¿å©ã§ãã ã¢ããã°ã¬ãŒãã®ãã³ã«ã¹ããŒãã®ç§»è¡ãæåã§ãã¹ãããå¿ èŠã¯ãããŸããã
ããŒã¿ããªã¥ãŒã ïŒKube Worldã§ã¯pvïŒã®ã¹ãããã·ã§ãããäœæãããã«ããµãŒããŒã«å ¬éããŠãããã¢ããã°ã¬ãŒããšã¹ããŒãã®ç§»è¡ããã¹ãããŸãã ãã¹ãŠãæ£åžžã«æ©èœãããã¹ãã«åæ Œããå Žåã¯ãæ¬çªã³ã³ãããæ§ç¯ããæ¬çªç°å¢ã§ã¹ããŒãã®ç§»è¡ãå®è¡ããŸãã
@graingertç³ãèš³ãããŸããããè¿œå ããã®ãå¿ããŠããã¹ãå®è¡ã§äœ¿çšãããã¹ãããã·ã§ãããç Žæ£ããŸã...ãã«ãã€ãã³ããšãã¹ãã€ãã³ããå¥ã ã«ãªãŒã±ã¹ãã¬ãŒã·ã§ã³ããããããŸããããããã¯å¯èœã§ã...
@fatherlinuxããã¯çŽäº€ãããŠãŒã¹ã±ãŒã¹ã ãšæããŸã...
@graingertã¯æçšãªã³ã¡ã³ãã§ã¯ãããŸããã äœã«çŽäº€ããŸããïŒ ãã«ãäžã®-vã®èŠæ±ã«çŽäº€ããŸããããã¯ããã®äŒè©±ã®å 容ã§ãããšç§ãç解ãããã®ã§ããïŒ
ãã®ãã©ã°ã«ã¯ããã€ãã®ç°ãªãçšéããããŸãã
åŸã®2ã€ã®ãŠãŒã¹ã±ãŒã¹ã¯ã2ã€ã®æ°ããããŒã¯ãŒãã䜿çšããŠããæ確ã«è§£æ±ºã§ããŸãã
BUILDCONSTFILE <path>
åå®è¡ã®åã«COPY <path>
ãå®è¡ããå®è¡åŸã«<path>
ãã€ã¡ãŒãžããåé€ããŸãã
TEST <cmd> WITH <paths>
ãã¹ãã³ããŒããŠã³ãã³ããå®è¡ããçµäºã¹ããŒã¿ã¹ã0ã®å Žåã芪ã€ã¡ãŒãžãããã«ããç¶è¡ããŸãããã以å€ã®å Žåã¯ããã«ããåæ¢ããŸãã
å人çã«ã¯ãTEST ... WITHã¯ãã³ã³ãããŒå šäœããã¹ãããå¥ã®CIã¹ãããã§ããé©åã«åŠçããããšæããŸãã
ã¯ããã«ïŒç§ã¯ãã«ãã«--mount
ãè¿œå ããŠã倧äžå€«ã ãš_æããŸã_ïŒ "-v"ã¯ããããããã»ã©å€ãã¯ãããŸããïŒã å®è£
ããã£ãã·ã³ã°ãã©ã®ããã«åŠçããããïŒãŸãã¯åŠçãããªããïŒãªã©ã«ã€ããŠ100ïŒ
確å®ã§ã¯ãããŸããã
Dockerãããžã§ã¯ãã®å Žåããã«ããŒã€ã¡ãŒãžããã«ãããŸãã
åºæ¬çã«å¿
èŠãªãã®ã¯ãã¹ãŠæã£ãŠãããã³ãŒããã³ããŒããŸãããå®éã«ã¯Dockerããã«ãããŸããã
ããã調æŽããMakefile
ããããŸãã ãããã£ãŠã make build
ã¯ã€ã¡ãŒãžããã«ããã make binary
ã¯äŸåé¢ä¿ãšããŠbuild
ã䜿çšããŠãã€ããªããã«ãããŸãã
ãã€ããªãäœæãããšããã«ãã€ã¡ãŒãžãå®è¡ããããã«ããå®è¡ãããŸããããã«ãããã€ã³ã¯ãªã¡ã³ã¿ã«ãã«ãã®ããã±ãŒãžãã£ãã·ã¥ãªã©ãå¿
èŠãªãã®ã«ããŠã³ãã§ããŸãã
ããã®ã»ãšãã©ã¯éåžžã«åçŽã§ãç°¡åã«èª¿æŽã§ããŸãã
ãããã£ãŠãä»æ¥ãã®ã±ãŒã¹ãåŠçããæ¹æ³ã¯ç¢ºãã«ãããŸããDockerã ãã§ã¯100ïŒ
åŠçã§ããïŒããã¯å¿
ãããæªãããšã§ã¯ãããŸããïŒãCIã·ã¹ãã ã§ãããæ©èœãããå¿
èŠããããŸãã
@cpuguy83ããã¯ç§ã®ãŠãŒã¹ã±ãŒã¹ã®ã»ãšãã©ãéä»ãã«ããã ãããšæããŸãã ç§ãç解ããŠããããã«ã--mountã¯èªã¿åãå°çšãæå³ããŸããïŒ ããã³-vãèªã¿åã/æžã蟌ã¿ããŸããïŒ
@ cpuguy83ãŸããç§ãã¡ã¯äž»ã«ãIMHOããŸããŸãäžè¬çãªãã¿ãŒã³ã«ãªãã€ã€ããããã«ããŒãã€ã¡ãŒãžãæ§ç¯ããŠããŸã...
@fatherlinux swarm servicesããã³çŸåšïŒ1.13ã®å ŽåïŒ docker run
ã¯ãã¯ããã«æ£ç¢ºã§æè»ãª--mount
ããµããŒãããŠããŸãïŒ https ïŒ//docs.docker.com/engine/reference/commandline/service_create/#
ããã¥ã¡ã³ãã«3çªç®ã®ã¿ã€ãã®ããŠã³ãtmpfs
ããªãããã§ãã
ããããšãŠããã£ããããããããšã...
2016幎11æ1æ¥ååŸ2æ20åããã©ã€ã¢ã³ãŽãã¯æ¬¡ã®ããã«æžããŠããŸãã
@fatherlinux https://github.com/fatherlinux swarm services and now
ïŒ1.13ã®å ŽåïŒ| docker run | |--mount|ããµããŒãããŸãããã¯ã¯ããã«æ£ç¢ºã§ã
æè»ïŒ
https://docs.docker.com/engine/reference/commandline/service_create/#/add -bind-mounts-or-volumesããã¥ã¡ã³ãã«3çªç®ã®ã¿ã€ãã®ããŠã³ã|tmpfs|ããªãããã§ãã
â
ããªããèšåãããã®ã§ãããªãã¯ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/docker/docker/issues/14080#issuecomment -257648598ã
ãŸãã¯ã¹ã¬ããããã¥ãŒãããŸã
https://github.com/notifications/unsubscribe-auth/AAHLZXv_VBfVi4WUAjVijE-SKR0ErRC4ks5q54L2gaJpZM4FIdOcã
ã¹ã³ããããã«ãŒãã£
ã¹ã³ããã [email protected]
@fatherlinux
@ cpuguy83ãã«ããŒãã¿ãŒã³ãé »ç¹ã«äœ¿çšããŠãããç»åã«ä¿æããããã¬ã€ã€ãŒã®ç¡å¹åã«ãèãããããã£ãã·ã¥ãå¿ èŠã§ãã
Yoctoã€ã¡ãŒãžãæ§ç¯ããNFSã¹ãã¬ãŒãžã«å
±æsstateãã£ãã·ã¥ããããŸãã ãã1ã€ã®ãŠãŒã¹ã±ãŒã¹ã¯npmãã£ãã·ã¥ã§ããããã«ããã RUN npm install
ã¬ã€ã€ãŒå
šäœãç¡å¹ã«ã§ããŸãããããã±ãŒãžããã£ãã·ã¥ããããããããé«éã«åèšç®ã§ããŸãã
@graingertã®æçš¿ã«åºã¥ãèãããã劥åæ¡ãšããŠãdockerfileã«å·šå€§ãªãã¡ã€ã«ã®ãªãã·ã§ã³ã®ããã·ã¥ãå«ããããšãã§ãããdockerã¯ãã«ãã®å®è¡æã«ããããã§ãã¯ããŸããïŒ ãã®å Žåã決å®è«çãã«ãã«åé¡ã¯ãªããããæç¹ã§å¥åŠãªãšã©ãŒã§ççºããã®ã§ã¯ãªãããã«ããã人ã«ãšã£ãŠå¿ èŠãªäŸåé¢ä¿ããªãããšã¯æããã§ãã ãšã«ããdockerfileãšäžç·ã«é åžããå¿ èŠãããsshããŒãªã©ã«ãåãããšãèšããŸãã
ãŸãã巚倧ãªãã¡ã€ã«ã®_ã³ããŒ_ãå¿ èŠãšããã¢ã€ãã¢ã¯çæ³çã§ã¯ãªããšæããŸãã ç§ã䜿çšããããã¡ã€ã«ãµã€ãºã¯10ã40 GBã®ãªãŒããŒã§ãããåªããssdã䜿çšããŠããå°ãªããšã1ã2åã¯ã³ããŒãã䟡å€ããããŸãã ããã¯ãDockerã«ãã§ã«ããADDãã£ã¬ã¯ãã£ãã«é¢ããç§ã®åé¡ã§ãã ã€ã¡ãŒãžããã«ãããããã³ã«30GBãè¿œå ããããªãã®ã§ãäœåãªç©ºãé åããã¹ãŠç¢ºä¿ããã€ã¡ãŒãžã朰ãå¿ èŠããããŸãã
ããã䜿çšããŠããç®çã§ã¯æ©èœããŸããã ãã£ãã·ã¥ãã¹ã¯ãã«ãäžã«èšç®ãããå°æ¥ã®ããã«sstateã«ä¿åãããããããã«ãã§ãã€ã³ãããŠã³ããããRWã§ããyoctoãã«ãã·ã¹ãã ããã®sstateãã£ãã·ã¥ãå«ãããªã¥ãŒã ããããŸãã ç§ãã¡ã®ãã£ã¬ã¯ããªãçŽ30GBãªã®ã§ãããã·ã¥ã®èšç®ã§ããæéãããããŸãã
決å®è«çãªãã«ãã®æŠå¿µãç解ããããšã¯ãããŸããã ä»æ¥ã®ã»ãã³ãã£ã¯ã¹ã§ããèªåã®è¶³ãæã€æ¹æ³ããããŸãã ããšãã°ãå
éšIPããcurl
äœããååŸã§ããŸãã çªç¶ããã®Dockerfileã¯ã©ãã§ãæ©èœããªããªãããã¹ãã«äŸåããŸãã ãããããªãããªããããããããã®ããšããæ£åœãªã±ãŒã¹ããããŸãã ããšãã°ãããŒã«ã«HTTPãã£ãã·ã¥ã
ãã«ãã¯ãšã«ãã決å®è«çã§ã¯ãªããä»æ¥ã®ãããã¯ãŒã¯äžã§ãã€ã³ãããŠã³ããããããªã¥ãŒã ããšãã¥ã¬ãŒãã§ããã®ã§ãå¿ èŠã«å¿ããŠé©åãªèŠåã衚瀺ãããã€ãã£ããªæ¹æ³ãæäŸããŠã¿ãŸãããïŒ
@petrosagg @zrml @thaJeztahç§ãã¡ãç¥ã£ãŠããããšã¯ïŒ
Dockerfile syntax is frozen
ã³ã¡ã³ãããããŠHEALTHCHECK
åœä»€ãè¿œå ãããåŸãããªãŒãºã¯åé€ãããŸããããåé¡ã¯ã¯ããŒãºããããŸãŸã§ããïŒç§ãã¡ãç¥ã£ãŠããããšããã¹ãŠèãããšãããã¯DupeãŸãã¯WontFixã®ãããããšããŠã¯ããŒãºãããå¯èœæ§ãé«ããšæããŸãã ç§ãã¡ãã©ã®ãããªãŠãŒã¹ã±ãŒã¹ãæäŸãããã¯åé¡ã§ã¯ãªãããã§ãã æŽæ°ïŒããã§ééã£ãŠããããšãå¬ããæããŸãã ææ¡ã¯ãªãŒãã³ã«èŠããŸã:)
åœç€Ÿã¯äžå¯ç¥è«çãªã³ã³ããã©ã³ã¿ã€ã ã«ç§»è¡ãããŸããªãäžå¯ç¥è«çãªã€ã¡ãŒãžæ§ç¯ãšã¯ã¹ããªãšã³ã¹ã«ã移è¡ããå¿ èŠããããŸãã ããããåŠå®æ§ã¯åœ¹ã«ç«ããªãã®ã§ãããã¯ãããè°è«ããã®ã«é©åãªå Žæã§ã¯ãããŸããã ããã¯å¥ã®æçš¿ã§ããå¿ èŠããããŸãã
@rdsubhasã¯ãå®äºããããªã³ã¯ãå ±æããããšã«æ°ãé ã£ãŠããŸããïŒ
@rdsubhasããã¯çŽ æŽãããèŠçŽã§ãã @ cpuguy83ã¯ãã»ãšãã©ã®ãŠãŒã¹ã±ãŒã¹ãã«ããŒãããã«ãäžã«--mount
ãè¿œå ããŠãåé¡ãªããšèããŠããããããã®ã¹ã¬ããã¯dupe/wontfixãšããŠéããããããã«ã¯èŠããŸããã
ç§ãç¥ãããã®ã¯ãçŸåšã®ææ¡ãäžããããŠããããšã§ãïŒ
ã¢ã€ãã¢ã«é¢ããŠæ®ãããåè«ã¯ã©ãã§ããïŒ ãªãå Žåã¯ã --mount
ã¡ã«ããºã ã®å®è£
ã®è©³çŽ°ã«ã€ããŠè©±ãåãå¿
èŠããããŸãã
ãã«ãã¯ãã§ã«ãã¹ãã«äŸåããŠãããåçŸã§ããªããšããè°è«ã匷åããããã«ããã®ããããã£ãæã€Dockerfileãã©ã°ã¡ã³ãã®ãªã¹ããæäŸããŸãã
# Install different software depending on the kernel version of the host
RUN wget http://example.com/$(uname -r)/some_resource
# example.intranet is only accessible from specific hosts
RUN wget http://example.intranet/some_resource
# get something from localhost
RUN wget http://localhost/some_resource
# gcc will enable optimizations supported by the host's CPU
RUN gcc -march=native .....
# node:latest changes as time goes by
FROM node
# ubuntu package lists change as time goes by
RUN apt-get update
# install different software depending on the docker storage driver
RUN if [ $(mount | head -n 1 | awk '{print $5}') == "zfs" ]; then .....; fi
æ£çŽãªãšããã --mount
ãè¿œå ããŠããŠãŒã¶ãŒã«ãã£ãã·ã¥ã®ç¡å¹åïŒ --no-cache
ïŒãåŠçãããã ãã§ãåé¡ã¯ãªããšæããŸãã CLIããã®ãããã现ãããã£ãã·ã¥å¶åŸ¡ãããã¹ãŠãŸãã¯äœããªããããèŠãããšæããããããŸããããããã¯å¥ã®ãããã¯ã§ãã
ç§ã¯ãã°ããã®éåæ§ã®åé¡ã«çŽé¢ããŠããŸããã解決çãå®æãããŸã§ç»åã®ãµã€ãºã倧ããããããšãéžæããŸããã 誰ããããè¯ãåé¿çãèŠã€ããå Žåã«åããŠãããã§ç§ã®ã·ããªãªã説æããããšæããŸãã
--build-arg
ã䜿çšããŠããã«ãäžã«ããŒã¯ã³ãæž¡ããŸãïŒåŒ·ããå§ãããŸããïŒã ããã¯ãè¿œå ã®æé ãªãã§ãæ©èœããããããéåžžã«é
åçã§ç°¡åãªãªãã·ã§ã³ã§ããADD
ãšCOPY
ã¯å¥ã
ã®ã¬ã€ã€ãŒã§å®è¡ããããããåã®ã¬ã€ã€ãŒã®ããŒã¿ã§è¡ãè©°ãŸããŸããäžéšã®ç»åã®ãµã€ãºã2å以äžã«ãªãå ŽåããããŸãããçŸæç¹ã§ã¯å
šäœã®ãµã€ãºã¯èš±å®¹ç¯å²å
ã§ãã ãã«ãå±¥æŽãããã«ãæéåŒæ°ãåé€ããPRïŒç§ã¯ãããèŠã€ããããšãã§ããªãããã§ãïŒããã£ããšæããŸããããã£ãã·ã¥ã®æžå¿µirrcã®ããã«åãå
¥ããããŸããã§ããã
ä»ã®åé¿çã䜿çšãããŠãããšèããŠããããã§ãã
@misakwa1.14ã®ãã«ãã§ã·ãŒã¯ã¬ããããµããŒãããå¯èœæ§ããããŸãã
@cpuguy83ãèããŠãšãŠããšããµã€ãã£ã³ã°ã§ãã çºå£²ææã«æ³šç®ããŸãã ããã¯ééããªãç§ã®ã¯ãŒã¯ãããŒã®ããã€ããåçŽåããã§ãããã
1.14ã§ã®ãã«ãã§ã·ãŒã¯ã¬ããããµããŒãããå¯èœæ§ããããŸãã
yarn-cache
ãªã©ã®ä»ã®ã¿ã€ãã®ããªã¥ãŒã ã®ãã«ãæãããã³ã°ã®ãããã³ã°ã«ãæ©èœããŸããïŒ
ãšããã§ãdocker-composeã䜿çšããŠãããã¯ã·ã§ã³ã€ã¡ãŒãžãæ§ç¯ããèå³æ·±ãæ¹æ³ããããŸããç§ã¯ãããæ©èœããéåžžã«å¹æçã§ããããšãããããŸããã
ãããã£ãŠã次ã®ãããªãã¡ã€ã«docker-compose.build.yml
ãäœæããŸãã
services:
my-app:
image: mhart/alpine-node:7.1.0
container_name: my-app-build-container # to have fixed name
volumes:
- ${YARN_CACHE}:/root/.cache/yarn # attach yarn cache from host
- ${HOME}/.ssh:/.ssh:ro # attach secrets
- ./:/source
environment: # set any vars you need
TEST_VAR: "some value"
ports:
- "3000"
working_dir: /app/my-app # set needed correct working dir even if if doesn't exist in container while build type
command: sh /source/my-app.docker.build.sh # build script
1ïŒdockercomposeã䜿çšããŠã³ã³ãããŒãæ§ç¯ããŸãã
$ docker-compose -f docker-compose.build.yml up --force-recreate my-app
ã³ã³ãããäœæããã·ã§ã«ãã«ãã¹ã¯ãªããmy-app.docker.build.sh
ãå®è¡ããŸããç§ã¯ã Dockerfile
ã䜿çšããããã«ãã¹ã¯ãªããã§ãã¹ãŠãå®è¡ããŸãã
/source
ãã©ã«ããŒããïŒæ¬¡ã«ãã³ã³ãããŒããã€ã¡ãŒãžãäœæããã¿ãŒã²ããç°å¢ã§å®è¡ããå¿ èŠãããCMDã眮ãæããŸãã
docker commit -c "CMD npm run serve" my-app-build-container my-app-build-image:tag
ããã§ãã€ã¡ãŒãžã®æºåãæŽãããã«ãæã«ã®ã¿äœ¿çšã§ããå€éšã€ãŒã³ãã£ãã·ã¥ãšå€éšã·ãŒã¯ã¬ããããŒã䜿çšãããŸãã
@whitecolorãããåäœããŸã:) 1ã€ãé€ããŠïŒ docker build
ã¯ããã«ãã³ã³ããã¹ãã®ã¢ããããŒãã«éåžžã«å¹æçã§ãã ããŠã³ãããããœãŒã¹ããªã¥ãŒã ã¯ãæ®å¿µãªãããªã¢ãŒãã®DockerããŒã¢ã³ã§ã¯æ©èœããŸããïŒããšãã°ãäœé»å/垯åå¹
ã®ã©ãããããçšã®ã¯ã©ãŠãäžã®Dockerãã·ã³ïŒã ãã®ããã«ã¯ãé¢åãªdocker run
ã docker cp
ã docker run
ãªã©ã®äžé£ã®Dockerã³ãã³ããå®è¡ããŠãããæçµçãªã€ã¡ãŒãžã®ã¹ãããã·ã§ãããäœæããå¿
èŠããããŸãããå®éã«ã¯ããããŒã§ãã
ãããDockerãã«ãã®æ£åŒãªéšåã«ããã¬ã€ã€ãŒåãšãã«ãã³ã³ããã¹ãã䜿çšããããšã¯æ¬åœã«åœ¹ç«ã¡ãŸãð
@rdsubhasã¯ããããªãã¯æ£ããã§ã
@whitecolorããã¯æ¬åœã«ã·ã³ãã«ã§å¹æçãªè§£æ±ºçã§ãã ãããžã§ã¯ãã®ãã«ãã30ã40åã§çŽ5åã«ççž®ããŸããã --mount on buildæ©èœãæã€å¯èœæ§ã楜ãã¿ã«ããŠããŸãããä»ã®ãšããããã®ãœãªã¥ãŒã·ã§ã³ã¯å®éã«ç§ã®ãã€ãã©ã€ã³ã®ãããã¯ã解é€ããŸãã
ããã¯ãç§ãåé¡ïŒ17745ã«æ®ããã³ã¡ã³ãã§ãããã¯ããŒãºããããšç解ããŠããŸããããéè€ãšã¯ããŒã¯ãããŠããŸããã§ããã åŸè ã®ç¹ã«ã€ããŠã¯ééã£ãŠããããã§ããBugzillaã®ããã«ãäœãããRESOLVED DUPLICATEããšããŠæ瀺çã«ããŒã¯ãããã°ã®äžéšã®èª¬æé åã«è¡šç€ºããã·ã¹ãã ã«æ £ããŠããããšãèªããŸãã ç§ã¯æ°ã«ããªãèªè ã§ãã ïŒããã§ãç§ã®è¬çœª@graingert ãç§ã¯ç¥ãæ¹æ³ãã»ãšãã©ãªãã£ãã®ã§ã20ptãã©ã³ãã§ç§ã«æ鳎ãå¿ èŠã¯ãããŸãã-ããã¯é床ã§ãããïŒ
ç§ã®å Žåãããã圹ç«ã€ã®ã¯Debianã·ã¹ãã ã§ããããªã¥ãŒã ãšããŠ/var/cache/apt
ãããŠã³ãããã®ã§ãåã.debãã¡ã€ã«ãäœåºŠãåããŠã³ããŒãããå¿
èŠã¯ãããŸããã ïŒç¹ã«ãããªãŒã¹ãã©ãªã¢ã§ã¯ãæ¬åœã«ãç¡å¶éãã®ã€ã³ã¿ãŒãããå²ãåœãŠã¯ååšããŸãããååšãããšããŠããããŠã³ããŒããåŸ
ã€ã®ã«ç¡é§ãªæéããããŸããïŒ
ãŸãã¯ãå¥ã®ã·ããªãªã§ã¯ããã«ããå®è¡ããŠããŸãããé害ãªã¹ããã³ãŒãã«ãã¬ããžã¬ããŒããªã©ã®ãã¹ãã¬ããŒããçæãããŸãããããã¯ãã€ã¡ãŒãžãšäžç·ã«åºè·ããå¿ èŠã¯ãããŸããããæå ã«çœ®ããŠãããšäŸ¿å©ãªã¢ãŒãã£ãã¡ã¯ãã§ãã ãããã¯ãCIãµãŒããŒãCIãµãŒããŒãååŸããŠãã¹ãããããã®ã€ã¡ãŒãžãæ§ç¯ãããšãã«ãããªã¥ãŒã ã«æžã蟌ãããšãã§ããŸãã
ãŸãã¯ä»å€ãGentooããŒã¹ã®ã€ã¡ãŒãžãèªåã§äœæããŠããŸãããã¹ããã/usr/portage
ãããŠã³ãããããšæããŸãã Dockerfile
ããããªã¥ãŒã ãããŠã³ãããã«å®è¡ããŠãããšãã«ããããã /usr/portage
ïŒã³ã³ããå
ïŒã空ã§ããåé¡ãããŸããããšæ°ä»ãã®ã¯é£ãããããŸãããããªã¥ãŒã ããã®ãŸãŸäœ¿çšãããããæ°ããã³ããŒãååŸããæéãç¯çŽã§ããŸãã
ãããã®ã¹ããŒããè¿œå ããããšã¯ãBourneã·ã§ã«ã¹ã¯ãªããã®ifã¹ããŒãã¡ã³ãã§ç°¡åã§ãâŠããªã¥ãŒã ãããŠã³ãããããã®åºç€ãšãªãããžãã¯ãæåã«ååšããå Žåã çŸåšãGentooã€ã¡ãŒãžã®å Žåããã«ããå®è¡ãããã³ã«/usr/portage
ããã«ããå¿
èŠããããŸãïŒå¹žãããã©ãŒã¯LANäžã«ãããŸãïŒãã€ãŸãããã®1ã€ã®ã¹ããããå®äºãããŸã§æ°ååŸ
ã€å¿
èŠããããŸãã
ããã䟡å€ã®ããææ¡ã§ããçç±ã¯ãããããããŸããïŒ7115ã§ææ¡ããããã¹ãããããã«ããäžèšã®å Žåã«åœ¹ç«ã€ãã©ããã¯çãããã§ãã
@whitecolorã«ã¯èå³æ·±ãã¢ãããŒãããããŸãããããããå Žåã¯ãDockerã·ã¹ãã ã®å®å
šã«å€éšã«ããMakefile
ã䜿çšããŠãã«ããå®è¡ããããšãã§ããŸãã
@sjlongââlandç§ã¯ããªãã«æ鳎ã£ãŠããŸããã§ãããç§ã¯å€§ããªã解決ãããéè€ãéç¥ãããªãã£ã«ããŠããŸãã
ç§ã¯dockerãšdocker-composeã䜿çšããŠãã€ã³ãã©ã¹ãã©ã¯ãã£çšã®ããã€ãã®ã³ã³ãããŒãæ§ç¯ããŠããŸãã ã³ã³ãããŒã¯ãã€ã¯ããµãŒãã¹ã§ãããã»ãšãã©ãnodeJSã§èšè¿°ãããŠããŸãããMavenãã¬ãŒã ã¯ãŒã¯ã䜿çšããŠJavaã§èšè¿°ããããã€ã¯ããµãŒãã¹ã1ã€ãããŸãã
Javaã³ã³ãããŒãåæ§ç¯ãããã³ã«ãæ°åã®äŸåé¢ä¿ãMavenããããŠã³ããŒããããŸãã ããã«ã¯æ°åããããŸãã ãã®åŸãã³ãŒãã¯çŽ15ç§ã§ãã«ããããŸãã
ããã¯éåžžã«éããCIæŠç¥ã«ããªã倧ããªåœ±é¿ãäžããŸãã
ãã®ã·ããªãªã§ã¯ããã«ãã®äŸåé¢ä¿ãæã€ããªã¥ãŒã ãæ¬ èœããŠããã空ã§ãããã¯å®éã«ã¯åé¡ã§ã¯ãããŸããããã®å ŽåãäŸåé¢ä¿ãããŠã³ããŒããããããã§ãã åçŸæ§ã¯åœ±é¿ãåããŸããã
äŸåé¢ä¿ãæ¹ããããããã«åä»ãªã³ãŒããæ¿å
¥ããå¯èœæ§ããããããã»ãã¥ãªãã£äžã®æžå¿µãããããšãç解ããŠããŸãã ããã«ãããªã¥ãŒã ãã§ãã«ããããã€ã¡ãŒãžãdocker-hubãŸãã¯docker-storeã§å
¬éããªãããã«ããããšã§ãç°¡åã«åé¿ã§ããIMHOã
ãããå¥ã®èšãæ¹ãããã°ãDockerã®äŒæ¥ã§ã®äœ¿çšãšå人ã§ã®äœ¿çšã®ç¯å²ãåºå¥ããå¿
èŠããããŸãã
@steppsã¯docker-composeã®ä»£ããã«https://pypi.python.org/pypi/shipwrightããã§ãã¯ã¢ãŠãããŸã
ç§ã¯ãã°ããã®éãã®ã¹ã¬ããããã©ããŒããŠããŠãèªåã«ãšã£ãŠè¯ã解決çãæ¢ããŠããŸãã æå°éã®åŽåã§æè»ãªæ¹æ³ã§æå°éã®ã³ã³ãããŒãæ§ç¯ããããã«ãç§ã¯@edannenbergã«ããhttps://github.com/edannenberg/gentoo-bbãæ¬åœã«å¥œãã§ãã
ããã¯Gentooã®Portageã䜿çšããŠåºçŸããããšã«åºã¥ããŠããããã @sjlongââlandã¯GentooããŒã¹ã®ç»åã«é©ããŠããŸãã Distãã¡ã€ã«ãšãã€ããªããã±ãŒãžã¯ãã£ãã·ã¥ããããããããŠã³ããŒããããåæ§ç¯ãããããå¿ èŠããªããåæ§ç¯ãé«éã«ãªããŸãã ãã«ãããã»ã¹ãç°¡åã«ã«ã¹ã¿ãã€ãºããããã®ããã¯ããããŸãã ãµãŒãããŒãã£ãœãããŠã§ã¢ã®ã€ã³ã¹ããŒã«ã¯ç°¡åã§ããããšãã°ãgitã䜿çšããŠãªããžããªã®ã¯ããŒã³ãäœæããŠãããã«ããããã«ãã®ã¿ãæçµã€ã¡ãŒãžã«ä¿æããŸãã Dockerfileããã³ãã¬ãŒãåããŸãã
ç°¡åãªäŸã¯figlet
ã®å Žåã§ãïŒ-
build.confïŒ
IMAGE_PARENT="gentoobb/glibc"
Dockerfile.templateïŒ
FROM ${IMAGE_PARENT}
ADD rootfs.tar /
USER figlet
CMD ["gentoo-bb"]
ENTRYPOINT ["figlet"]
builld.sh
PACKAGES="app-misc/figlet"
configure_rootfs_build() {
useradd figlet
}
ç§ã¯@whitecolorã®ãœãªã¥ãŒã·ã§ã³ã奜ãã§ããããã¯ãDockerãã¯ãããžãŒã ãã䜿çšãã次ã«åçŽãªã·ã§ã«ã¹ã¯ãªãããŸãã¯ãã®ä»ã®äœ¿çšããããã®ã䜿çšããã ãã§ãã ããå®å šãªã®ã§ãç§ã¯gentoo-bbã䜿çšããŠããŸãã Shipwrightã¯ããã©ã³ãã®åŠçãªã©ãéçºè ã«çŠç¹ãåœãŠãæ©èœã«é©ããŠããŸãã https://github.com/grammarly/rockerãèå³æ·±ãããã§ãã ã¿ããªãå ±æããŠãããŠããããšãã
ã¡ããã©å¥ã®å£°ãå±±ã«è¿œå ãããŸããã ãã«ãæã«ããŒã«ã«ããªã¥ãŒã ãããŠã³ãã§ããã°ãéåžžã«è€éãªéçºç°å¢ã¯éåžžã«ç°¡åã«ãªããŸãã
åé¿çã¯ããã«ãäžã«ããŒã«ã«ãã¡ã€ã«ãå ¬éããhttpãµãŒããŒãå®è¡ããcurl/wgetãªã©ã䜿çšããŠãã¡ã€ã«ãDockerãã«ãã«åã蟌ãããšã§ãã ããããç§ã¯æ¬åœã«ãã®ãããªããã¯ãäžèŠã§ããããšãæã¿ãŸãã
å¥ã®ãŠãŒã¹ã±ãŒã¹..æ°åã®ç°ãªãããŒãžã§ã³ã®ãããã©ã€ãšã¿ãªOSãæ§ç¯ããããã®Dockerã€ã¡ãŒãžãæ§ç¯ããããšæããŸãã ã€ã³ã¹ããŒã«ã¡ãã£ã¢ã¯>80GBãªã®ã§ããããDockerãã«ãç°å¢ã«ã³ããŒããããšã¯ã§ããŸããã ãã€ã³ãããŠã³ãã®æ¹ãã¯ããã«æãŸããã§ãããã
ãã1ã€ïŒç§ã®ãããžã§ã¯ãã§ã¯ãã³ã³ããå ã®ãœãŒã¹ãããã«ãããããã«ããªããžããªå ã®Dockerfilesãé åžããŠããŸãã çŸåšãã³ã³ããå ã®å¥ã®gitã¯ããŒã³ãgithubãããã«ããŠããŸãã æµ ãã¯ããŒã³ãšãã¹ãŠããããŸãããããã§ã...
ãã®ãããrhel7ãã«ããã¹ãã§[1]ããã¹ããããšãããRedHatã®dockerããŒã¢ã³ã®ãã«ãã«ã¯ãã«ãçšã®-vãªãã·ã§ã³ããããŸãã ç§ã¯CentOS/Fedoraã§ãã¹ãããŠããŸããããFedora/CentOSã§ããããããã¹ããããŠãããšæããŸãã ãã¹ããã䟡å€ããããŸãã ãŸããRHELDeveloperã®ãµãã¹ã¯ãªãã·ã§ã³ã¯ç¡æã«ãªããŸãã[2]ã
@fatherlinuxFedoraã§ã¯`dockerbuild-v'ãå©çšã§ããŸãã
@fatherlinuxCentOS7ããŒãžã§ã³ã«ã¯ãããå«ãŸããŠããŸãã
+1ããã¯å ¬åŒã®Dockerã«è¿œå ããã®ã«æ¬åœã«äŸ¿å©ãªæ©èœã ãšæããŸãã
centosãšlinuxmintïŒçŸåšã¯17.03.1-ceãå®è¡ããŠããŸãïŒã®äž¡æ¹ã§æŽæ°ãããŸããããããã§äœãã足ããŸãããïŒ ãªãã·ã§ã³-v
ã衚瀺ãããŸãã
ãã³ãã«ã€ããŠ
$ docker build --help
Usage: docker build [OPTIONS] PATH | URL | -
Build an image from a Dockerfile
Options:
--build-arg list Set build-time variables (default [])
--cache-from stringSlice Images to consider as cache sources
--cgroup-parent string Optional parent cgroup for the container
--compress Compress the build context using gzip
--cpu-period int Limit the CPU CFS (Completely Fair Scheduler) period
--cpu-quota int Limit the CPU CFS (Completely Fair Scheduler) quota
-c, --cpu-shares int CPU shares (relative weight)
--cpuset-cpus string CPUs in which to allow execution (0-3, 0,1)
--cpuset-mems string MEMs in which to allow execution (0-3, 0,1)
--disable-content-trust Skip image verification (default true)
-f, --file string Name of the Dockerfile (Default is 'PATH/Dockerfile')
--force-rm Always remove intermediate containers
--help Print usage
--isolation string Container isolation technology
--label list Set metadata for an image (default [])
-m, --memory string Memory limit
--memory-swap string Swap limit equal to memory plus swap: '-1' to enable unlimited swap
--network string Set the networking mode for the RUN instructions during build (default "default")
--no-cache Do not use cache when building the image
--pull Always attempt to pull a newer version of the image
-q, --quiet Suppress the build output and print image ID on success
--rm Remove intermediate containers after a successful build (default true)
--security-opt stringSlice Security options
--shm-size string Size of /dev/shm, default value is 64MB
-t, --tag list Name and optionally a tag in the 'name:tag' format (default [])
--ulimit ulimit Ulimit options (default [])
$ cat /etc/lsb-release
DISTRIB_ID=LinuxMint
DISTRIB_RELEASE=18
DISTRIB_CODENAME=sarah
DISTRIB_DESCRIPTION="Linux Mint 18 Sarah"
$ docker version
Client:
Version: 17.03.1-ce
API version: 1.27
Go version: go1.7.5
Git commit: c6d412e
Built: Fri Mar 24 00:45:26 2017
OS/Arch: linux/amd64
Server:
Version: 17.03.1-ce
API version: 1.27 (minimum version 1.12)
Go version: go1.7.5
Git commit: c6d412e
Built: Fri Mar 24 00:45:26 2017
OS/Arch: linux/amd64
Experimental: false
CentOS7ã§
# docker build --help
Usage: docker build [OPTIONS] PATH | URL | -
Build an image from a Dockerfile
Options:
--build-arg list Set build-time variables (default [])
--cache-from stringSlice Images to consider as cache sources
--cgroup-parent string Optional parent cgroup for the container
--compress Compress the build context using gzip
--cpu-period int Limit the CPU CFS (Completely Fair Scheduler) period
--cpu-quota int Limit the CPU CFS (Completely Fair Scheduler) quota
-c, --cpu-shares int CPU shares (relative weight)
--cpuset-cpus string CPUs in which to allow execution (0-3, 0,1)
--cpuset-mems string MEMs in which to allow execution (0-3, 0,1)
--disable-content-trust Skip image verification (default true)
-f, --file string Name of the Dockerfile (Default is 'PATH/Dockerfile')
--force-rm Always remove intermediate containers
--help Print usage
--isolation string Container isolation technology
--label list Set metadata for an image (default [])
-m, --memory string Memory limit
--memory-swap string Swap limit equal to memory plus swap: '-1' to enable unlimited swap
--network string Set the networking mode for the RUN instructions during build (default "default")
--no-cache Do not use cache when building the image
--pull Always attempt to pull a newer version of the image
-q, --quiet Suppress the build output and print image ID on success
--rm Remove intermediate containers after a successful build (default true)
--security-opt stringSlice Security options
--shm-size string Size of /dev/shm, default value is 64MB
-t, --tag list Name and optionally a tag in the 'name:tag' format (default [])
--ulimit ulimit Ulimit options (default [])
# docker version
Client:
Version: 17.03.1-ce
API version: 1.27
Go version: go1.7.5
Git commit: c6d412e
Built: Mon Mar 27 17:05:44 2017
OS/Arch: linux/amd64
# cat /etc/centos-release
CentOS Linux release 7.3.1611 (Core)
@wilfriedroset CentOS 7ã§ã¯ãéå ¬åŒã®Dockerããã±ãŒãžããªãã·ã§ã³ãæäŸããŸãã ç§ã¯ãããEPELãªããžããªã®äžéšã ãšæããŸãã
@nathanjacksonã«æè¬ããŸãã å ¬åŒãªãªãŒã¹ã§ãã®æ©èœã®ETAã¯ãããŸããïŒ
@wilfriedroset AFAIKãããã«ãã®ç§»æ€æ§ããç¶æããããã«ãã®æ©èœãå ¬åŒã®Dockerã«å«ããã¹ãã§ã¯ãªããšïŒæ°åïŒæ±ºå®ããããããETAã¯ãããŸããã å¥åãDockerfileãDockerãã«ããµãŒãã¹ãå«ãã©ãã§ãå®è¡ã§ããããã«ããŸãã
ç§ã®çµéšã§ã¯ãéããããã«ãã®ç§»æ€æ§ã¯é¡§å®¢ãæ¬åœã«æãã§ãããã®ã§ãã 圌ãã¯ãã«ãç°å¢/ãã¡ãŒã ãã»ããã¢ãããããã«ãããã®ç°å¢ã§åžžã«åæ§ç¯ã§ããããšãä¿èšŒããããšèããŠããŸãã -vãã«ããªãã·ã§ã³ã¯ãããã劚ãããã®ã§ã¯ãããŸããã
ããšãã°ãNFSããŠã³ãã䜿çšããå Žåã¯ããã¹ãŠã®ãã«ããµãŒããŒã®fstabã«ãã®ããŠã³ããããããšã確èªããŠãã ãããããããã°ããã¡ãŒã å ã®ã©ãã§ãåé¡ãªããã«ããå®äºããŸãã
RHEL7.3ã®å Žå
`` ``
[ root @ rhel7ã ]ïŒdocker build --help
䜿çšæ³ïŒdockerbuild[ãªãã·ã§ã³]ãã¹| URL | -
Dockerfileããã€ã¡ãŒãžãæ§ç¯ãã
ãªãã·ã§ã³ïŒ
--build-arg valueãã«ãæå€æ°ãèšå®ããŸãïŒããã©ã«ã[]ïŒ
--cgroup-parentstringã³ã³ããã®ãªãã·ã§ã³ã®èŠªcgroup
--cpu-period int CPU CFSïŒCompletely Fair SchedulerïŒæéãå¶éããŸã
--cpu-quota int CPU CFSïŒCompletely Fair SchedulerïŒã¯ã©ãŒã¿ãå¶éããŸã
-cã-cpu-shares int CPUã·ã§ã¢ïŒçžå¯Ÿçãªéã¿ïŒ
--cpuset-å®è¡ãèš±å¯ããcpusæååCPUïŒ0-3ã0,1ïŒ
--cpuset-memsæååå®è¡ãèš±å¯ããMEMïŒ0-3ã0,1ïŒ
--disable-content-trustã€ã¡ãŒãžæ€èšŒãã¹ãããããŸãïŒããã©ã«ãã¯trueïŒ
-fã-file string Dockerfileã®ååïŒããã©ã«ãã¯ãPATH / DockerfileãïŒ
--force-rmåžžã«äžéã³ã³ãããåé€ããŸã
--helpå°å·ã®äœ¿çšæ³
--åé¢æååã³ã³ããåé¢ãã¯ãããž
--label valueç»åã®ã¡ã¿ããŒã¿ãèšå®ããŸãïŒããã©ã«ã[]ïŒ
-mã-memorystringã¡ã¢ãªå¶é
--memory-swap stringã¡ã¢ãªã«ã¹ã¯ãããå ãããã®ã«çããã¹ã¯ããå¶éïŒç¡å¶éã®ã¹ã¯ãããæå¹ã«ããã«ã¯ã-1ã
--no-cacheã€ã¡ãŒãžãæ§ç¯ãããšãã«ãã£ãã·ã¥ã䜿çšããŸãã
--pullåžžã«æ°ããããŒãžã§ã³ã®ã€ã¡ãŒãžããã«ããããšããŸã
-qã-quietãã«ãåºåãæå¶ããæåãããšã€ã¡ãŒãžIDãåºåããŸã
--rmãã«ããæåããåŸãäžéã³ã³ãããŒãåé€ããŸãïŒããã©ã«ãã¯trueïŒ
--shm-size string / dev / shmã®ãµã€ãºãããã©ã«ãå€ã¯64MB
-tã-tagvalueååããã³ãªãã·ã§ã³ã§' nameïŒtag '圢åŒã®ã¿ã°ïŒããã©ã«ã[]ïŒ
--ulimitå€Ulimitãªãã·ã§ã³ïŒããã©ã«ã[]ïŒ
-vã-volume valueãã«ãæã®ãã€ã³ãããŠã³ããèšå®ããŸãïŒããã©ã«ã[]ïŒ
`` `
CIæ§ç¯ããŒããããžã§ã¯ãã®å¥ã®ãŠãŒã¹ã±ãŒã¹ã¯ããã¹ãŠã®ã€ã¡ãŒãžãæ§ç¯ãããšãã«CIã®yarn
ãã£ãã·ã¥ãå
±æããããšã§ãã
+1ïŒnode_modulesãäœåºŠãã€ã³ã¹ããŒã«ããããšã¯ãç¹ã«nodejsãã€ã¯ããµãŒãã¹ã«ãšã£ãŠã¯æ¬åœã«ã²ã©ãããšã§ã
ç§ã¯nfsã§ãã®åé¡ã解決ããããšããŠããŸããããç¹°ãè¿ãå¯èœãã¯ãã®æ©èœãå®è£
ããªãçç±ã«ã¯ãªããªãã§ããã...
ããã¯ãïŒ31257ãšïŒ32063ãçµ±åããããšã§ããã«éèŠã«ãªãããã§ãã
ïŒ32507ãèŠãŠãã ãã
@fatherlinuxã¯ãDockerfileå ã«COPYã³ãã³ããå«ããããšãã§ããå Žåã«ããã«ãã®ç§»æ€æ§ãã©ã®ããã«æ©èœãããã説æã§ããŸããïŒ ïŒæéã®è€éãã®çç±ã§ïŒå€§ããªãã¡ã€ã«ã®ã³ããŒæ°ãé¿ããããšããåé¡ãããããã¡ã€ã«ãã³ã³ãããŒãšå ±æããããã®ãã«ãæã®èªã¿åãå°çšãªãã·ã§ã³ãæ¢ããŠããŸãã
@arunmkhttps ://github.com/moby/moby/issues/32507ãåç §ããŠãã ãã
@ arunmk @cpuguy83æ£ç¢ºã«ã ã¢ã€ãã¢ã¯ããã«ãæã«ããŒã¿ãã³ã³ããã«ã³ããŒããããªããšããããšã§ãã ããã¯ãããéåžžã«å€§ããããããšãã§ããŸãã ãã«ãæã«ããŒã¿ãå©çšã§ããããã«ãããã ãã§ãã äžèšã®ããã«ãRed Hatã®ããŒãžã§ã³ã®dockerããŒã¢ã³ã§-vãã€ã³ãããŠã³ããå®è¡ã§ããŸããããã«ãããããŒã¿ãå©çšã§ããããã«ãªããŸãããçŸåšã¯èªã¿åãå°çšã§ãïŒå é±ç§ãçãããŸããïŒã
ãããã£ãŠãä»æ¥å¿ èŠãªå Žåã¯ãFedoraãCentOSããŸãã¯RHELããã§ãã¯ããŠããã«ãæã«ããŒã¿ã®èªã¿åãå°çšã³ããŒãããŠã³ãã§ããŸã...
ãŸãããã«ããã¡ãŒã å ã§ã®ç§»æ€æ§ãå¿ èŠãªå Žåã¯ãNFSãªã©ããå§ãããŸãã
ã³ããŒããå¿ èŠã¯ãªããæçµçãªã€ã¡ãŒãžã«å«ããã ãã®å Žåã¯ããã«ãã¹ããŒãžãã«ãã䜿çšããŠãããåŠçã§ããŸãã
äžèªç¶ãªäŸïŒ
FROM fatImage AS build
COPY bigData /data
RUN some_stoff /data
FROM tinyImage
COPY --from=build /data/result
æ確åããŠãããŠããããšã@fatherlinux
@cpuguy83詳现ãããããšãã çãããããããªãç§ã®åé¡ã«ããã«è©³çŽ°ãè¿œå ãããŠãã ããïŒç§ã¯3.3GBã®ãã¡ã€ã«ãçæãããã«ãã·ã¹ãã ãæã£ãŠããŸãã ããã¯ãDockerã³ã³ãããŒå
ã«æ§ç¯ãããRPMã«è¿œå ãããŸãã ãããã£ãŠãçæãããã³ããŒã¯2ã€ãããŸãã1ã€ã¯ãã«ãã·ã¹ãã ããDockerã³ã³ãããŒã«ããã1ã€ã¯Dockerã³ã³ãããŒå
ããRPMå
ã«äœæãããŸãã ä»ãç§ã¯2çªç®ã®ã³ããŒãé¿ããããšã¯ã§ããŸããã æåã®ã³ããŒãé¿ããããšãèããŠããŸããããå€æ®µéã®ãã«ãã§ãããã¯äžå¯èœã®ããã§ãã
倧ããªãã¡ã€ã«ãç¹°ãè¿ã䜿çšãããšãå€æ®µã³ããŒã®å®è¡åæ°ãã1ãã«æžã£ãŠããããšã¯ç解ã§ããŸãã äžåºŠäœ¿ã£ãŠãã0ãã«æžãããããšæããŸããã ãããäžå¯èœã ãšããããšãç§ã¯æ£ããç解ããŠããŸããïŒ
@arunmkã¯ã©ã€ã¢ã³ããããã«ãã€ã³ã¹ã¿ã³ã¹ã«äœãã³ããŒããå¿ èŠããããã«é¢ä¿ãªãã
@cpuguy83説æããŠãããŠããããšãã ä»ã®ãšãããªãŒããŒããããåãå¿ èŠãããããã§ãã ããã¯ååæ§ãæã£ãŠãããšããããšã§ããïŒ
@fatherlinux
RHEL7ã§-vã䜿çšããŠããã«ãäžã«ãã£ã¬ã¯ããªãèªã¿åãå°çšã§ããŠã³ãããããšããŸãããã次ã®ãšã©ãŒãçºçããŸãã
Dockerãã«ãã§ã¯ããªã¥ãŒã ã¯ãµããŒããããŠããŸããã ãã€ã³ãããŠã³ãã®ã¿ã䜿çšããŠãã ããã
ããã¯ãDockerããã®ãã®ã§ã¯ãªããRHELããã®dockerããã±ãŒãžã§ã®ã¿æ©èœããŸãã ãããã¯ã¢ããã¹ããªãŒã ã§åãå ¥ããããŸããã§ããã
@fatherlinux
RHEL7ã§-vã䜿çšããŠããã«ãäžã«ãã£ã¬ã¯ããªãèªã¿åãå°çšã§ããŠã³ãããããšããŸãããã次ã®ãšã©ãŒãçºçããŸãã
Dockerãã«ãã§ã¯ããªã¥ãŒã ã¯ãµããŒããããŠããŸããã ãã€ã³ãããŠã³ãã®ã¿ã䜿çšããŠãã ããã
@fcntl
ãšã©ãŒãèšã£ãããã«ãã€ã³ãã䜿çšããå¿
èŠããããŸãããããã$ïŒ /hostsomething:/containersomething
-v /something
ã䜿çšããŸãã
@thebigbãããããä»ã®äººãã¡ãç§ãã¡ã¯Dockerã®ãã«ãäžã«ccacheã䜿çšã§ããããã«ã€ã³ãã©ã¹ãã©ã¯ãã£ãã»ããã¢ããããŸããã 圹ç«ã€å Žåã¯https://github.com/WebHare/ccache-memcached-serverã§å ¬éããŠããŸãããçæ³çã«ã¯ãã®åé¡ã解決ãããšå»æ¢ãããå¯èœæ§ããããŸãã
è¿œå ããããšããŠããã®ã§ããããããæ¬åœã«å¿ èŠãªãŠãŒã¹ã±ãŒã¹ã¯ccacheã§ãã Dockerã€ã¡ãŒãžã®ãã«ãäžã«ccacheãã£ãã·ã¥ãããŠã³ãã§ããããã«ããããšæããŸããããã¯ãã€ã¡ãŒãžèªäœã«å«ãŸããŠããæå³ããããŸããã @unilynxåé¿çãèŠãŠãããŸã-è¯ãã¿ã€ãã³ã°ã§ãïŒ
å¥ã®å£°ã䜿ã£ãŠãã ããã
ç§ã®äœ¿çšäŸïŒçŸåšãããã«ãŒã®MOUNT
ã³ãã³ãã䜿çšããŠã /root/.cache
ïŒ$ãã£ã¬ã¯ããªãš/var/cache/apk
ãã£ã¬ã¯ããªãå
±æããŠããŸãã
äœããã®çç±ã§ãapkããã±ãŒãžãšpipããã±ãŒãžãžã®ãããã¯ãŒã¯ã¢ã¯ã»ã¹ãéåžžã«ïŒéåžžã«ïŒé
ãã§ãã åæ§ç¯ãããšãããã»ã¹ã«éåžžã«æéãããããŸãã ãã®ãã«ãæã®MOUNT
æ©èœã䜿çšãããšãäœæ¥ãã¯ããã«ç°¡åã«ãªããŸãã
@embray @roxmaã¯ã httpsïŒ //github.com/moby/moby/issues/32507ãåç §ããŠããŠãŒã¹ã±ãŒã¹ã«å¯Ÿå¿ã§ãããã©ããã確èªããŠãã ããã ãã£ãŒãããã¯ãæè¿ããŸã
ãã«ãã¹ããŒãžãã«ãã®å°å ¥ã«ãããMavenã®ããŒã«ã«ãã£ãã·ã¥ã®ããªã¥ãŒã ããŠã³ããæå®ããå¿ èŠæ§ãéèŠã§ããããšãããããŸããã
@gim913ããã¯ããªããã©ã®ã³ãã¥ããã£ã«ãåå ããæ¹æ³ã§ã¯ãããŸããã è²¢ç®ãããå Žåã¯ãããã«ãªã³ã¯ãããŠããæ¢åã®ææ¡ã確èªããŠããããã®ããããããŠãŒã¹ã±ãŒã¹ã解決ãããã©ããã確èªããŠãã ããã
@ gim913ããŸããŸãªãã£ã¹ããªãã¥ãŒã·ã§ã³ãžã®Dockerçµ±åã®ãã®æ®µéã§ã¯ãç°å¢ã®å€æŽïŒã€ãŸããDockerãå®å šã«åé€ããïŒã¯ããOSããå€æŽãããããã¯ããã«æ··ä¹±ãæãããã«æãããŸãïŒå¥ã®Linuxãã£ã¹ããªãã¥ãŒã·ã§ã³ããRedHatãã«ãã«åãæ¿ããããšãæå³ããŸãã -vïŒïŒ
RedHatã®ããŒãžã§ã³ã®dockerã䜿çšããæ¹ãç°¡åã§ã¯ãªãã§ããããã ãããããããã®èª°ããããã«ãã§ã-vããªãã·ã§ã³ãååŸããããã®é¢é£ããããã/ãã©ãŒã¯/ã³ãããã«ããªããåããããšãã§ããŸãã
@unilynxããã«è¡ããŸã
wgetã䜿çšããŠããã«å°éããããã€ãã®äŸãèŠãŠããŸãã...ç§ã®ãŠãŒã¹ã±ãŒã¹ã¯äŒŒãŠããŸã...倧ããªtarballã解åããŠå®è¡ãããã ãã§ãã Dockerãã¡ã€ã«ãtarballã§æ£ããããããããŒã«ã«WebãµãŒããŒããwgetãå®è¡ããŠæéãç¡é§ã«ãããããããããŸããã docker composeã䜿çšããŠå®è¡ã§ããããã«ããŠã³ãããããšã¯ããã«ãæã«è¡ãã®ã劥åœãªããšã®ããã§ãã ãããããã°ããããŒãã®å€æŽãããŒãžããŠãã ãã:-)
ç§ã¯Pythonãã€ãŒã«ãããªã³ã³ãã€ã«ããããããã³ããŒããŠæ¬åœã«å¿
èŠã®ãªãã¬ã€ã€ãŒãäœæããã«ã³ã³ãããŒã«ã€ã³ã¹ããŒã«ãããããŸãã¯äœããã®æ¹æ³ã§æŒãã€ã¶ãããšããå¿
èŠããããŸãã 1æ¥ç®ãšç§ã¯ãã§ã«rocker
ð¢ð¢ð¢ã調ã¹ãŠããŸã
ããã¯ç°¡åã«è¿œå ã§ããéåžžã«äŸ¿å©ã§ãïŒãŸãã¯ãããŠã³ãã³ãã³ãã rocker
ãããäžåºŠåç
§ããŠãã ããïŒã ãã®æ©èœãŸãã¯åæ§ã®äžè¶³ããŠããæ©èœã®ã¹ã¯ãªãããäœæããã®ã«ïŒã³ãã¥ããã£ã§ïŒã©ã®ãããã®æéãè²»ããããŠããŸããïŒ
@awbackerãã«ãã¹ã¿ãã°ãã«ãã¯ãããããªãããŸã解決ãã次ã®ãããªããšãã§ããŸã
FROM something AS my_wheels
RUN compile_all_the_things
FROM something
COPY --from my_wheels /wherever
RUN do_stuff_with_wheels
æåã®éšåã¯ãäœããå€æŽãããå Žåã«ã®ã¿å®è¡ãããŸãã ãã®ããã®ãã£ãã·ã¥ã¯ãä»ã®ãã«ã/ããã«ãŒãã¡ã€ã«éã§ãå
±æã§ããŸãã
ããã«ããããã«ãå
šäœãèªå·±å®çµåã«ãªããŸãã
RUN --mount
ãèš±å¯ããææ¡ããããããŠã³ãä»æ§ã§ã¯ãã³ããŒãã代ããã«my_wheels
ãã«ãã¿ãŒã²ããããç©ãããŠã³ãããããã«æ瀺ãããŸãã
@kenyeeã®å Žåãšåæ§ã«ãããã¯ãã«ãã³ã³ããã¹ãããäœããããŠã³ãããå¯èœæ§ããããŸããããã¯ã17.07ã§ã¯ãexperimentalã¯å¿ èŠã«å¿ããŠæ®µéçã«ã®ã¿éä¿¡ãããŸãã
@cpuguy83ããã¯å®éã«ã¯æ©èœããŸãã-å°ãªããšãGradleJavaãã«ãã§ã¯ã Gradle Jarãã¡ã€ã«ãäºåã«ãã£ãã·ã¥ãããŠããããŒã¹Dockerã€ã¡ãŒãžããããŸããããœãŒã¹ã®Gradleãã«ããããã¹ãŠã®äŸåé¢ä¿ããã£ãã·ã¥ã«ããŠã³ããŒãããããªã¬ãŒã«ãªããŸãã
@ cpuguy83ãã«ãã¹ããŒãžã§ã¯ãã³ããŒããããã€ãŒã«ãçµæã®ç»åããåé€ããããšã¯ã§ããŸããã@ awbackerã話ããŠããã®ã¯ããã§ãã ãããã£ãŠã/ whereeverãã©ã«ããŒã®ã³ã³ãã³ãã¯ãã£ãã·ã¥ãããç»åãµã€ãºã倧ãããªããŸãã
@BryanHuntãã«ãããã»ã¹ã®äžéšã¯ãdepsãããŠã³ããŒãããããšã§ããïŒ ç¢ºãã«ãGradleã¯ãå®éã«ãã«ãããããšãªãããããããã£ãã·ã¥ããæ¹æ³ãæäŸããå¿ èŠããããŸããïŒ
@ cpuguy83ã¯ããdepsã¯ãã«ãã®äžéšãšããŠããŠã³ããŒããããŸãã åºæ¬çã«Mavenãšåãã§ãã åèïŒ https ïŒ//github.com/gradle/gradle/issues/1049
ãã«ãããŠã³ãã®PRã¯ã©ããã«ãããŸãããïŒ
@graingertããã«
ãã®ããã®ðã Lunar Wayã§ã¯ãCIãµãŒããŒãããã«ããšãã¹ãã®äŸåé¢ä¿ãåé€ããããã«ãåäžã®Dockerãã«ãã§å®å šãªããã«ã->ãã¹ã->æ¬çªã€ã¡ãŒãžã®ãã«ããããã»ã¹ãå®è¡ããããšèããŠããŸãã ãã«ãã¹ããŒãžãã«ãã§ã¯ãããè¡ãããšãã§ããŸããããã«ãããã»ã¹ã®äžéã³ã³ãããŒãããã¹ãçµæãååŸããããšã¯ã§ããŸããã ãããã£ãŠãä»ã¯2ã€ã®ã¹ãããã§å®è¡ããå¿ èŠããããŸãããã¹ãã€ã¡ãŒãžããã«ãããããã®åå¥ã®Dockerfileã䜿çšããŠå®è¡ãããã¹ããæåããå Žåã«ã®ã¿ãprodã€ã¡ãŒãžã®ãã«ãã¹ãããã«é²ã¿ãŸãã
Dockerãã«ãã®-vãªãã·ã§ã³ã䜿çšãããšããã¹ãçµæãCIãµãŒããŒããããŠã³ãããããã©ã«ããŒã«ä¿åããçŸåšã®2ã¹ãããããã»ã¹ã®å¿ èŠæ§ããªããããšãã§ããŸãã
@tbflwããã©ã«ãã§ã¯ãDockerãã«ãã¯ããã«ãã倱æããåŸãäžéã³ã³ãããŒãåé€ããŸããã ãããã£ãŠããã¹ãã倱æããå Žåã¯ãããããããã¹ãçµæãååŸã§ããŸãã
ã©ãããç§ãã¡ãæ¬åœã«ãæ¬åœã«ãã®æ©èœãå¿ èŠã§ãïŒ ã¢ãããã¯ãããã䜿çšããŠããã«ãŒããã©ãŒã¯ããã«ãŒãªã©ã®ä»ã®ããŒã«ã«é Œãã®ã¯ãã移æ€æ§ãæ§ç¯ããããšããçŠé³äž»çŸ©ã®æŠå¿µãæã¡ç Žããããã¯ããã«éãã§ãã
@BryanHunt @stepps @ yngndrwä»ã®äººã@awhitford
ãã«ãã®äŸåé¢ä¿ããã£ãã·ã¥ãã1ã€ã®æ¹æ³ã¯ãããã¥ã¡ã³ãã®ãã«ãã¹ããŒãžgoãã«ãã®äŸãpythononbuildDockerfileã®ããã«ãã«ããæ©èœãããããšã§ãã
ããã¯ãMavenã§æ©èœããããã«èŠããç§ãäœæããäŸã§ãã ããã«ã³ããŒããŸãã
FROM maven
WORKDIR /usr/src/app
# /root/.m2 is a volume :(
ENV MAVEN_OPTS=-Dmaven.repo.local=../m2repo/
COPY pom.xml .
# v2.8 doesn't work :(
RUN mvn -B -e -C -T 1C org.apache.maven.plugins:maven-dependency-plugin:3.0.2:go-offline
COPY . .
RUN mvn -B -e -o -T 1C verify
FROM openjdk
COPY --from=0 /usr/src/app/target/*.jar ./
ã³ãŒãããŒã¹ã®æ®ãã®éšåãã³ããŒããåã«äŸåé¢ä¿ãããŠã³ããŒãããããã«èšå®ããå¿ èŠããããŸãããŸããã¢ãŒãã£ãã¡ã¯ããä¿åãããå ŽæãVOLUMEã«ãªãããšã確èªããŠãã ããã
@sixcornersããã¯Gradleã§ã¯æ©èœããŸãã
@BryanHuntãã®DockerfileãŸãã¯ãã®ã¢ãããŒãã¯gradleã§ã¯æ©èœããŸãããïŒ cpuguy83ã¯ãå®éã«ãã«ããå®è¡ããã«äŸåé¢ä¿ãããŠã³ããŒãããæ¹æ³ããããã©ãããå°ããŸããã äŸåé¢ä¿ã®è§£æ±ºã¿ã¹ã¯ã«ãªã³ã¯ããŸããã build.gradleãã¡ã€ã«ãè¿œå ããŠããã®ã¿ã¹ã¯ãå®è¡ã§ããŸãããïŒ
@sixcornersã¢ãžã¥ãŒã«ãå€æ°ããå Žåã¯ããã«ããã¡ã€ã«ããã³ããããã£ãã¡ã€ã«ãšãšãã«ãã£ã¬ã¯ããªæ§é ãè€è£œããå¿ èŠããããŸãã ç§ã¯ãããã§ãããšæããŸãããããã¯éåžžã«ãšã©ãŒãçºçãããããšæããŸãã
@sixcornersã«ãããã«ãã¹ããŒãžã¯èå³æ·±ãããªãã¯ã§ãããããŸããŸãªããã±ãŒãžãããŒãžã£ãŒïŒnpmãcomposerãªã©ïŒã§äœ¿çšãããŠããã®ãèŠãŠããŸããã
ãã ããã¹ããŒãž0ã®ç»åã§äŸåé¢ä¿ã®ãªã¹ããCOPY pom.xml
ã«å€æŽããããšãã¬ã€ã€ãŒãç Žæ£ããããã£ãã·ã¥å
šäœã倱ããããšããåé¡ããããŸãã ã€ãŸããéçºè
ãpomå
ã®äœãïŒã³ã¡ã³ãã1kBytesã®äŸåé¢ä¿ïŒãå€æŽãããã³ã«ããã£ãã·ã¥å
šäœãå床ããŠã³ããŒãããå¿
èŠããããŸãã
CIãã·ã³ã®å Žåãã€ã¡ãŒãžãæ§ç¯ããäŸåé¢ä¿ãå€åãç¶ãããã¹ããå®è¡ããŸããã€ãŸããïŒãããã·ãŸãã¯ã¢ããã¹ããªãŒã ããïŒåããŠã³ããŒãããå¿ èŠããããåæ§ç¯ãéåžžã«é ããªãäœåãã®ããã±ãŒãžã§ãã ããªã¥ãŒã ãšããŠããŠã³ããããããŒã«ã«ãã¡ã€ã«ããŒã¹ã®ãã£ãã·ã¥ã¯ãã¯ããã«é«éã§ãã
ããã¯ãéçºè ãã€ã¡ãŒãžã®ãã«ããç¹°ãè¿ãå Žåãç¹ã«æ¥ç¶ãé ãå Žåã«ãåé¡ã«ãªããŸãã ããŒã«ã«ã®Nexusã€ã³ã¹ã¿ã³ã¹ãšããã«http_proxyãèšå®ããããšã¯ã§ããŸããããã以å€ã®å¯äœçšïŒNexusãä»ããhttpãªã¯ãšã¹ãã®ãã£ããªã³ã°ãªã©ïŒããããŸãã
ãã«ãã¹ããŒãžã¯è¯ãåé¿çã§ãããçæ³çã§ã¯ãããŸããã
ç§ãã¡ãè©Šã¿ãããšããŠãã解決çã¯ãå ±æã©ã€ãã©ãªãæ§ç¯ããäŸåé¢ä¿ãã£ãã·ã¥ãä¿æããããšã«ãã£ãŠã€ã¡ãŒãžãæ§ç¯ããããšã§ãã ãã®ã€ã¡ãŒãžã¯ãã¢ããªã®ãã«ãã€ã¡ãŒãžã«ãªããŸãã çæ³çã§ã¯ãããŸããããè©ŠããŠã¿ã䟡å€ã¯ãããšæããŸãã
ãã ããäŸåé¢ä¿ã®ãªã¹ããå€æŽããããã³ã«ãã¹ããŒãž0ã®ã€ã¡ãŒãžã®COPY pom.xmlã«ãã£ãŠã¬ã€ã€ãŒãç Žæ£ããããã£ãã·ã¥å šäœã倱ããããšããåé¡ããããŸãã ã€ãŸããéçºè ãpomå ã®äœãïŒã³ã¡ã³ãã1kBytesã®äŸåé¢ä¿ïŒãå€æŽãããã³ã«ããã£ãã·ã¥å šäœãå床ããŠã³ããŒãããå¿ èŠããããŸãã
@hasharã¯ã COPY --from
æ©èœããã«ãã¹ããŒãžã«éå®ãããªãããšã«æ³šæããŠãã ããã Dockerfileãªãã¡ã¬ã³ã¹ããïŒ
ãªãã·ã§ã³ã§ã
COPY
ã¯ãéä¿¡ããããã«ãã³ã³ããã¹ãã®ä»£ããã«äœ¿çšãããåã®ãã«ãã¹ããŒãžïŒFROM .. AS <name>
ã§äœæïŒã«ãœãŒã¹ã®å Žæãèšå®ããããã«äœ¿çšã§ãããã©ã°--from=<name|index>
$ãåãå ¥ããŸãããŠãŒã¶ãŒã«ããã ãã®ãã©ã°ã¯ãFROM
åœä»€ã§éå§ããã以åã®ãã¹ãŠã®ãã«ãã¹ããŒãžã«å²ãåœãŠãããæ°å€ã€ã³ããã¯ã¹ãåãå ¥ããŸãã _æå®ãããååã®ãã«ãã¹ããŒãžãèŠã€ãããªãå Žåã¯ã代ããã«åãååã®ã€ã¡ãŒãžã䜿çšãããŸãã _
ããã«ãããäŸåé¢ä¿ã®ã€ã¡ãŒãžã_ãã«ã_ããã¿ã°ãä»ããããã䜿çšããŠäŸåé¢ä¿ãã³ããŒããããšãã§ããŸãã äŸãã°ïŒ
FROM maven
WORKDIR /usr/src/app
# /root/.m2 is a volume :(
ENV MAVEN_OPTS=-Dmaven.repo.local=../m2repo/
COPY pom.xml .
# v2.8 doesn't work :(
RUN mvn -B -e -C -T 1C org.apache.maven.plugins:maven-dependency-plugin:3.0.2:go-offline
COPY . .
RUN mvn -B -e -o -T 1C verify
docker build -t dependencies:1.0.0 .
ãŸããäŸåé¢ä¿ã«dependencies:1.0.0
ã€ã¡ãŒãžã䜿çšããŠæå®ããŸãã
FROM openjdk
COPY --from=dependencies:1.0.0 /usr/src/app/target/*.jar ./
ãŸãã¯ïŒãã¹ãããéåžžã«åºæ¬çãªäŸïŒã
$ mkdir example && cd example
$ touch dep-one.jar dep-two.jar dep-three.jar
$ docker build -t dependencies:1.0.0 . -f -<<'EOF'
FROM scratch
COPY . /usr/src/app/target/
EOF
$ docker build -t myimage -<<'EOF'
FROM busybox
RUN mkdir /foo
COPY --from=dependencies:1.0.0 /usr/src/app/target/*.jar /foo/
RUN ls -la /foo/
EOF
ãã«ãã®åºåã«ã¯ã次ã®ããã«è¡šç€ºãããŸãã
Step 4/4 : RUN ls -la /foo/
---> Running in 012a8dbef91d
total 8
drwxr-xr-x 1 root root 4096 Oct 7 13:27 .
drwxr-xr-x 1 root root 4096 Oct 7 13:27 ..
-rw-r--r-- 1 root root 0 Oct 7 13:26 dep-one.jar
-rw-r--r-- 1 root root 0 Oct 7 13:26 dep-three.jar
-rw-r--r-- 1 root root 0 Oct 7 13:26 dep-two.jar
---> 71fc7f4b8802
誰ãããã®ãŠãŒã¹ã±ãŒã¹ã«ã€ããŠãŸã èšåããŠãããã©ããã¯ããããŸãããïŒããŒãžãç°¡åã«æ€çŽ¢ããŸããïŒãSSHèªèšŒãœã±ããããã«ãã³ã³ããã«ããŠã³ããããšããã©ã€ããŒãgitãªããžããªãä»ããŠãããã€ãããäŸåé¢ä¿ãã¯ããã«ç°¡åã«å©çšã§ããããã«ãªããŸãã éæçµãã«ã段éã§ã®ããŒã®ã³ããŒãªã©ã«é¢ããŠãDockerfileå ã®å®åæã®å¿ èŠæ§ã¯å°ãªããªããŸãã
buildkitã¯gitããã€ãã£ãã§ãµããŒãããŠããŸã
https://github.com/moby/buildkit
解決ããã
bashã¹ã¯ãªãããäœæããŸãïŒã/ bin / docker-composeãªã©ïŒïŒ
#!/bin/bash
trap 'kill $(jobs -p)' EXIT
socat TCP-LISTEN:56789,reuseaddr,fork UNIX-CLIENT:${SSH_AUTH_SOCK} &
/usr/bin/docker-compose $@
ãããŠãsocatã䜿çšããDockerfileã§ã¯ïŒ
...
ENV SSH_AUTH_SOCK /tmp/auth.sock
...
&& apk add --no-cache socat openssh \
&& /bin/sh -c "socat -v UNIX-LISTEN:${SSH_AUTH_SOCK},unlink-early,mode=777,fork TCP:172.22.1.11:56789 &> /dev/null &" \
&& bundle install \
...
or any other ssh commands will works
次ã«ã docker-compose build
ãå®è¡ããŸã
å¥ã®ãŠãŒã¹ã±ãŒã¹ãå±±ã«æããã Docker for Windowsã䜿çšããŠãçµã¿èŸŒã¿Linuxã·ã¹ãã ã1ã€ã®ã³ã³ãããŒã«ãã«ãããããã®ãã¡ã€ã«ã·ã¹ãã ãçæããŸãããããããã«ãã¹ãããäžã«ä»ã®ã³ã³ãããŒãšå ±æããããšæããŸãã ç§ã¯ãã®ã³ã³ãããŒãæäœããŠæ§æãå€æŽããããåæ§ç¯ãããããŸãããã®ãããDockerfileã§ãã«ããå®è¡ãããã«ãã¹ããŒãžãã«ãã䜿çšããããšã¯ãå¢åãã«ãã倱ããããããŸãé©ããŠããŸããã ã¯ãªãŒã³ãã«ããå®è¡ããã«ã¯çŽ1.5æéãããããã以åã®ãã«ãã¢ãŒãã£ãã¡ã¯ãããã£ãã·ã¥ããããšæããŸãã Windowsãã·ã³ããªãã¯ãªã³ã¯ãåŠçããæ¹æ³ãåå ã§ããã¹ãã«ããŠã³ããããããªã¥ãŒã ã«ãã«ãã§ããªããããååä»ãããªã¥ãŒã ã䜿çšããŸãã çæ³çã«ã¯ãä»ã®ã€ã¡ãŒãžã®ãã«ãã¹ãããã§ãããã®ååä»ãããªã¥ãŒã ãå ±æããããšæããŸãã çŸæç¹ã§ã¯ããã«ãåºåã®tarïŒçŽ4GBïŒãäœæããŠãããDockerã³ããŒãå®è¡ããŠãåŸç¶ã®ãã«ãã§Windowsãã¹ãã§äœ¿çšã§ããããã«ããå¿ èŠããããŸãã
Pythonã®å Žåã pip install package
ãããšãPythonãšãã®äŸåé¢ä¿ããã£ãã·ã¥ãã©ã«ããŒã«ããŠã³ããŒãããããµã€ãããã±ãŒãžã«ã€ã³ã¹ããŒã«ãããŸãã
è¯ãç¿æ
£ãšããŠãçŸåšã®ã¬ã€ã€ãŒã«ãŽã/ãã£ãã·ã¥ãä¿åããªãããã«pip --no-cache-dir install package
ã䜿çšããŸãã ãã ãããã¹ããã©ã¯ãã£ã¹ãšããŠããã£ãã·ã¥ãã©ã«ããŒããã«ãã³ã³ããã¹ãããå€ãããšãæãŸããŸãã ãããã£ãŠããã«ãæé-vã圹ç«ã¡ãŸãã
äžèšã®äžéšã®ãŠãŒã¶ãŒã¯COPY . /somewhere/in/container/
ã䜿çšããŸããããŠãŒã¶ãŒã®ã¢ããªããã¡ã€ã«ã«ã¯åé¡ãããŸãããããã£ãã·ã¥ã«ã¯åé¡ãããŸããã COPYã¯ããèªäœãšããŠãã1ã€ã®ã¬ã€ã€ãŒãäœæããåŸã®ã¬ã€ã€ãŒã®ãã£ãã·ã¥ãåé€ããŠã圹ã«ç«ããªãããã§ãã ä»ã®æªãå¯äœçšã¯ãCOPYã䜿çšãããšãã«ãã£ãã·ã¥ãå€æŽãããå Žåãã³ã³ããã¹ããå€æŽãããåŸç¶ã®ã¬ã€ã€ãŒãç¡å¹ã«ãªããåæ§ç¯ã匷å¶ãããããšã§ãã
@wtayyebèŠä»¶ãã¡ã€ã«ãå€æŽããããšãã«ã®ã¿pip install ...
ãå®è¡ããDockerfileãããå ŽåãèŠä»¶ã¯ã¢ããªã±ãŒã·ã§ã³ã®ãã«ãæã»ã©é »ç¹ã«ã¯å€æŽãããªãããããã«ãæé-vã¯ããã»ã©éèŠã§ã¯ãªãããã§ãã
@wtayyebãã«ãã¹ããŒãžDockerfileã䜿çšããŠããã£ãã·ã¥ãšãªãŒã³ã€ã¡ãŒãžã®äž¡æ¹ã䜿çšã§ããŸãã ã€ãŸããã€ã³ã¹ããŒã©ãŒã€ã¡ãŒãžã䜿çšããŠPythonããã£ã¬ã¯ããªã«ã€ã³ã¹ããŒã«ããæçµçãªã€ã¡ãŒãžã«COPY --fromã䜿çšããŠãã€ã³ã¹ããŒã«ã¢ãŒãã£ãã¡ã¯ããpipèªäœãå«ãŸãªãå¿ èŠãªpythonãã¡ã€ã«ã®ã¿ã転éããŸãã
@manishtomar ãããããšããã¯ãããããïŒ ã¯ãªãŒã³ãªå Žåããã¹ãŠã®äŸåé¢ä¿ãå床ããŠã³ããŒãããããã«ããããŠãã€ãŒã«ã«å€æãããŠãã£ãã·ã¥ãããŠãããå®å
ç°å¢ã«ã€ã³ã¹ããŒã«ãããŸãã ãããã£ãŠãèŠä»¶ãããã«å
¥ãããšãããã¯1åéãã®ä»äºã«ãªããŸãã ãã ãã1ã€ã®å°ããªäŸåé¢ä¿ãæŽæ°ãããå Žåããã¹ãŠã®äŸåé¢ä¿ãåããŠã³ããŒããåæ§ç¯ãåãã€ãŒã«ãããã³åãã£ãã·ã¥ããŠäœ¿çšã§ããããã«ããå¿
èŠããããŸãã
CIã䜿çšããŠã©ã€ãã©ãªãšã¢ããªã±ãŒã·ã§ã³ãè€æ°ã®ãžã§ãã®ãããªãã¯ã¹ã§æ§ç¯ããã³ãã¹ãããå ŽåãCIãµãŒããŒå
ã®åæãžã§ãã®æ°ã§äžèšã®äœæ¥ãä¹ç®ãããšãSSDã䜿çšããå Žåã§ãiowaitã3ç§ä»¥äžã«äžæããå¹³åè² è·ã15ãè¶
ããŸãã ïŒãããã®æ°å€ã¯ã2ã€ã®åæãã«ããšæ倧20ã®äŸåé¢ä¿ãæã€ã¢ããªã§å®éã®ãã®ã§ãïŒpipãã£ãã·ã¥ã¯ãæºåãã§ããããã±ãŒãžã®åããŠã³ããŒããåãã«ããããã³åãã€ãŒã«ãåé¿ããŠãæ£ããæ¹æ³ã§ãããè¡ã£ãŠãããšæããŸãã bind -vããªããšãæéãšãµãŒããŒãªãœãŒã¹ã倱ãããŸãã
@ibukanov ãããããšãã ã¢ããªããã±ãŒãžããã«ãããŠåŸã§äœ¿çšããããã«ãã«ãã¹ããŒãžDockerfileã䜿çšããŠããŸãã Dockerfileã1ã€ã ãã§ããããæ°åãã«ããããå Žåã¯åœ¹ç«ã¡ãŸãããDockerfileãè€æ°ããããããããpythonããŒãžã§ã³ïŒçŸæç¹ã§ã¯2.7,3.6ïŒã«å¯ŸããŠãã«ããããããã«ããã€ãã®c-extensionsãå¿ èŠãªå Žåã¯ã©ããªããŸããïŒéžæããããŒã¹ã€ã¡ãŒãžçšã«ãã«ãããŸããïŒ äžèšã®æ®µèœã¯ã©ãã§ããïŒ
@thaJeztahããªãã®ææ¡ã¯çŽ æŽããããæéãç¯çŽã§ããŸããããã«ããã£ãã·ã¥ã®å Žåãä»ã®ã€ã¡ãŒãžããäœãã³ããŒããå¿
èŠã¯ãããŸããã
ã³ããŒããã«å¥ã®ç»åã«ã¢ã¯ã»ã¹ã§ããªãã®ã¯ãªãã§ããïŒ
@thedrowç§ã®äŸã¯ãçŸåšããã«ããæ©èœã䜿çšãããã®ã§ãã RUN --mount
ã®ææ¡ïŒhttps://github.com/moby/moby/issues/32507ïŒãã芧ãã ãããããã¯ããŠãŒã¹ã±ãŒã¹ã«ããé©ããŠããå¯èœæ§ããããŸãã
äžèšã®ã¹ã¬ãããèªããšãDockerãã«ãããã»ã¹ã®åºæ¬çãªæ©èœã®ã®ã£ãããä¿®æ£ããããã«ãå€ãã®äººãå¿æ¥ä¿®çãèŠã€ããããšããŠããã®ãããããŸãã ãã¹ãããŠã³ããšã€ã¡ãŒãžããŠã³ããå¿ ãããæ··åããªãéãã移æ€æ§ã®æ ¹æ ãã説åŸåã®ããè°è«ã¯èŠåœãããŸãããççŽã«èšã£ãŠãçãããæ æ°ãªè°è«ã§ãã
ç§ã¯gentooã³ã³ããã®ãŠãŒã¶ãŒã§ãããã httpsïŒ//github.com/moby/moby/issues/3156ãããªãã€ã¬ã¯ããããŸãããããã¯ããã®æ¬ èœããŠããæ©èœã®å®å šã«æå¹ãªãŠãŒã¹ã±ãŒã¹ã§ãã
ç§ãæ¬åœã«æãã§ããã®ã¯ããã«ãæã«å¥ã®ã€ã¡ãŒãžã®ã³ã³ãã³ããããŠã³ãããŠãã€ã¡ãŒãžãè¥å€§åããªãããã«ããæ©èœã§ãã
@kbaegisã¯ã httpsïŒ//github.com/moby/moby/issues/32507ã§ææ¡ãããŠããæ©èœãšå®å šã«äžèŽããŠããããã«èãããŸã
ãã¡ããã ããã¯ã3幎ã§ã¯ãªã1幎ã®ããã¯ãã°ã§æªå®è£ ã®P3ã«ãããŸããã
https://github.com/projectatomic/buildahã¯ããã®åºæ¬çãªæ©èœã®ããã«ãå®éã«ã¯ããã§Dockerãã«ããããªãæ©ãäžåã£ãŠããããã§ãã ãããèµ·ãã£ããããã€ãã©ã€ã³ãåãæ¿ããã€ããã ãšæããŸãã
@kbaegisãã®ãã£ã¹ã«ãã·ã§ã³ã«è¿œå ããããã«ããã«æ¥ãã®ã¯äœã§ããïŒ å¥ã®ææ¡ãš_æ£ç¢ºã«_äžèŽãããŠãŒã¹ã±ãŒã¹ã«ã€ããŠèª¬æããŸããã
ç§ãæ¬åœã«æãã§ããã®ã¯ããã«ãæã«å¥ã®ã€ã¡ãŒãžã®ã³ã³ãã³ããããŠã³ãããŠãã€ã¡ãŒãžãè¥å€§åããªãããã«ããæ©èœã§ãã
ããã¯ãªãŒãã³ãœãŒã¹ã§ãããç©äºã¯éæ³ã®ããã«ååšããããšã¯ãããŸããã
ãã£ã¹ã«ãã·ã§ã³ã«äœãè¿œå ãããã§ããïŒ
ç°¡æœã«èšãã°ãç§ã¯ãã®ããŒã«ã»ãããã移è¡ããŠããŸãã ç§ã¯ããã«äžäººã§ã¯ãªããšç¢ºä¿¡ããŠããã®ã§ãããã¯éçºããŒã ã«ãšã£ãŠè²Žéãªæ å ±ã§ãããšç¢ºä¿¡ããŠããŸãã
ãã®ãŠãŒã¹ã±ãŒã¹ïŒããã³ãã®æ©èœãæäŸããä¿¡é Œã§ããåé¿çïŒããµããŒãããããã®æ°·æ²³ã®é床ãšäœãåªå 床ã«ãããç§ã¯ä»ã®ããŒã«ã«è¿œã蟌ãŸããæ©èœãäžè¶³ããŠããããã«ãã®ãã«ããã€ãã©ã€ã³ãæŸæ£ããŠããŸãã
è¿œå ããïŒåããã·ã¥ã確ãã«ïŒãŠãŒã¹ã±ãŒã¹ããããŸãã ïŒ32507ã¯ããã«ããé©ããŠãããããããŸããã
ããã€ãã®ãã€ãªã€ã³ãã©ããã£ã¯ã¹ãã€ãã©ã€ã³çšã®Dockerã€ã¡ãŒãžãäœæããŠããŸãã ããã€ãã®ããŒã«ã§ã¯ãã³ã³ãã€ã«/ã€ã³ã¹ããŒã«ã®åã«ããã€ãã®ããŒã¿ããŒã¹ãååšããŠããå¿ èŠããããŸãïŒè³ªåããªãã§ãã ãããç§ã®ã³ãŒãã§ã¯ãããŸããïŒã ãããã®ããŒã¿ããŒã¹ã¯ãæäœã§ã30GBã®ééããããŸãã
å®è¡æã«ãç§ã¯ç¢ºãã«ãããã®ããŒã¿ããŒã¹ã-v
ããªã¥ãŒã ã«ããŠã³ããããããšãæå³ããŠããŸãã æ®å¿µãªããããã«ãããã»ã¹äžã«ããããããã€ã¯ãããã«ãããè¡ãããšã¯ã§ãããããªãåå£ãªãµã€ãºã®ã€ã¡ãŒãžã«ãªããŸãã
@draeathã¯https://github.com/grammarly/rockerãèŠãŠãã ããã ããã¯ãã§ã«çŽ æµãªMOUNTåœä»€ããµããŒãããŠããŸãã
@draeathããBuildahããã§ãã¯ããŠãã ãããããã°ã©ãã³ã°ããŒã«ã®ããã«èšå®ãããŠãããããããã©ã«ãã§ããŠã³ãããµããŒãããŠããŸãã Dockerfileã䜿çšããããŠã³ãããµããŒãããŸãã
@fatherlinuxãš@ligã®äž¡æ¹ã«æè¬ããŸã-ããã¯ç§ã®ä»äºãæãéããã®ã«åœ¹ç«ã¡ãŸãã ããã§ãããããžã§ã¯ãã®å€ã«åºãŠãããè¡ãå¿ èŠã¯ãªããšæããŸããããã§ãããããšïŒ32507ãå®è£ ãããã®ã楜ãã¿ã«ããŠããŸã;ïŒ
ç§ã¯ããã€ãã®ã°ãŒã°ã«ãä»ããŠããã«æ¥ãŠãåãæ©èœãã€ãŸããdockerrunãæéã§ã¯ãªããdockerbuildãæéã®ããªã¥ãŒã ãèŠæ±ããŸããã
CPUãå«ãçµã¿èŸŒã¿ã·ã¹ãã ããããŸãã ã¡ãŒã«ãŒã¯ãã·ã¹ãã ã€ã¡ãŒãžãäœæãããã®ã€ã¡ãŒãžãCPUã«è»¢éããããã®ããŒã«ãæäŸããŠããŸãã ãã®ããŒã«ã¯ç§ã«ãšã£ãŠãµãŒãããŒãã£ã§ãããå€æŽããããšã¯ã§ããŸããã ã¡ãŒã«ãŒãç§ã®èŠæ±ã§ãããå€æŽããå¯èœæ§ã¯äœãã§ãã
æåã®ãã¹ããã¡ãŒã ãŠã§ã¢ã€ã¡ãŒãžã®ãã«ãããå®è¡ããDockerã€ã¡ãŒãžããã«ãããŠããããã¡ãŒã ãŠã§ã¢ã€ã¡ãŒãžãæ°ãããªãã©ã€ã³PCBã«ããã·ã¥ããã ãã®ã³ã³ãããŒãçæã§ããããã«ããããšæããŸãã Dockerfileã¯æ¬¡ã®ããã«ãªããŸãã
- - - - - [ ããã§åã ] - - - - -
ãã«ããŒãšããŠã®ããŒã¹ã€ã¡ãŒãžãã
ã³ããŒsrcsrc
build-srcãå®è¡ããŸã
ãã©ãã·ã£ãŒãšããŠã®ããŒã¹ã€ã¡ãŒãžãã
COPY --from = builder build-artifacts
cpu-build-and-flash--build-onlyãå®è¡ããŸã
- - - - - [ ããã§åã ] - - - - -
æ®å¿µãªãããcpu-build-and-flashã¹ãããã§ã¯ããã¡ãŒã ãŠã§ã¢ã€ã¡ãŒãžãããã€ã¹ã«ããã·ã¥ããªãå Žåã§ããUSBãã¹ãä»ããŠã¿ãŒã²ããããã€ã¹ã«ã¢ã¯ã»ã¹ããå¿
èŠããããŸãã ãããã£ãŠããdockerrunãã³ãã³ãããã-v/ dev / usb / busïŒ/ dev / usb / busããååŸãã代ããã«ãã«ãã«å«ããå¿
èŠããããŸãã
ãããçŸåšäžå¯èœã§ããããšã¯æããã§ãã
ç§ãé²ããŠããåé¿çã¯ãã³ã³ãããã€ã¡ãŒãžã«ãdocker container commitãããããšã§ãç¹æ» ããã€ã¡ãŒãžãæåã§äœæããããšã§ãã ãã«ãæã«USBãã¹ãããŠã³ããããã ãã§ãã
èå³ã®ããæ¹ã®ããã«æŽæ°ããŠãã ããïŒç§ã¯æè¿ãbuildahã䜿çšããŠãã€ãå šäœãæ£åžžã«åæ§ç¯ããŸããã çŸåšã2ã€ã®ãã«ããã€ãã©ã€ã³ã䞊è¡ããŠå®è¡ããŠãããoci / buildahãã€ãã©ã€ã³ã¯ããå°ããªã€ã¡ãŒãžãçæããŠããŸãïŒå ·äœçã«ã¯ãå¥ã®ããŠã³ãã§ãã¹ã¯ããŠ/ usr / portageãåé€ããŸãïŒã
ãããŠæåŸã«ããã®æ©èœã¯ããã«ãããŸãïŒ https ://github.com/docker/docker-py/issues/1498
ãããããã«ããã£ãã·ã¥çšã®RWããªã¥ãŒã ãå¿ èŠã§ã
2018幎4æ28æ¥åææ¥ã17ïŒ29ÐПÑеМбеÑгÐаÑкã notifications @github.comã¯æ¬¡ã®ããã«æžããŠããŸãã
ãããŠæåŸã«ããã®æ©èœã¯ããã«ãããŸãïŒdocker / docker-pyïŒ1498
https://github.com/docker/docker-py/issues/1498â
ããªããèšåãããã®ã§ãããªãã¯ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/moby/moby/issues/14080#issuecomment-385188262 ããŸãã¯ãã¥ãŒã
ã¹ã¬ãã
https://github.com/notifications/unsubscribe-auth/AAZQTJodLCCzyDdPFtNiIUZ_z85YvLWbks5ttJjagaJpZM4FIdOc
ã
ãŸããCIãã€ãã©ã€ã³ã®å€æ®µéãã«ãããã»ã¹äžã«åäœãã¹ãçµæãã¡ã€ã«ããšã¯ã¹ããŒãã§ããããã«ããã®æ©èœïŒæžã蟌ã¿æ©èœä»ãïŒãèŠãããšæããŸãã ãã«ãã®ç§»æ€æ§ã®ç²Ÿç¥ãç¶æããããã«ã-vã¹ã€ãããæäŸãããŠããªãå Žåããã¡ã€ã«ã¯ãã®æ®µéã§ãã¹ãã€ã¡ãŒãžå ã«å éšçã«æžã蟌ãŸããã ãã§ãã
çæ³çãªç®æšã¯ã1åãã«ããã1åãã¹ããããã¹ãã倱æããå Žåã§ãïŒç¹ã«ã€ãã³ããçºçããå Žåã§ãïŒãçµæãã¡ã€ã«ããã¹ãã·ã¹ãã ã«æž¡ããŠããã«ããåæ¢ããããšã§ãã
ã¯ãããé¡ãããŸãã äžæ¥äžã
å®å šã«é¢é£ããŠããããã§ã¯ãããŸãããããããã€ã¡ã³ãã€ã³ãã©ã¹ãã©ã¯ãã£ã®äžéšã移è¡ããŠããããã«ãåŸã«ã€ã¡ãŒãžãããã¡ã€ã«ãã³ããŒããæ¹æ³ãå¿ èŠã§ããã 以äžã¯ããªãã¯ãããŸããïŒ
docker build -t x .
ID=$(docker create x)
docker cp $ID:/package.deb .
docker rm $ID
å€æ®µdockerãã¡ã€ã«ãå°å ¥ããããšãã«ãã§ã«è¿œå ãããŠããã¯ãã§ãã æçµçã«ã¯ãç¹ã«CIãã«ããã€ãã©ã€ã³ã®å Žåããã«ãã¹ããŒãžDockerãã¡ã€ã«ã®ã¹ããŒãžãšããŠãŠããããã¹ãã®å®è¡ãéå§ãããšããã«ã誰ãããã®åé¡ã«çŽé¢ããããšã«ãªããŸãã ãŸãããŠããããã¹ãã¬ããŒããVSTSã«å ¬éããå¿ èŠããããšãããã®åé¡ã«ãçŽé¢ããŠããŸãã ãã§ã«åé¿çãé©çšããŠãã@hoffaã¯èšåããŠããŸãã ããããçµå±ã®ãšãããããã¯åé¿çã§ãããç©äºãè€éã«ããŸãã
ãã«ããã£ãã·ã¥çšã®ãã«ãæããªã¥ãŒã ãå¿ èŠãªäººã®ããã«ãå¥ã®åé¡ãäœæããå¿ èŠããããŸããïŒ
@ajbouhã¯ããããããhttps://github.com/moby/buildkit/issuesã«ãããŸã
https://github.com/moby/moby/issues/32507#issuecomment-391685221ãåç §ããŠãã ãã
2018幎5æ23æ¥æ°Žææ¥ã19ïŒ22é ç°æåŒ[email protected]ã¯æ¬¡ã®ããã«æžããŠããŸãã
@ajbouh https://github.com/ajbouhã¯ãããããã
https://github.com/moby/buildkit/issuesâ
ããªããèšåãããã®ã§ãããªãã¯ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/moby/moby/issues/14080#issuecomment-391566368 ããŸãã¯ãã¥ãŒã
ã¹ã¬ãã
https://github.com/notifications/unsubscribe-auth/AAAcnSqNoVc4j34ElECy53gIfPecQFKfks5t1hlkgaJpZM4FIdOc
ã
ãã«ãæã«ããªã¥ãŒã ãè¿œå ããããšã¯ã§ããŸãããããã¹ããè¿œå ããããšã¯ã§ããŸãããã®ããã --add-host yum-mirror:$MIRROR_IP
ã®ãããªãã®ã䜿çšããŠãã¹ãŠã®Dockerã€ã¡ãŒãžããã«ãããŸããããã¯ããã«ãã€ã¡ãŒãžãã©ãããŒãä»ããŠæ€åºããyumãã©ãŒãæäŸããŸããã€ã ã ãããžã§ã¯ãã1æ¥ã«äœåºŠãäŸåé¢ä¿ãå€æŽãããªãã©ã€ã³ãŸãã¯æ¥ç¶äžè¯ã®å Žåã«äŸ¿å©ã§ãïŒãããžã§ã¯ãã®äžéšã«ã¯ãå€ãã®éšéã®æŽæ°ãšã¯ãªãŒã³ã¢ãããå«ãŸããŸãïŒã
ãã®åé¡ã解決ããããšã«å¯ŸããDockerã®æµæã¯è ¹ç«ããããšæããŸãã
ãã«ããããã®å®éšçãªãµããŒããæè¿çµ±åããã RUN --mount=<opts> <command>
ã®ãªãã·ã§ã³ãä»å±ããŠããŸãã
@ cpuguy83ãžã®ãªã³ã¯æ³šïŒ https ïŒ//github.com/moby/buildkit/pull/442
@glensc @ cpuguy83ãã®çµ±åãããæ©èœã®ãªãªãŒã¹ã¯ãã€æåŸ ã§ããŸããïŒ
+1
RUN --mount
ã¯ããªã¥ãŒã ããµããŒãããŠããªãããã httpsïŒ//github.com/avsm/docker-ssh-agent-forwardã®ãããªãã®ã¯ãã«ãæã«äžå¯èœãªãŸãŸã§ãããããã«å¯Ÿãã解決çã¯äœã§ããïŒ
@ peter-edge https://github.com/moby/buildkit/pull/655
docker build --secret
ãã€ãã«Docker18.09ã§å©çšå¯èœã«ãªããŸããhttps://medium.com/@tonistiigi/build-secrets-and-ssh-forwarding-in-docker-18-09-ae8161d066
ãã®åé¡ã解決ã§ããŸããïŒ
--secret
ã¯ãç§ãç¥ãéãããã£ãã·ã³ã°ã®ãŠãŒã¹ã±ãŒã¹ã«ã¯äœ¿çšã§ããŸããã
@AkihiroSuda RUN --mount
ã¯äžè¬çã«ããã®åé¡ã®è§£æ±ºçãšããŠãµãããããã®ã®ããã«èŠããŸãã
ã¯ãã RUN --mount=type=cache
ïŒãã£ãã·ã¥ããªã¥ãŒã çšïŒãš--mount=type=secret
ãšdocker build --secret
ïŒã·ãŒã¯ã¬ããããªã¥ãŒã çšïŒãã»ãŒåé¡ãã«ããŒããŠãããšæããŸãã
@AkihiroSudaã ãããå ã®åé¡ã解決ããå®çšçãªäŸãèŠãã®ã¯è¯ãã§ããã
@AkihiroSudaèšäºïŒhttps://medium.com/@tonistiigi/build-secrets-and-ssh-forwarding-in-docker-18-09-ae8161d066ïŒãããã«ãäžã«ããŠã³ãã䜿çšãã2ã€ã®ãŠãŒã¹ã±ãŒã¹ãèŠãŸããïŒã·ãŒã¯ã¬ãããšSSH
[ã²ã¿ã€]
docker build --secret id=mysite.key,src=path/to/mysite.key .
RUN --mount=type=secret,id=mysite.key,required <command-to-run>
[SSH]
RUN --mount=type=ssh git clone [email protected]:myorg/myproject.git myproject
ãã®èšäºã§ããã®å·ã§ã䜿çšæ¹æ³ã説æãããŠããªãä»ã®2ã€ã®ãŠãŒã¹ã±ãŒã¹ïŒç§ãèŠããŠããïŒããããŸãïŒ
1ïŒ [ãã£ãã·ã¥] RUN --mount=type=cache
2ïŒäžè¬çãªããªã¥ãŒã ïŒããšãã°ãSSL蚌ææžãããŠã³ãããããããŸãã¯ãã«ãäžã«äœ¿çšããå¿
èŠãããããçæãããã€ã¡ãŒãžã«ã¯å«ãŸããªã倧ããªããªã¥ãŒã ã®å Žåãªã©...ïŒ
ãŠãŒã¹ã±ãŒã¹ãwebpack
ãå®è¡ããåã«yarn
ã¯ãŒã¯ã¹ããŒã¹ãããŠã³ããããš
ããªãã¯ããã®ãã¹ãŠãããããšãã§ããŸãã
RUN --mount=type=cache,from=<some image>,source=<path in from image>,target=<target>
from=<some image>
ãfrom=<some build stage>
ã«çœ®ãæããããšãã§ããŸã
äžèªç¶ãªäŸã次ã«ç€ºããŸãã
# syntax=docker/dockerfile:1.0.0-experimental
FROM busybox as hello
RUN echo hello > /hello.txt
FROM scratch
RUN --mount=type=cache,from=busybox,source=/bin,target=/bin --mount=type=cache,from=hello,source=/hello.txt,target=/tmp/hello.txt echo /tmp/hello.txt
ããã«é¢ããããã€ãã®ããã¥ã¡ã³ãã¯æ¬¡ã®ãšããã§ãïŒ https ïŒ//github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/experimental.md
@AkihiroSudaã«åæããŸããããã§ãã¹ãŠã®ã±ãŒã¹ãåŠçã§ããã¯ãã§ãããããã§ãªãå Žåã¯ãç¥ãããã ããã
@AkihiroSuda @ cpuguy83 ïŒæ®å¿µãªãããçŸåšã®å®è£ ïŒdocker 18.09ã®buildkitïŒã«ã¯ãã©ã€ããŒãã¬ãžã¹ããªã«åé¡ããããŸãã çŸåšã®ãšããããã©ã€ããŒãã¬ãžã¹ããªãä»ããŠç»åãååŸããå¿ èŠãããå Žåããããã®æ°æ©èœã¯äœ¿çšã§ããŸããã https://github.com/moby/moby/issues/38303ã§ç§ã®ãã¹ããåç §ããŠãã ããã
ããã¯Jenkinsã¢ãŒãã£ãã¡ã¯ãã«ã䜿çšããããšæããŸããããšãã°ãDockerã€ã¡ãŒãžãäœæããŠå éšã§äœããã³ã³ãã€ã«ããå Žåãjunitpyteståºåãªã©ã®ã¢ãŒãã£ãã¡ã¯ããååŸããããšæããŸãã
ããã¯éåžžã«äŸ¿å©ã§ãã RUN --mount=type=cache /user/.cache/pip pip install
--experimental
ãè¿œå ããå¿
èŠã¯ãããŸããïŒããã±ãŒãžã€ã³ããã¯ã¹ã®åž¯åå¹
ã倧å¹
ã«ç¯çŽããããïŒã
buildah bud
ïŒ buildah build-using-dockerfile
ïŒã«ã¯--volume
/ -v
ãªãã·ã§ã³ããããŸãïŒ
https://github.com/containers/buildah/blob/master/docs/buildah-bud.md
buildah
ã¯ãDockerãœã±ãããªãã§éã«ãŒããšããŠãã«ããå®è¡ã§ããŸãã
ãããã¯ãŒã¯ããã®ããã±ãŒãžã®ããŠã³ããŒãã¯ããåçŸæ§ãé«ãã®ã§ïŒ
ã¯ã©ã€ã¢ã³ãã«ã--experimentalããè¿œå ããå¿ èŠã¯ãªãããDOCKER_BUILDKIT=1ãã®ã¿ãè¿œå ããŸãã
ã¯ããã³ã³ããã¹ãããã¹ãŠDockerfileã«ãããšããç¹ã§ããããã¯ãŒã¯ãã«ãã®åçŸæ§ãé«ããªã£ãŠããŸãã ãã«ããæ©èœãããããã«ãã¹ãããã³ã³ããã¹ããããŠã³ãããå¿ èŠãããå Žåãããã¯æªãçµéšã§ãã
ãã«ãã«ã€ã¡ãŒãžãããŠã³ãããããšãã§ããããšã«æ³šæããŠãã ããã
ã¯ããã³ã³ããã¹ãããã¹ãŠDockerfileã«ãããšããç¹ã§ããããã¯ãŒã¯ãã«ãã®åçŸæ§ãé«ããªã£ãŠããŸãã
確ãã«ãDockerfileã«RUN apt-get update
ããããšãã€ã¡ãŒãžã®ãã«ãã«å¿
èŠãªãã¹ãŠã®æé ã確å®ã«å®è¡ãããŸãã ãã ããè¿œå ã®ã³ã³ããã¹ãããµãŒãããŒãã£ããããŠã³ããŒãããããããåçŸã§ããŸããã ããŠã³ããšã®å¯äžã®éãã¯ããã¹ãŠã®å€éšã³ã³ããã¹ããå®éã«Dockerfileã§å®çŸ©ãããŠããããšã§ãã
ãã«ããæ©èœãããããã«ãã¹ãããã³ã³ããã¹ããããŠã³ãããå¿ èŠãããå Žåãããã¯æªãçµéšã§ãã
Dockerãã«ãã§ã®ç§ã®æªãçµéšã¯ãåçŸæ§ããªãããšã§ãããã¹ããããã£ãã·ã¥ãããŠã³ãããããšã§ééããªãã¡ãªãããåŸãããããã€ãã®ãŠãŒã¹ã±ãŒã¹ãã¹ããŒãã¢ããããããšã¯ééããããŸããã
æçµçã«ç§ãããããšã¯ãå€æ®µéã®ãã«ããè¡ãããšã§ãã ãããã¯ãŒã¯ããã³ã³ããã¹ããååŸãã1ã€ã®ã€ã¡ãŒãžãããã«ããããªã¢ãŒãã³ã³ããã¹ãã®ã¹ãããã·ã§ãããšããŠæ©èœããŸãã 次ã«ãä»»æã®ããŒãžã§ã³ã§ã¿ã°ä»ããããšãæ¥ä»ã¯æ£åžžã«æ©èœããŸãã äŸãã°ïŒ
RUN apt-get update
docker build -t aptupdate-20190417
ãããŠå®éã®ç»åã§ã¯ïŒ
FROM aptupdate-20190417
FROM somebaseimage
COPY --from=aptupdate-20190417 /var/apt /var/apt
ä»ã®ãªã¢ãŒãã³ã³ããã¹ãã§ç¹°ãè¿ããšãå€ããå°ãªããåçŸå¯èœãªãã®ããããŸãã
ã€ãŸãããããã¯ãŒã¯ã¢ã¯ã»ã¹ã«äŸåããDockerfileã¯ããããåçŸå¯èœã§ã¯ãããŸããã ããŠã³ãã䜿çšãããšåçŸæ§ã倱ãããå¯èœæ§ããããŸãããäžéšã®ãŠãŒã¹ã±ãŒã¹ãåçŸå¯èœã«ããã®ã«åœ¹ç«ã¡ãŸãã ããããDockerfileã«ã¯ãå®éã«ã€ã¡ãŒãžããã«ãããããã«å¿ èŠãªãã¹ãŠã®æé ãå¿ èŠã§ãããšæããŸãããç§ã®çµéšã§ã¯ãã»ãšãã©ã®å Žåãã€ã¡ãŒãžããã«ãããããã®ç¬èªã®ããŒã«ãäœæããŸãã
ã€ãŸãã RUN --mount=type=cache
ã¯ãŸãã«ããã«åœãŠã¯ãŸããŸãã
ãŸãã¯ãã¬ãžã¹ããªã®å¥ã®ã€ã¡ãŒãžããããŠã³ãããŠããã§ããããããšãã§ããŸãã
apt
ã³ãã³ãã¯ããã§ããããããã®ãåºå®ããããšã§ïŒæ¯èŒçïŒåçŸå¯èœã«ããããšãã§ããŸãã
ããããæ¬åœã«ãã¹ãŠã®ããããå¶åŸ¡ãããã®ãªãããªããã«ãã§aptã䜿çšããŠããã®ã§ããïŒ ããããã«ããã¹ãã«ä¿åããããšã¯åçŸæ§ããªãããã¹ãéã§ç°¡åã«å£ããŸãã
ãããã¬ãžã¹ããªã«ä¿æããããšã¯ããããã¯ãŒã¯é害ã®å¯èœæ§ãé€ããŠæªãããšã§ã¯ãããŸãã...ãã¡ããããã¯å
¬æ£ãªæ¹å€ã§ãã
buildahãšredhatã®ãã©ãŒã¯ã®-v
ã¯ãåºããããããããã§ã¯æ瀺çã«æåŠãããŸãã...圹ã«ç«ããªãããšã¯èšããŸã§ããããŸãããããã¹ãéã§ç°¡åã«å£ããŠããŸãã docker build
ã®èšèšã«åããŸãã ã
äžæ¹ãRHããããè¿œå ããçç±ïŒããæ£ç¢ºã«ã¯ã圌ããããã«åãçµãããšã決ããçç±ïŒã¯ãRHELã¯ã¬ãã³ã·ã£ã«ããã«ãç°å¢ã«ããŠã³ãã§ããããã«ããããã§ããã
ã¯ããã³ã³ããã¹ãããã¹ãŠDockerfileã«ãããšããç¹ã§ããããã¯ãŒã¯ãã«ãã®åçŸæ§ãé«ããªã£ãŠããŸãã ãã«ããæ©èœãããããã«ãã¹ãããã³ã³ããã¹ããããŠã³ãããå¿ èŠãããå Žåãããã¯æªãçµéšã§ãã
ç§ã¯æ¿ããå察ããŸãã ãããã¯ãŒã¯ãããŠã³ããŠããããå±éºã«ãããããŠããå¯èœæ§ããããŸãã ãã®å ŽåãããŒã«ã«ãã£ãã·ã¥ã¯ãã€ã³ã¿ãŒããããããŠã³ããŠãããšãã«ãã«ãå šäœã倱æããã®ãé²ããŸãã
docker-compose.ymlã§volumes:
ã1åæå®ã§ããŸãã ãããã代ããã«DOCKER_BUILDKIT=1
ãå®è¡ããã¢ããã¹ããªãŒã ã§ç®¡çãããŠããDockerfilesã«RUN --mount=type=cache
ãè¿œå ããå¿
èŠããããŸããïŒ ãªãã§ïŒ
CIãã«ãã§ã¯ãããªã¥ãŒã ããŠã³ãïŒã«ãŒããªãã§éã«ãŒããšããŠå®è¡ããããã«ãïŒã«ãã£ãã·ã¥ã§ãããæ°åããæ°åã®ããã±ãŒãžïŒ1æ¥ã«æ°åãŸãã¯æ°çŸåïŒã®äžèŠãªåããŠã³ããŒãã倧éã«çºçããããšãæå³ããŸãããã¹ãäžã§ç¬èªã®ããªã¥ãŒã ãæã€ç¹æš©ã³ã³ãããŒãå®è¡ããæ©èœïŒã
ããã±ãŒãžã€ã³ããã¯ã¹ã¯ãå€ãã®å Žåãå¯ä»ã«ãã£ãŠæãã¿ãªããµããŒããããŠããŸãã ãªã¢ãŒããªãœãŒã¹ã¯ãã«ãã³ã³ããŒãã³ãã®ããåçŸæ§ã®é«ããã£ãã·ã¥ã§ãããšãã誀ã£ã信念ã«åºã¥ããŠãåçŸæ§ã®èª€ã£ãèããæºããããã«åž¯åå¹ ã«ãã®ãéã浪費ããããšã¯ãã²ã©ãèç«ãããããšã§ãã
docker-compose.ymlãæ©èœããããã«ã --volume
ãè¿œå ããŠãã ããã
docker-compose.ymlãæ©èœããããã«ã-volumeãè¿œå ããŠãã ããã
ãdocker-composeããæ£ããæ©èœãããã®ã¯éã§ãã
docker-æ¶è²»è
ã«ãã®ãããžã§ã¯ããäœæããŸãããã®éã§ã¯ãããŸããã
docker-composeã¯dockerãœã±ãããšçžäºäœçšããŸãã docker-compose YAMLã¯ãã³ã³ãããŒãªãã·ã§ã³ãæ ŒçŽããããã®çµ±åãããæ¹æ³ã§ãïŒããã¯ãk8sãããå®çŸ©ïŒpodmanãããçšåºŠãµããŒãããŸãïŒã«å€æã§ããŸãïŒã DOCKER_BUILDKIT=1
ãåçŸå¯èœãªæ¹æ³ã§æå®ããã«ã¯ã©ãããã°ããã§ããïŒ docker-compose.ymlã§åçŸå¯èœãªæ¹æ³ã§build_volumes:
ãæå®ã§ããŸãã
1æ¥ã«nåå®è¡ãããCIãã«ãã¹ã¯ãªããã§ãããšãã°docker-compose build
ïŒããšãã°ãansibleã䜿çšïŒãŸãã¯packer
ïŒbuildahãšpodmanã®ä»£ããã«ïŒãåŒã³åºããŠã€ã¡ãŒãžããã«ãããå Žåãããã€ãã®ç®çããããŸãïŒ
ãã£ãã·ã¥ããªã¥ãŒã ããã©ãã·ã¥ããå¿ èŠãããå Žåã¯ããã£ãã·ã¥ããªã¥ãŒã ããã©ãã·ã¥ã§ããŸãã
RUN pip install app && rm -rf /root/.cache
COPY . /app/src/app
COPY .cache/pip /app/.cache/pip
RUN pip install /app/src/app \
&& rm -rf /app/.cache/pip
ONBUILD
ïŒRUN --mount=type=cache
ãè¿œå ããŠãç°å¢å€æ°ãèšå®ããŸã# Fork by copying to modify every pip install line
RUN --mount=type=cache /app/.cache/pip pip install /app/src/pip
$ DOCKER_BUILDKIT=1 docker build . [...]
--mount=type=cache
ãã£ãã·ã¥ããã©ãã·ã¥ããæ¹æ³ïŒïŒïŒ$ buildah bud -v .cache/pip:/app/.cache.pip
$ docker build -v .cache/pip:/app/.cache.pip
services:
app:
image: imgname:latest
build: .
build_volumes: # "build_volumes" ?
- ./.cache/pip:/app/.cache/pip
$ docker-compose build
ïŒpoint_upïŒãã ã®ãªãã€ã³ããŒã§ãã ãã§ãã¯ãµã ã確èªããããšã§ãããŠã³ããŒããããã¡ã€ã«ãåºå®ã§ããŸãã pipãªã©ã®äžéšã®ããã±ãŒãžãããŒãžã£ãŒãããããµããŒãããŠããŸãã
@westurner詳现ãªèª¬æãããããšãã
以äžã¯ã±ãŒã¹Bã«äŒŒãŠãããšæããŸããããã£ãã·ã¥ãã¯ãªã¢ãããšãã±ãŒã¹C2ã®ããã«ãªããŸãïŒããªããæ±ããŠãããã®ã ãšæããŸãïŒã
_docker-compose.ymlïŒ_
services:
my-cache:
build: ./my-cache
image: local/my-cache
my-image:
build: ./my-image
_my-cache / DockerfileïŒ_
FROM python
RUN pip install app
_my-image / DockerfileïŒ_
FROM my-repo/my-image
RUN --mount=target=/export,type=bind,from=local/my-cache
RUN pip install /app/src/app
ïŒhttps://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/experimental.md#run---mounttypecacheïŒ
ãã£ãã·ã¥ã€ã¡ãŒãžã¯æ¬¡ã®æ¹æ³ã§äœæã§ããŸãã
docker-compose build my-cache
ã³ãã³ãRUN --mount=target=/export,type=bind,from=local/my-cache
ã¯ç»åã«ãã€ã³ãããå¿
èŠããããŸãã ãã£ãã·ã¥ãæŽæ°ããå Žåã¯ããã£ãã·ã¥ã€ã¡ãŒãžãåé€ããŠåæ§ç¯ã§ããŸãã
ããã§ãRUN --mount...
ã®ãã£ãã·ã¥ã䜿çšããå Žåã¯ãããŒãžã§ã³ã§.env
ãã¡ã€ã«ã䜿çšã§ããããŒãžã§ã³ãimage: local/my-cache:$MY_VERSION
ãšfrom=local/my-cache:$MY_VERSION
ã«å«ããŸãïŒãã«ãåŒæ°ãšããŠå«ãŸããŠããŸãïŒã
my-cache
ãµãŒãã¹ãã¡ã€ã³ãµãŒãã¹ãšåããã¡ã€ã«ã«å«ããããªãå Žåã¯ãå¥ã®docker-compose
ãã¡ã€ã«ã«å«ããããšãã§ããŸãã
ããã§ãDOCKER_BUILDKIT=1
ã䜿çšããå¿
èŠãããïŒBã®å Žåãšåæ§ã§ãããããã¯å°æ¥ã®ããŒãžã§ã³ã§ã¯å¿
èŠãªããšæããŸãïŒãåçŸæ§ã¯ãããŸããïŒãã ããC2ã®å Žåãããã§ã¯ãããŸããïŒã
åçŸæ§ããªãå Žåãã©ã®ãããªããã«ãã£ãçºçããŸããïŒ ãã£ãã·ã¥ã€ã¡ãŒãžlocal/my-cache
ãDocker Hub ïŒç°ãªããªããžããªåïŒãŸãã¯ãã©ã€ããŒãã¬ãžã¹ããªã«é
眮ãããã«ãããšã«ããŒãžã§ã³ã䜿çšãããšïŒç°ãªããã£ãã·ã¥ãäœæãããŸãïŒãåãããŒãžã§ã³ã¯åžžã«åãã«ãªããŸããã£ãã·ã¥ãããã¯ãããåçŸå¯èœã«ããŸãããïŒ docker-compose
ãã¡ã€ã«ã«ãµãŒãã¹ãå«ããŠbuildã³ãã³ããåŒã³åºãå¿
èŠã¯ãããŸããã ïŒDocker Hubã«ã¯ãããã¯ãŒã¯ããã¢ã¯ã»ã¹ããå¿
èŠããããŸãããä»ã®ã€ã¡ãŒãžã§ãåãã ãšæããŸããäžåºŠããŠã³ããŒããããšãæ°ãããã£ãã·ã¥ã䜿çšããŠæ°ããããŒãžã§ã³ãçæããªãéããDocker Hubã¯äžèŠã«ãªããŸãïŒ
å 責äºé ïŒç§ã¯äžèšã®ã³ãŒãããã¹ãããŠããŸããã
@Yajo pipã®ãã§ãã¯ãµã ãµããŒãã¯ãå
ã
ãpeepãã§å®è£
ããããã®åŸpipã«ããŒãžãããŸããã æ¢ç¥ã®é©åãªããã·ã¥ããpipèŠä»¶ãã¡ã€ã«ãšã³ããªã®URLãã©ã°ã¡ã³ããšããŠè¿œå ã§ããŸãã ïŒä»å¹Žã¯PyPAãããžã§ã¯ãã®ã»ãã¥ãªãã£æ¹åã®ããã®è³éããããŸããPyPIã§ã®TUFïŒUpdate FrameworkãDocker Notaryãšåæ§ïŒã®ãµããŒãã¯ä»å¹ŽåŸåã«èšç»ãããŠããŸããïŒDockerã€ã¡ãŒãžã§pipãšPyPIïŒããŒãšä¿¡é Œã䜿çšïŒãæ£ããããŒãã¹ãã©ããããä»å¹ŽåŸåã«è©±é¡ã«ãªãå¯èœæ§ããããŸãã
ïŒç·šé;å°ãOTã§ãããé¢ä¿è
åãã§ãïŒ https://discuss.python.org/t/pypi-security-work-multifactor-auth-progress-help-needed/1042/
@lucasbasquerottoãååããã ãããããšãããããŸãã ããã¯ããã«ãæã«--volume
ãæå®ãããããã¯ããã«è€éã§ãã ã€ãŸãã次ã®ãã®ãå¿
èŠãªããã§ãã
docker build
ã·ã§ã«ç°å¢ã§DOCKER_BUILDKIT=1
ãæå®ããRUN --mount=type=cache
ã䜿çšããŠã¢ããã¹ããªãŒã ã®DockerfileRUNåœä»€ãå€æŽãããã¹ããããã¡ã€ã«ãã³ããŒã§ããå ŽåããŸãã¯ä»ã®å Žæã«ä¿åãããŠããªããã«ãæãã©ã¡ãŒã¿ãŒãæå®ã§ããå Žåããã«ãæã«ããªã¥ãŒã ãããŠã³ãããéã®åçŸæ§ãäœäžããããšãããããŸããã
ã³ããŒ|| REMOTE_FETCH || èªãã ïŒïŒ
- ãããã®ãã¡ãæãåçŸæ§ã®é«ããã®ã¯ã©ãã§ããïŒ
@westurner
Dockerãã«ãã·ã§ã«ç°å¢ã§DOCKER_BUILDKIT=1ãæå®ãã
ä»ã®æçš¿ã§èŠãããã«ã docker-compose
ã䜿çšããå Žåãããã³ã³ã³ãããŒããå®è¡ããå Žåã¯ã次ã®ããã«ãªããŸãã
$ sudo curl -L --fail https://github.com/docker/compose/releases/download/1.24.0/run.sh -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
次ã«ãããŠã³ããŒããããã¡ã€ã«ã/usr/local/bin/docker-compose
ã§ç·šéããŠããã®ç°å¢å€æ°ã䜿çšã§ããŸãã ããå€æŽããïŒ
exec docker run --rm $DOCKER_RUN_OPTIONS $DOCKER_ADDR $COMPOSE_OPTIONS $VOLUMES -w "$(pwd)" $IMAGE "$@"
ã«
DOCKER_BUILDKIT=1
exec docker run --rm $DOCKER_RUN_OPTIONS $DOCKER_ADDR $COMPOSE_OPTIONS $VOLUMES -w "$(pwd)" --env DOCKER_BUILDKIT=$DOCKER_BUILDKIT $IMAGE "$@"
ããã¯éåžžã«ç°¡åãªå€æŽã§ãããã³ãã³ããå®è¡ãã人ã«ã¯ééçã§ãã
_ïŒã³ã³ãããšããŠå®è¡ããªãå Žåãäžèšã¯é©çšãããŸããïŒ_
RUN--cacheãšargsã䜿çšããŠã¢ããã¹ããªãŒã ã®DockerfileRUNåœä»€ãå€æŽãã
ç§ãå
¬éããå Žåãããã¯RUN --mount=type=bind...
ã«ãªããŸããããããã«ããã Dockerfile
ãå€æŽããªããã°ãªããªãããšãæªãIMOã§ãã -v
ãªãã·ã§ã³ã¯ãå®éã«ã¯ã¯ããã«åªããŠãããããééçã§ãã
å¥ã®ã€ã¡ãŒãžãžã®èªã¿åã/æžã蟌ã¿ã¢ã¯ã»ã¹ïŒ å¯å€æ§ïŒ ãŸãã¯ããã£ãã·ã¥ã¯ããããå€ãããŒãžã§ã³ã§åçµãããŠãããšèšãããŠããŸããïŒ
ã€ã¡ãŒãžããã€ã³ããããšãããããã³ã³ããïŒãŸãã¯è€è£œããããã¡ã€ã«ã·ã¹ãã ã䜿çšããååïŒãäœæããããã«ãäžã«ããã§è¡ãããå€æŽã«ãã£ãŠå
ã®ã€ã¡ãŒãžãå€æŽãããããšã¯ãããŸããïŒæå³ããããŸããïŒã ãããã£ãŠããã«ãã§my-repo/my-cache:my-version
ãšããååã®ãã£ãã·ã¥ã€ã¡ãŒãžã䜿çšããŠãã«ãããå Žåã次ã®ãã«ãã§ã¯ãŸã£ããåãã«ãªããŸãïŒæš¡å£å¯èœæ§ïŒã ããææ°ã®ãã£ãã·ã¥ã䜿çšããå Žåã¯ã my-repo/my-cache:my-new-version
ã®ããã«ãæ°ããããŒãžã§ã³ã§æ°ããã€ã¡ãŒãžãäœæããŠäœ¿çšã§ããŸãã
ãããã®ãã¡ãæãåçŸæ§ã®é«ããã®ã¯ã©ãã§ããïŒ
åçŸæ§ã¯ãå¥ã®ãã·ã³ã§å®è¡ããŠããŸã£ããåããã®ã ãšæããŸãã ãã®æå³ã§ãã€ã¡ãŒãžãïŒå®å šã§ä¿¡é Œæ§ã®é«ãïŒDockerã¬ãžã¹ããªã«ããã·ã¥ãããã®ã€ã¡ãŒãžãå€æŽããªãå Žåã¯ãåçŸå¯èœã§ãããšèããŸãïŒã€ã³ã¿ãŒãããæ¥ç¶ã«æžå¿µãããå Žåã¯ããã©ã€ããŒãã¬ãžã¹ããªã䜿çšããŠã VPNãŸãã¯ãã®ãããªãã®ïŒèªåã§ãã©ã€ããŒãã¬ãžã¹ããªã䜿çšããããšã¯ãããŸããïŒïŒã
COPYã³ãã³ãããã·ã³ã®ãã£ãã·ã¥ãã³ããŒããŠããå Žåãå¥ã®ãã·ã³ã§pip install
ïŒãŸãã¯apt-get
ãªã©ïŒãå®è¡ãããšãå¥ã®ãšãã«ä¿èšŒã§ãããããåçŸå¯èœãšã¯èŠãªãããŸããããã£ãã·ã¥ã®å
容ã¯åãã«ãªããŸããïŒ å€åããã¯ããªãã«ãšã£ãŠå¿é
ãããããŸããã ããã§ãªããããããªãã
äžæ¹ããææãããŠããä¿¡é Œã§ããå ŽæïŒS3ãã±ãããªã©ïŒã«ææããŠãããã¡ã€ã«ãããå Žåã¯ããããã®ãã¡ã€ã«ããã·ã³ã«ããŠã³ããŒãããCOPYã³ãã³ãã䜿çšããŠãããã®ãã¡ã€ã«ãã³ããŒãããšãå¥ã®ãã¡ã€ã«ããè€è£œã§ããŸããåãçµæã®ãã·ã³ïŒãã¡ã€ã«ãå€æŽãããŠããããä»ã®ãã·ã³ãåã®ãã·ã³ãšåãã§ãããšæ³å®ïŒã ã§ããããããã¯åçŸå¯èœã ãšæããŸãã ããã¯ããããã®ãã¡ã€ã«ãã©ãããæ¥ãã®ãããããŠããªããããããã©ãã ãå¶åŸ¡ã§ãããã«ãã£ãŠç°ãªããŸãã
æ£çŽãªãšããããã¹ãŠã®å Žåã«100ïŒ åçŸå¯èœã§ãããšã¯èããŠããŸãããïŒçµå±ã®ãšãããããŒããŠã§ã¢ã«é害ãçºçããå¯èœæ§ããããŸãïŒãä¿¡é Œæ§ãé«ãã»ã©åªããŠããŸãã åçŸå¯èœãªããã»ã¹ã«ã€ããŠèšåãããšãã¯ãäž»ã«ãã®å 容ãšçµæãåãã§ããããšãæããŸããããã«ã¯ãå 容ãæéã®çµéãšãšãã«å€åããªããšä»®å®ããŠããããã¯ãŒã¯ããããŠã³ããŒããããã®ãå«ãŸããŸãïŒãããã¯ãŒã¯ã®å¯èœæ§ã¯èæ ®ããŠããŸããïŒããã®å Žåã®å€±æïŒã
ã³ã³ããå
ã§ãgo mod download
ä¿¡é Œã§ããªããã®ã«ããDockerãããã¯ãŒã¯ã®ãã°ãããã®ã§ïŒå°ãªããšãç§ãã¡ã®ãµã€ãºã®ã¢ããªã±ãŒã·ã§ã³ã§ã¯ïŒãæ¯åå®è¡ããŠGOPATH/pkg/mod
ããã¹ãŠããŠã³ããŒããçŽãã ãã§ããç¡é§ãªã ãã§ãªããå£ããŠããŸãã ð€·ââ
--volume
ã䜿çšã§ããã°ãäžèŠãªãã¡ã€ã«ã®ã³ããŒã倧å¹
ã«åé¿ã§ããŸãã
@kevincantu RUN --mount = type=cacheã¯ãŠãŒã¹ã±ãŒã¹ãã«ããŒããå¿ èŠããããŸã
ããã«ã¯ãDockerãã«ãå ããã¢ãžã¥ãŒã«ãå°ãªããšã1åæ£åžžã«ããŠã³ããŒãããå¿ èŠããããŸãããã®ç¹å®ã®ã±ãŒã¹ã§ã¯ãããã¯ãŸã èŠãããšããããŸããã
https://github.com/moby/moby/issues/14080#issuecomment -484314314 by @westurnerã¯ããªãè¯ãæŠèŠã§ããã buildkit
ãæ©èœãããããšãã§ããŸããã§ããïŒ
$ sudo docker -v
Docker version 19.03.1, build 74b1e89
$ sudo DOCKER_BUILDKIT=1 docker build .
Ã+Ã Building 0.1s (2/2) FINISHED
=> Ãinternalà load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 407B 0.0s
=> Ãinternalà load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
failed to create LLB definition: Dockerfile parse error line 8: Unknown flag: mount
ç§ã®Dockerfile
ã¯# syntax=docker/dockerfile:experimental
ã§å§ãŸããŸãã
å®éã«docker-compose
ã§äœ¿ãããã§ãã Dockerfile
ã§ENV DOCKER_BUILDKIT 1
ãè©Šãã docker-compose.yml
ããARG DOCKER_BUILDKIT
$ãçµç±ããŠæž¡ããŸãããããã¹ãŠåãã§ãã
$ sudo docker-compose up --build
Building web
ERROR: Dockerfile parse error line 10: Unknown flag: mount
@lucasbasquerotto https://github.com/moby/moby/issues/14080#issuecomment -484639378ã§ææ¡ãããã®ã¯ãã€ã³ã¹ããŒã«ãããŠããããŒãžã§ã³ã®docker-composeã«ã©ã®ããã«å€æãããŸããïŒ
æåŸã«ããããç§ã®ãŠãŒã¹ã±ãŒã¹ãã«ããŒãããã©ããããããããŸããããããããç§ããããè¿œæ±ãã¹ããã©ãããæããŠããã人ããããããããŸããã äŸåé¢ä¿ãæŽæ°ãããšãã«æ°ããäŸåé¢ä¿ã®ã¿ãããŠã³ããŒãããå¿
èŠãããããã«ããã«ãéã§åç¶ããããŒã«ã«éçºçšã®ãã«ãæãã£ãã·ã¥ã䜿çšããããšæããŸãã ãããã£ãŠã RUN --mount=type=cache,target=/deps
ãDockerfile
ã«è¿œå ããäŸåé¢ä¿ãããŒãžã£ãŒã®ãã£ãã·ã¥ã/deps
ã«èšå®ããŸãã
docker composeã«ã€ããŠã¯ã httpsïŒ//github.com/docker/compose/pull/6865ãåç §ããŠãã ãããããã¯ãcomposeã®æ¬¡ã®ãªãªãŒã¹åè£ã«ãªããŸãã
å¥ã®ãŠãŒã¹ã±ãŒã¹ããããŸã...binfmtãæ§æãããx86_64ãã¹ãäžã«armçšã®ã³ã³ãããŒãæ§ç¯ããããšæããŸãã ããã«ã¯ã / usr/binã«ã¢ãŒããã¯ãã£åºæã®éçqemucpuãšãã¥ã¬ãŒã¿ãŒãå¿ èŠã§ãã
ç§ã®çŸåšã®è§£æ±ºçã¯ã qemu-arm-staticã次ã®ãããªãã¡ã€ã«ãšããŠã³ã³ããã«è¿œå ããããšã§ãã
FROM arm32v7/alpine:3.10
COPY qemu-arm-static /usr/bin/qemu-arm-static
RUN apk update && apk upgrade
RUN apk add alpine-sdk cmake
...
ããç°¡åãªè§£æ±ºçã¯ã次ã®ããã«ã³ã³ããå
ã§å¿
èŠãªå Žåã«ã®ã¿ãã¡ã€ã«ãããŠã³ãããããšã§ãã
docker build -v /usr/bin/qemu-arm-static:/usr/bin/qemu-arm-static -t test:arm32v7 .
ããã¯Dockerã®å®è¡ã«ã¯éåžžã«é©ããŠããŸãããã³ã³ãããŒãæ§ç¯ããããã®ãã®æ©èœããããŸããã
x86_64ãã¹ãã§armã³ã³ãããŒããã«ãããå¥ã®è§£æ±ºçã¯ãããŸããããŸãã¯å°ãªããšããã®å Žåããã«ãæã«ããªã¥ãŒã ãèš±å¯ã§ããŸããïŒ
@jneuhauserã®ææ°ã®ã«ãŒãã«ã§ã¯ããããã®ãã€ããªãéçã«ããŒãã§ãããããæ¯åèšå®ããå¿
èŠã¯ãããŸããã ããã¯ãããšãã°ãèµ·ååŸã«linuxkit/binfmt
ã€ã¡ãŒãžãç¹æš©ã¢ãŒãã§1åå®è¡ããããšã§å®çŸã§ããŸãã
ææ°ã®ã«ãŒãã«ã§ã¯ããããã®ãã€ããªãéçã«ããŒãã§ãããããæ¯åèšå®ããå¿ èŠã¯ãããŸããã
@alehaaãã ããã³ã³ãããŒå ã«éçqemuãšãã¥ã¬ãŒã¿ãŒãã€ããªã¯ãŸã å¿ èŠã§ã¯ãããŸãããïŒ
@cybe F
ãã©ã°ã䜿çšãããŠããå Žåãããã¯ããå¿
èŠãããŸããïŒããã¯ã linuxkit/binfmt
ããã±ãŒãžãè¡ãããšã§ãïŒã ããã«ã€ããŠã®è©³çŽ°ã¯ããã§èŠã€ããããšãã§ããŸãã
誰ãããã«ãããããè©Šãããã®å®çšçãªã»ããã¢ãããæäŸã§ããŸããïŒ Ubuntuã§åäœãããããšãã§ããŸããã ç§ã®èšå®ã¯æ¬¡ã®ãšããã§ãã
cat /etc/docker/daemon.json
{
"experimental": true
}
Dockerfile
# syntax=docker/dockerfile:experimental
FROM ruby:2.6.3
RUN --mount=type=cache,target=/bundle/vendor
sudo docker -v
DockerããŒãžã§ã³19.03.1ããã«ã74b1e89
DOCKER_BUILDKIT=1 sudo docker build .
ããŒã¢ã³ããã®ãšã©ãŒå¿çïŒDockerfile解æãšã©ãŒè¡12ïŒäžæãªãã©ã°ïŒããŠã³ã
sudo
ã¯ã sudo -E
ã§æ瀺ããããsudoå
ã§å€æ°ã宣èšããªãéããenvå€æ°ãäŒéããŸããã
ãã®æ©èœã«ã€ããŠããã€ãã®åèªãæžãããã£ãã·ã¥ããæ¹æ³ã瀺ãããã€ãã®æå°éã®äŸãäœæããŸãã
ç·šéïŒä»¥äžãåç §
@ cpuguy83ããããšãïŒ
@thisismydesignè奮ãå°ç¡ãã«ããŠç³ãèš³ãããŸãããã node_modules
ããã£ãã·ã¥ããããšã¯ã§ããŸãããæçµçãªç»åã«ã¯è¡šç€ºãããªããããã¢ããªãå£ããŠããŸãã
@glenscãããŒããã®éãã§ãããã«ãæã®ãã£ãã·ã¥ãæçµã€ã¡ãŒãžã®äžéšã«ããæ¹æ³ã¯ãããŸããïŒ
æ£çŽãªãšãããããã¯æ¬¡ã®ããã«å®£äŒãããŠããæ©èœã«ã€ããŠèæ ®ããããšæããŸãã
ãã«ãã³ã³ãããã³ã³ãã€ã©ãšããã±ãŒãžãããŒãžã£ã®ãã£ã¬ã¯ããªããã£ãã·ã¥ã§ããããã«ããŸãã
代ããã«ã/.npmããããã§ããã¯ãã§ã⊠httpsïŒ //docs.npmjs.com/files/folders.html#cache
@thisismydesign
ãã ããDockerfileã«ãã«ãããããã¬ãžã¹ããªã®ã©ããã«æ ŒçŽãããŠãããªãã©ã«ã€ã¡ãŒãžã䜿çšããŠã COPY --from
ã䜿çšããããšã«ãããå¥ã®ã€ã¡ãŒãžããã£ãã·ã¥ãšããŠäœ¿çšã§ããŸãã
FROM example/my_node_modules:latest AS node_modules
FROM nodejs AS build
COPY --from=/node_modules node_modules
...
ããã¯ããããããŸããŸãªç®çã«äœ¿çšã§ããåãªãäŸã§ãã
ããŒãããããæã£ãŠããŠããã«åå ããã®ã¯å«ãã§ãïŒããã«ã¡ã¯åéãïŒ
ããããããã«ã¯ãŠãŒã¹ã±ãŒã¹ããããŸãã
ããã«åå ã§ããè¯ãå Žæãããã€ãžã§ã¹ããååŸããããã«åå ã§ããé»è©±ããªã¹ãã¯ãããŸããïŒ
ãŸããããã«ããã€ãã®ãªãœãŒã¹ãæå ¥ãã誰ããå¿ èŠãªå Žåã¯ã1ã¯ãªã¹ãããšå°ããªããŒã ãããããããããããèŠãããã«èª¬åŸããããšãã§ããŸãã
TLDRãããã³ãŒãã£ã³ã°ã§ããŸããïŒ ããã«ã€ããŠè©±ãã人ã¯ããŸããïŒ
_TLDR_ãããã³ãŒãã£ã³ã°ã§ããŸããïŒ ããã«ã€ããŠè©±ãã人ã¯ããŸããïŒ
Dockerã«ã€ããŠè©±ãããšã¯ã§ããŸãããããã«ãã«ããªã¥ãŒã ããŠã³ããè¿œå ããããšã«ãªãŒãã³ã§ã¯ãªããšããå°è±¡ããããŸãïŒããããããã®åé¡ã解決ããå¿ èŠããããŸãïŒ
buildtime -vã®å€ãã®ãŠãŒã¹ã±ãŒã¹ã¯ãbuildkitã§ã«ããŒãããããã«ãªããŸããã ããã¯å°ãªããšãç§ã«ãšã£ãŠã¯ããã解決ããŸããã
次ã«ãã«ããããããã§ãã¯ããŸã-誰ããèå³ãæã£ãå Žåã«ä»äºãçµããããããããŒãªbashããããŸãã
ããããšã@unilynx
ãã®åé¡ã解決ããããã«@unilynxã«+1ãããšãbuildkitã¯ãã«ãæéã®ããªã¥ãŒã ã®åé¡ã解決ããŸããã
誰ããããã€ãã®ãªã³ã¯ãšäŸãèœãšããå Žåãç§ãã¡ã¯å人ã«å æ²¢ã®ããéãããã¿ã³ãæŒãããã«èª¬åŸããããšãã§ãããšæããŸãã
ïŒç§ããããããæ©æµãåããã§ãããïŒ
buildkitã䜿çšãããã«ãæéããªã¥ãŒã ãæçµã€ã¡ãŒãžã«ååšããªãããããã£ãã·ã¥ã®ãŠãŒã¹ã±ãŒã¹ã¯ç§ãä»ã®å€ãã®äººã«ãšã£ãŠè§£æ±ºãããŠããŸããã
ãã®ããã build
ã®æç¹ã§äœ¿çšãããŠããäžæããªã¥ãŒã ãããã¹ãŠã®ãã«ãã¢ãŒãã£ãã¡ã¯ããåŒãåºããäžèšã®ãã®bashã䜿çšããŠã以åã®ãã£ãã·ã¥ã§ã€ã¡ãŒãžãåæ§ç¯ããããšãã§ããŸããã
ãªãŒããŒã¬ã€ãã¡ã€ã«ã·ã¹ãã ãå°ããªãã«ã¿ã®ã¿ãååŸããããã«ãã€ã¡ãŒãžãããèªäœã®äžã«åæ§ç¯ããããšãã§ããŸããã
ãã«ãæã«ããªã¥ãŒã ãä»ã®ã€ã¡ãŒãžã«åå©çšããããšãã§ããŸããã
ä»ã®äººã ã¯ãããè¡ãããšãã§ããŸãããïŒ
ïŒãã£ãã·ã¥ïŒããŠã³ãã¯ãå®éšçãããã³ããšã³ãã«ãããŸãã https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/experimental.mdã§èª¬æãããŠããŸãïŒäŒè°ã«åãããšããã§ãããããæ¡åŒµãããäŸããªã³ã¯ã§ããŸãïŒ
@thaJeztahLMKã«æè¬ããŸãã
https://github.com/moby/moby/issues/14080#issuecomment -547662701
@thisismydesignè奮ãå°ç¡ãã«ããŠç³ãèš³ãããŸãããã
node_modules
ããã£ãã·ã¥ããããšã¯ã§ããŸãããæçµçãªç»åã«ã¯è¡šç€ºãããªããããã¢ããªãå£ããŠããŸãã
@thaJeztahäžèšã®åé¡ã解決ãããšã¯æããŸããã ãã«ãæã«npm install
ãªã©ããã£ãã·ã¥ã§ããããã€ãã®äŸãèŠãŠã¿ãããšæããŸããããã«ãããçµæã®ã€ã¡ãŒãžã§ãã£ãã·ã¥ãããã€ã³ã¹ããŒã«ã䜿çšã§ããããã«ãªããŸãã
@ kris-novaç§ã¯ãã®åé¡ã解決ããŸããã§ããããbashã¹ã¯ãªããã䜿çšããã€ããã¯ãããŸããã ããããæ°ããåé¡ãå¿ èŠã§ãããããã¯AFAIKããŸã 解決ãããŠããªãããªãäžè¬çãªãŠãŒã¹ã±ãŒã¹ã§ãã
@thaJeztahãã£ãã·ã¥ããŠã³ãã䜿çšããããã€ãã®äŸã瀺ããŸããããã¯ãæçµçãªã€ã¡ãŒãžã«ããŠã³ããå«ãŸããããã«ãæã®ãã£ãã·ã¥ã®å€ãã®ãŠãŒã¹ã±ãŒã¹ãã«ããŒããŠããªãããšã瀺ããŠããŸãã
npmã®å ŽåïŒnpmãã£ãã·ã¥ãã£ã¬ã¯ããªã«ãã£ãã·ã¥ããŠã³ãã䜿çšããŸãããïŒhttps://docs.npmjs.com/cli-commands/cache.htmlãéåžžã¯~/.npm
ïŒïŒ
@ankonããã¯ããŸããããããããŸãããããããšããç§ã¯ãããè©ŠããŠã¿ãŸãã ããããããªããã1ã€ã®ãŠãŒã¹ã±ãŒã¹ã¯ãBundlerãšRubyã§ãã
ãããã£ãŠãBundlerã®å ŽåïŒãŸã ãã¹ããããŠããŸããïŒãå°ãªããšã$BUNDLE_PATH
ã®ãã«ãããªã¥ãŒã ã䜿çšããŠããã«ãäžã«ãããã¯ãŒã¯ã®äŸåé¢ä¿ãåãé€ãããšãã§ãããšæããŸãã
bundle install
bundle package
bundle install --standalone --local
ããã¯åºæ¬çã«ããã£ãã·ã¥ããããã³ãã«ã€ã³ã¹ããŒã«ãã£ã¬ã¯ããªãããããšãæå³ããããããgemã./vendor/cache
ã«ããã±ãŒãžåãã ./bundle
ã«åã€ã³ã¹ããŒã«ããŸãã ãã ããããã¯gemã®ã€ã³ã¹ããŒã«ãšãã«ãã«ãããæéãç¯çŽãããã®ã§ã¯ãªããå®éã«ã¯ãã«ãã¹ããããé·ããªãå¯èœæ§ããããŸãã
ãã£ãã·ã¥ãããããŒã¿ãã€ã¡ãŒãžã«ä¿åããå Žåã¯ããã£ãã·ã¥ããã€ã¡ãŒãžã«ã³ããŒããŸãã
ãããã§ãããããããã¯ãŸã ããå€ãã®åé¿çã§ãã
åãããªã¥ãŒã ãæçµçãªã€ã¡ãŒãžã«ããŠã³ãããããã®ãã€ãã£ããªãã·ã§ã³ãçšæããã ãã§ã©ãã ãã®åŽåãããããã¯ããããŸãããã䜿çšãç°¡åã«ãªããšç¢ºä¿¡ããŠããŸãã ãããã¯ããã®ãã£ãã·ã¥ã䜿çšããæ¹æ³ãç§ã«ã¯æããã§ã¯ãªãã£ãã¹ã¯ãªããèšèªããã®2ã€ã®äŸã«ãããŸããã ããã¯ããŸããŸãªç¶æ³ã§ãçºçããããšã¯ééããããŸããã
@thisismydesignå¿ èŠãªã®ã¯ããã«ããšå®è¡ã®éã§ãã£ãã·ã¥ãå ±æã§ããããã«ããããšã§ãã
buildkitã¯Linuxã®ã¿ã®ãœãªã¥ãŒã·ã§ã³ã§ãããWindowsã§äœãããŸããïŒ
@thisismydesignãªãïŒãã£ãã·ã¥ïŒããŠã³ããæçµã€ã¡ãŒãžã«ãšã©ãŸããšæåŸ ããã®ãããããŸããã ç§ã¯ãããæåŸ ããŠããŸããããããŠã³ããŒããã£ãã·ã¥ããŠã³ãã䜿çšããŠãããšããçç±ã ãã§ãã€ã¡ãŒãžã«æ倧1GBãå«ããããããŸããã
buildkitã¯Linuxã®ã¿ã®ãœãªã¥ãŒã·ã§ã³ã§ãããWindowsã§äœãããŸããïŒ
Windowsã§ãã«ããããã䜿çšã§ããŸãã
https://docs.docker.com/develop/develop-images/build_enhancements/
å®è¡ããåã«ç°å¢å€æ°ãèšå®ããããããDocker forWindowsUIã䜿çšããŠããŒã¢ã³èšå®ãèšå®ããæ¹ãç°¡åãªå ŽåããããŸãã
ãªã³ã¯ã®äžéšã«ãã@nigelgbanks ïŒ
Only supported for building Linux containers
ç³ãèš³ãããŸããããWindowsã§Linuxã³ã³ãããæ§ç¯ããŠãããšæããŸãã
@thisismydesignå¿ èŠãªã®ã¯ããã«ããšå®è¡ã®éã§ãã£ãã·ã¥ãå ±æã§ããããã«ããããšã§ãã
ããããã°ããã£ãã·ã³ã°ã«é¢ããç§ã®ãŠãŒã¹ã±ãŒã¹ã¯è§£æ±ºããã§ãããã
ãããç°¡åã«ãããšãCIã§ããã±ãŒãžãäœçŸäžåãåããŠã³ããŒãããå¿
èŠããªããªããŸãã
幎éãã«ãã
CIãµãŒãã¹ã¯å®éšçãªãã«ããããæ©èœããµããŒãããŠããŸããïŒ
2020幎6æ13æ¥åææ¥ååŸ2æ8å[email protected]ã¯æ¬¡ã®ããã«æžããŠããŸãã
@thisismydesignhttps ://github.com/thisismydesignããã¯äœã®ããã§ã
ãã«ããšå®è¡ã®éã§ãã£ãã·ã¥ãå ±æã§ããããã«ãããã§ããïŒããããã°ããã£ãã·ã³ã°ã«é¢ããç§ã®ãŠãŒã¹ã±ãŒã¹ã¯è§£æ±ºããã§ãããã
â
ããªããèšåãããã®ã§ãããªãã¯ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/moby/moby/issues/14080#issuecomment-643657987 ããŸãã¯
ç»é²ã解é€ãã
https://github.com/notifications/unsubscribe-auth/AAAMNS6IEQDCO5F3LNHJK5TRWO6AJANCNFSM4BJB2OOA
ã
CIãµãŒãã¹ã¯å®éšçãªãã«ããããæ©èœããµããŒãããŠããŸããïŒ
圌ãã¯ãããæ瀺çã«ãµããŒãããå¿ èŠããããŸããïŒ buildkitã§gitlab-ciã䜿çšããŠããŸãããæ£åžžã«æ©èœããŸãã çµå±ã®ãšãããããã¯ãdockerbuildããåŒã³åºãããã®å¥ã®æ¹æ³ã«ãããŸããã
ãã¡ãããç¬èªã®ã©ã³ããŒãgitlabã«æã¡èŸŒãŸãªãéãããã«ãäžã«ãã£ãã·ã¥ããããçºçããå¯èœæ§ã¯äœããªããŸãã
ãã«ãã¹ããŒãžãã«ãã®ååä»ãã¹ããŒãžããã®ã³ããŒã¯å¥ã®ãœãªã¥ãŒã·ã§ã³ã§ã
FROM golang:1.7.3 AS builder COPY --from=builder
ããããã³ã³ããã€ã¡ãŒãžã®å±ææ§ã¯ãCIãžã§ãã¹ã±ãžã¥ãŒãªã³ã°ã§ã¯ãŸã ã»ãšãã©è§£æ±ºãããŠããªãåé¡ã§ãã
ã©ã³ããŒã¯ãïŒå€é¡ã®è³éãäžè¶³ããŠããïŒããã±ãŒãžãªããžããªãžã®äžèŠãªãªã¯ãšã¹ããæå°éã«æããããã«ãããç²çæ§ããããå ±éã®ãã¡ã€ã«ã·ã¹ãã ã§ïŒäžéã®ïŒã€ã¡ãŒãžãå ±æããå¿ èŠããããŸãã
buildkit
ãè©ŠããŸããããã¯ãŒã¯ãããŒããããã«æ¹åãããã ãã§ããå®éã®ãããªã¥ãŒã ãŸãã¯ãã¹ããžã®ãã€ã³ãããŠã³ãã«ãã£ãŠ100ïŒ
æ¯æŽãããŸãã
ç§ã¯docker build
ã䜿çšããŠå€ãglibc
ããŒãžã§ã³ãã¯ãã¹ã³ã³ãã€ã«ããŠããŸããããã¯ãæ°ãããã«ãã³ã³ãããŒã®äžéšã§ããããããã®glibc
ããã«ãããŠãªã³ã¯ããããšãã§ããŸãã
ããã§ãç¹°ãè¿ãããglibc
ãœãŒã¹ã®ããŠã³ããŒãããã€ã³ãããŠã³ãïŒ buildkit
ããïŒã«ãã£ãŠè§£æ±ºãããã¢ãŒã«ã€ãã¯èªã¿åãå°çšã«ãªããåé¡ã¯ãããŸããã ããããã³ã³ãããŒããšã©ãŒã§çç Žãããããããã«ãã倱æããåŸãåæã®ããã«ãã«ããã£ã¬ã¯ããªã«ã¢ã¯ã»ã¹ããæ¹æ³ããããŸããã ïŒã¢ã¯ã»ã¹ããããã«åèµ·åãããšããã«ããåèµ·åãããããã圹ã«ç«ã¡ãŸããïŒã
ãŸãããã«ããã£ã¬ã¯ããªãåé€ããããã ãã«ãå€ãã³ã³ããããæ°ããã³ã³ããããã«ããããããªããŒããé£ã³è¶ããªããã°ãªããªãçç±ãããããŸããããã«ããã£ã¬ã¯ããªãããããããŠã³ãã ã£ããšãããããšãŠãç°¡åã ïŒãã«ãåŸã«make install
ãå®è¡ããã ãã§ããã«ããã£ã¬ã¯ããªãããŠã³ããŒãããããœãŒã¹ã®ãªãã¯ãªãŒã³ãªã³ã³ãããŒãã§ããŸãïŒã
ã§ããããããã¯éåžžã«æå¹ãªæ©èœã®ãªã¯ãšã¹ãã§ãããç§ãã¡ã®ç掻ããã£ãšæ¥œã«ããŠããããšä»ã§ãä¿¡ããŠããŸãã æ©èœãæªçšããããã䜿çšãããå Žåã«ä»ã®æ©èœãç Žæãããããå¯èœæ§ããããããšãã£ãŠããããå®è£ ããããšã絶察ã«é¿ããªããã°ãªããªããšããæå³ã§ã¯ãããŸããã ãã匷åãªããŒã«ã®è¿œå ã®äœ¿çšæ³ãšèããŠãã ããã
ãããããã«ãã倱æããåŸãåæã®ããã«ãã«ããã£ã¬ã¯ããªã«ã¢ã¯ã»ã¹ããæ¹æ³ããããŸãã
ãã«ããããã®æ©èœãªã¯ãšã¹ãã®ããã«èãããŸãã ããã¯ééããªãæ¢ç¥ã®æ¬ åã§ãã
ããã«ããã£ã¬ã¯ããªãããã§ããããããã®ã¿ãŒã²ãããæã€ããšã§ãä»æ¥ãããè¡ãããšãã§ããŸãã å®è¡ã«å€±æããåŸã§ãããã¹ãŠããã£ãã·ã¥ãããŠããå¿
èŠããããããŒã¿ãååŸããããã®æåŸã®ã¹ããããå¿
èŠã§ãã
ãã ããããã¯å°ãåé¿çã§ããããšãç解ããŠãã ããã
ãŸãããã«ããã£ã¬ã¯ããªãåé€ããããã ãã«ãå€ãã³ã³ããããæ°ããã³ã³ããããã«ããããããªããŒããé£ã³è¶ããªããã°ãªããªãçç±ãããããŸããã
ããã§ããªããæãã§ãã/æåŸ ããŠããããšããã£ãšèª¬æã§ããŸããïŒ
ããã§ããªããæãã§ãã/æåŸ ããŠããããšããã£ãšèª¬æã§ããŸããïŒ
ãã®å Žåã1ã€ã®ç³ã§2矜ã®é³¥ã殺ãããã ãã§ãã
ãããšããã«ãã³ã³ããïŒããã³ãã³ã³ãããã«ããïŒããã«ããå¯èœãªéãç°¡åã«ããå¿
èŠãããä»ã®ãã¹ãŠã®ã±ãŒã¹ã§ã¯ã -v
æ©èœãæäŸããã ãã§ãã¯ããã«ãšã¬ã¬ã³ãã«è§£æ±ºã§ããã®ã§ãç§ã¯ãã®æ©èœãæäŸããããã®æµæãç解ããã®ã¯é£ããã buildkit
ãæããã«æäŸããããã£ãã·ã¥å¯Ÿå¿ãæ©èœãšã¯å¥ã«ãç§ã¯ãããæ£ç¢ºã«ãã®æ©èœãå®çŸããããã®è€éã§é¢åãªæ¹æ³ãšããŠããèŠãããšãã§ããŸããã ïŒãããŠããã£ãã·ã¥ãäž»ãªç®æšã§ããå€ãã®å Žåãããã¯-v
ã«ãã£ãŠã解決ãããŸãããå®è¡ãããŠããéããããŠã³ããããããªã¥ãŒã ãç¹å®ã®ã³ã³ãããŒã«ããã¯ããå¿
èŠããããŸããããã£ãã·ã¥ã«ã¯buildkit
ã«ãåãå¶éããããŸããïŒ
ããã§ããªããæãã§ãã/æåŸ ããŠããããšããã£ãšèª¬æã§ããŸããïŒ
ç§ã¯å€æ®µéã®ãã«ãããã»ã¹ã䜿çšããŠããŸãããã«ãç°å¢èªäœãã³ã³ããåãããŠãããæçµçã«ã¯ã¢ããªã±ãŒã·ã§ã³ãšã©ã³ã¿ã€ã ç°å¢ã®ã¿ãå«ãã€ã¡ãŒãžã«ãªããŸãïŒãã«ãããŒã«ã¯å«ãŸããŸããïŒã
ç§ã欲ããã®ã¯ããã«ããæåããå Žåãšå€±æããå Žåã®äž¡æ¹ã§ããã«ãåºåã€ã¡ãŒãžã«æž¡ãããšãªããåäœãã¹ããšã³ãŒãã«ãã¬ããžã®çµæãã¡ã€ã«ããã¹ãã·ã¹ãã ã«åºåããããã®æ«å®çãªDockerãã«ãã³ã³ããã®æ¹æ³ã§ããæœåºçšïŒåã®ã¹ãããã§åäœãã¹ãã«åæ Œããªãã£ãå Žåããã«ãããã»ã¹å šäœãç絡ããããããã®ç¶æ³ã§ã¯åºåã€ã¡ãŒãžããããŸããããã®å Žåãåäœãã¹ãã®çµæãæãå¿ èŠã«ãªããŸãïŒ ã ãã¹ãããªã¥ãŒã ãDockerãã«ãããã»ã¹ã«ããŠã³ãã§ãããã©ãããå€æãããšãå éšãã¹ãã³ãã³ãã§åºåãããŠã³ãããããã©ã«ããŒã«éä¿¡ã§ããŸãã
@mcattle
確ãã«ãç§ãå¿
èŠãšããïŒæ©èœã®1ã€ïŒã«ãéåžžã«äŒŒãŠããŸãã
æ°æ¥åã«buildah
ã«ç§»åããŠä»¥æ¥ãå¿
èŠãªãã¹ãŠã®æ©èœãªã©ãæã«å
¥ããŸããã ãã«ãã³ã³ããã®ãããã°ã¯ãçµäºããã³ã³ããã«æè»ã«ã¢ã¯ã»ã¹ããŠãã¹ãã«ãªã³ã¯ããå¯èœæ§ããªããã°ããŸã£ããäžå¯èœã§ããã ä»ãç§ã¯å¹žããªãã£ã³ãã³ã°ã«ãŒã§ãã ïŒã競åä»ç€Ÿããšã®ããŒãã£ãŒãã¯ã©ãã·ã¥ãããŠç³ãèš³ãããŸãããéåããã£ãå Žåã¯ãã®ã³ã¡ã³ããåé€ããŸããããã®ã¹ã¬ããã§æ瀺ããããŠãŒã¹ã±ãŒã¹ã®éåžžã«å¹æçãªè§£æ±ºçã§ãããèšåããå¿
èŠããããšæããŸããïŒ ã
å¥ã®ããŒã«ãããªãã®ããŒãºã«ããé©ããŠãããšèšã£ãŠãéåæã¯ãããŸããã
äœããããªãã®ããã«åããªããããã¯çŽ æŽãããã§ãã
Dockerã®v1ãã«ããŒãšbuildkitãã«ããŒã®äž¡æ¹ã®æ¬ ç¹ã¯ããã®ã³ã³ããã¹ãã§ã¯ããªãããç解ãããŠãããã¯ã©ã€ã¢ã³ãããã®ãã€ã³ãããŠã³ãã«é Œãå¿
èŠãªãã«ããããã«å¯ŸåŠããæ¹æ³ãæ€èšããŠããŸãã
[email protected]ã¯æ¬¡ã®ããã«æžããŠããŸãïŒ
ã@mcattle
確ãã«ãç§ãå¿
èŠãšããïŒæ©èœã®1ã€ïŒã«ãéåžžã«äŒŒãŠããŸãã
æ°æ¥åã«buildahã«ç§»åããŠä»¥æ¥ãå¿
èŠãªãã¹ãŠã®æ©èœãªã©ãå
¥æããŸããã ãã«ãã³ã³ããã®ãããã°ã¯ãçµäºããã³ã³ããã«æè»ã«ã¢ã¯ã»ã¹ããŠãã¹ãã«ãªã³ã¯ããå¯èœæ§ããªããã°ããŸã£ããäžå¯èœã§ããã ä»ãç§ã¯å¹žããªãã£ã³ãã³ã°ã«ãŒã§ãã ïŒã競åä»ç€Ÿããšã®ããŒãã£ãŒãã¯ã©ãã·ã¥ãããŠç³ãèš³ãããŸãããéåããã£ãå Žåã¯ãã®ã³ã¡ã³ããåé€ããŸããããã®ã¹ã¬ããã§æ瀺ããããŠãŒã¹ã±ãŒã¹ã®éåžžã«å¹æçãªè§£æ±ºçã§ãããèšåããå¿
èŠããããšæããŸããïŒ ãã
â
ããªããèšåãããã®ã§ãããªãã¯ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããããGitHubã§è¡šç€ºããããç»é²ã解é€ããŠãã ããã
ã¯ã©ã€ã¢ã³ãããã®ããŠã³ãããã€ã³ãããããã«é Œãå¿ èŠã¯ãããŸããã
ããã§ã¯ããã«ãæã®-vãªãã·ã§ã³ãããã«ãæã®ãããã¯ãŒã¯ãªãœãŒã¹ã«äŸåãã以äžã«ãåçŸæ§ã«é Œã£ãããåçŸæ§ãç ç²ã«ãããããªãçç±ã説æããŸãã
https://github.com/moby/moby/issues/14080#issuecomment -484314314ïŒ
ã³ããŒ|| REMOTE_FETCH || èªãã ïŒïŒ
- ãããã®ãã¡ãæãåçŸæ§ã®é«ããã®ã¯ã©ãã§ããïŒ
ãã«ãæé-v
ïŒããã³cgroupsv2ïŒã«ã€ããŠãbuildahã䜿çšããŸãã
@mcattleç§ã¯åãèŠä»¶ãæã£ãŠããŸããã ã©ãã«ä»ãã§è§£æ±ºããŸããã
ãã«ãæé
-v
ïŒããã³cgroupsv2ïŒã«ã€ããŠãbuildahã䜿çšããŸãã
ã-vãããµããŒããããŠããããããã«ããµãŒããŒã§UbuntuïŒdockerã®ã¿ïŒããFedoraïŒdockerãpodman / buildahã«çœ®ãæããïŒãžã®åãæ¿ããçå£ã«æ€èšããŠããŸãã
ãšããã§ã Podmanã¯ã«ãŒãã¬ã¹ã¢ãŒãããµããŒãããŠããããããŸã§ã®ãšãããDockerãšå®å šã«äºææ§ãããããã«èŠããŸãïŒDockerããŒã¢ã³ã®ããã«rootãšããŠå®è¡ãã代ããã«rootlessã¢ãŒãã䜿çšããããšã«ãã--user / USERã®åœ±é¿ãšã€ã¡ãŒãžãã£ãã·ã³ã°ã®éããé€ãïŒã
PSã ã«ãŒãã¬ã¹æäœã«ã¯cgroupsv2ãå¿ èŠã§ããããã®ãµããŒãã¯dockerãããã³ã³ãããŒã©ã³ã¿ã€ã ã«é¢ãããã®ã§ãã RunCã®ä»£ããã«CRunã䜿çšããå ŽåïŒFedoraã®ããã«ïŒãcgroupsv2ããµããŒããããŸãã RunCã¯Gitã§v2ãšrootlessããµããŒãããŠããŸãããæ°ãæåã«FedoraïŒ31ïŒã§ãã¹ããããšãã«åé¡ãçºçããŸããã
ç·šéïŒUbuntuã®Groovyã«ã¯podman / buildah / etcããããŸãããææ°ã®20.04 LTSã«ã¯ãããŸããããDebianããã€ã³ããŒãããããã®ã¯äžå®å®ã ãšæããŸãã å°ãªããšããŸã ãLTSã«ããã¯ããŒããããŠããŸããã 2018幎ããFedoraã«ãªã£ãŠãããšæããŸãã
@ eero-tããããããªãã¯ããªãã®ãŠãŒã¹ã±ãŒã¹ã説æããããšãã§ããŸãããããŠBuildKitãçŸåšæäŸããŠãããªãã·ã§ã³ã«æ¬ ããŠãããã®ã¯ãããã®ããã«æ±ãããŠããŸããã
æãåèã«ãªãã³ã¡ã³ã
ãã®æ©èœã®äœ¿çšäŸã¯å°ãç°ãªããŸããASP.Net5ããã±ãŒãžãããŒãžã£ãŒã«ãã£ãŠããŠã³ããŒã/æŽæ°ãããããã±ãŒãžããã£ãã·ã¥ããŸãã ããã±ãŒãžãããŒãžã£ãŒã¯ç¬èªã®ãã£ãã·ã¥ãã©ã«ããŒã管çãããããæçµçã«ã¯ãã«ãéã§åå©çšã§ãããã©ã«ããŒãå¿ èŠã«ãªããŸãã
ããªãã¡ïŒ