Docker-in-Docker áááş áá˝ááşááááşááŹááŻáśááťáŹá¸ááᯠáááşááąáŹááşáááşáĄáá˝ááş áá˝ááşááááşááŹáĄáá˝ááşá¸ áááşáááşááąáááˇáş virtualized Docker daemon áááşáááşá¸ááťááşáá
áşááŻááźá
áşáááşá Docker-in-Docker áááşááŽá¸ááźááşá¸á áĄááááááşáá˝ááşááťááşáážáŹ Docker áááŻááşáááŻááşáá˝áśáˇááźááŻá¸áááŻá¸áááşá
áąáááş áá°ááŽááąá¸áááşááźá
áşáááşá Jenkins CI ááᯠrun áááŻáˇ áá°ááąáŹáşááąáŹáşááťáŹá¸ááťáŹá¸á áĄááŻáśá¸ááźáŻááźááŤáááşá áááşá¸áááş áĄá
áááŻááşá¸áá˝ááş ááŻáśáážááşááźá
áşááŻáśáááąáŹáşáááşá¸ Jenkins CI áá˝ááşááááşááŹáá˝ááş Docker ááᯠáááˇáşáá˝ááşá¸ááźááşá¸ááźááˇáş áážáąáŹááşáážáŹá¸áááŻááşáááˇáş ááźáżááŹááťáŹá¸ ááąáŤáşááąáŤááşááŹáááşá ááŽááąáŹááşá¸ááŤá¸áážáŹ ááŽáááŻááŻááşáááşá¸ááᯠááźáąáŹááźááŹá¸ááŤáááşá áĄááąá¸á
áááşáĄááťááşáĄáááşááťáŹá¸áááŤáᲠááąáŹááşááŻáśá¸ááźáąáážááşá¸ááťááşááᯠá
áááşáááşá
áŹá¸ááŤá ááąáŹááşá¸ááŤá¸áááąáŹááşááŻáśá¸áĄáááŻááşá¸ááźá
áşááąáŹ âááźáżááŹááźáąáážááşá¸ááźááşá¸â áááŻáááşááŤá
Docker-in-Docker- "ááąáŹááşá¸ááźáŽ"
áá˝ááşáá˛áˇáá˛áˇ áážá
áşáážá
áşááťáąáŹáşá ááťá˝ááşááąáŹáş Docker áážáŹ áááşáá˛áˇáááşá
- áááşááşáááşááş;
- áááşááąáŹááş;
- áááşáááşááąááąáŹ Docker daemon áááŻáááşáááˇáşááźááşá¸á
- Docker daemon áĄáá áşááᯠá áááşááźááşá¸
- á ááşá¸áááşááźááşá¸;
- ááśáááŹáááŻááźááşááŻááşááŤá
áĄáááşá áááşáááş áážáá ááťááŻá¸áá˝áŹá¸áááŻááşááąáŹ á ááşá¸ááąá¸áá˝á˛ (áááŻáááŻáááşáážáŹ áá˝ááşááááşááŹáá áşááŻ) áá˝ááş ááźáŻááŻááşáááŻááŤá áááşá¸áááş áááŻáááŻáážáŻááşáá˝áąá¸ááŹááŤáááşá
- áááşááşáááşááş;
- Docker á áĄááŻááşááŻááşááąáŹááşáážáŻ ááŹá¸áážááşá¸áá áşáᯠáĄááŻááşááŻááşááąááźáąáŹááşá¸ ááąááťáŹááŤá áąá
- Docker áĄááąáŹááşá¸ááźááˇáş Docker áĄáá áşáááŻáááşááąáŹááşááŤá
- Docker daemon áááŻáááşáááˇáşááŤá
- Docker daemon áĄáá áşáá áşááŻá áááşááŤá
- á ááşá¸áááşáážáŻ;
- Docker daemon áĄáá áşááᯠáááşááŤá
- áááşááŻááşááŤá
Docker-in-Docker áá˝ááşá¸ááŹá¸ááŹáááşáážááˇáşáĄááťážá ááŻááşáááşá¸á ááşáááş áááŻáááŻáááŻá¸áážááşá¸ááŹááŤáááşá
- áááşááşáááşááş;
- á ááşá¸ááąá¸áá˝á˛ + á ááşááźááˇáşáá áşááŻáá˝ááş á áááşááźááşá¸á
- ááśáááŹáááŻááźááşááŻááşááŤá
ááŽáááşá¸á áááŻááąáŹááşá¸ááŹáááŻááşáá°á¸ááŹá¸á
Docker-in-Docker- "áááŻá¸"
áááŻáˇááąáŹáşá áá°ááźááŻááşááťáŹá¸ááąáŹááŻáśááźááşááťááşáážááˇáşáááˇáşááťááşáááşá Docker-in-Docker áááş 100% ááźááşááťáŹá¸á ááźááşá¸ááťáŹá¸áážááˇáşáá°ááŽáá˝ááşááťáŹá¸áááŻááşááŤá ááťá˝ááşááąáŹáşáááŻáááŻáááşáážáŹ developer áááş áááááŹá¸ááááˇáş ááźáááŹááťáŹá¸á á˝áŹ áážáááŤáááşá
áááşá¸áááŻáˇáá˛ááž áá áşááŻáážáŹ AppArmor áážááˇáş SELinux áá˛áˇáááŻáˇááąáŹ LSMs (Linux ááŻáśááźáŻáśááąá¸ ááąáŹáşááťá°á¸ááťáŹá¸) áážááˇáş áááşáááŻááşáááş- áá˝ááşááááşááŹáá áşááŻáĄáŹá¸ ááŻááşááąáŹááşáááˇáşáĄááŤá "internal Docker" áááş "ááźááşá Docker" ááᯠáááˇáşááťááş áááŻáˇáááŻááş áážáŻááşáá˝áąá¸á áąáááˇáş ááŻáśááźáŻáśááąá¸ááááŻáááŻááşááťáŹá¸ááᯠáĄááŻáśá¸ááźáŻáááş ááźááŻá¸á áŹá¸ááąáááşá á¤áááşáážáŹ -privileged áĄááśááá°ááĄááąáŹááşáĄáááşááąáŹáşáážáŻááᯠááąáŤááşá¸á ááşá¸áááş ááźááŻá¸áááşá¸ááŹáá˝ááş ááźáąáážááşá¸áááş áĄáááşáá˛ááŻáśá¸ááźáżááŹááźá áşáááşá ááťá˝ááşáŻááşáááźáąáŹááşá¸áá˛áážáŻááťáŹá¸áááş áĄááŻááşááźá áşáá˛áˇááźáŽá¸ á ááşá¸áááşáážáŻááťáŹá¸áĄáŹá¸ááŻáśá¸áááş ááťá˝ááşáŻááşá Debian á ááşáážááˇáş Ubuntu á ááşá¸áááşáážáŻ VM ááťáŹá¸áá˝ááş áĄáąáŹááşááźááşáá˝áŹá¸ááąáŹáşáááşá¸ áááşá¸áááŻáˇáááş Michael Crosby áá ááşáá˝ááş ááťááşááťáᏠááąáŹááşááťá˝ááşá¸áá˝áŹá¸ááááˇáşáááş (ááťá˝ááşááąáŹáşáážááşáááááąáŹááş áá°áˇáá˝ááş Fedora áážááááş)á ááźáżááŹááĄááźáąáŹááşá¸áááşá¸áĄáááĄááťááᯠááťá˝ááşáŻááşááážááşáááááŻááşááąáŹáşáááşá¸ Mike áááş SELINUX=enforce (ááťá˝ááşááąáŹáş AppArmor áááŻáĄááŻáśá¸ááźáŻáááş) áážááˇáşáĄááŻááşááŻááşááąáŹ áááŹáážááá áşáŚá¸ááźá áşááźáŽá¸á ááťá˝ááşáŻááşáááźáąáŹááşá¸áá˛áážáŻááťáŹá¸áááş SELinux ááááŻáááŻááşááťáŹá¸ááᯠáááˇáşáá˝ááşá¸á ááşá¸á áŹá¸ááźááşá¸ááážáááąáŹááźáąáŹááˇáş ááźá áşáááŻááşááŤáááşá
Docker-in-Docker- "áĄáááŻá¸"
ááŻáááááźáżááŹáážáŹ Docker storage drivers ááźá áşáááşá áááş Docker-in-Docker áááŻáá˝ááˇáşááąáŹáĄááŤá ááźááşá Docker áááş ááŻáśáážááşáááŻááşá áá áş (EXT4á BTRFS áááŻáˇáááŻááş áááˇáşáá˝ááşáážááááťáž) áááááşáá˝ááşáĄááŻááşááŻááşááźáŽá¸ internal Docker áááş ááąáŹáşááŽ-ááąá¸áááˇáşá áá áşáááááşáá˝ááşáĄááŻááşááŻááşáááş (AUFSá BTRFSá Device Mapperá á áááşáááŻáˇ))á ááźááşá Docker ááᯠáĄááŻáśá¸ááźáŻáááş ááźááşáááşááŹá¸áááˇáşáĄááŹááąáŤáşáá°áááşá)á áááşá¸áááş áĄááŻááşáááźá áşáááŻááşááąáŹ ááąáŤááşá¸á ááşáážáŻááťáŹá¸á á˝áŹááᯠáááşááŽá¸ááąá¸áááşá áĽáááŹáĄáŹá¸ááźááˇáşá áááşáááş AUFS áááááşáá˝ááş AUFS ááᯠrun áááŻááşáááşáááŻááşááŤá
BTRFS áááááşáá˝ááş BTRFS ááᯠrun ááŤáá áááşá¸áááş áĄá áááŻááşá¸áá˝ááş áĄááŻááşááŻááşáááˇáşáááşá áááŻáˇááąáŹáş nested subvolumes ááťáŹá¸áážáááąáááşáážááˇáşá parent subvolume ááᯠááťááşááźááşá¸áážáŹ ááĄáąáŹááşááźááşááŤá Device Mapper ááąáŹáşááťá°á¸áá˝ááş namespace ááážáááąáŹááźáąáŹááˇáş Docker ááźá áşáááşááťáŹá¸á á˝áŹáááş áááşá¸ááᯠá ááşáá áşááŻáááşá¸áá˝ááş ááŻááşááąáŹááşááąááŤáá áááşá¸áááŻáˇáĄáŹá¸ááŻáśá¸áááş ááŻáśááťáŹá¸ááᯠáĄááťááşá¸ááťááşá¸áážááˇáş áá˝ááşááááşáᏠáĄáááşááááşá¸áááşá¸áááˇáş á ááşááťáŹá¸áá˝ááş ááźááşáááŻááş (áá˝ážááşá¸áááŻá¸áááŻááş) áááŻááşáááşááźá áşáááşá ááŤá áááąáŹááşá¸áá°á¸á
á¤ááźáżááŹááťáŹá¸ááᯠááźáąáážááşá¸áááş áááşá¸áááşá¸ááťáŹá¸á á˝áŹáážááááşá áĽáááŹáĄáŹá¸ááźááˇáşá áááşáááş internal Docker áá˝ááş AUFS áááŻáĄááŻáśá¸ááźáŻáááŻááŤá /var/lib/docker áááŻááŤááᯠvolume áá áşááŻáĄááźá áşááźáąáŹááşá¸áááŻááşááŻáśááźááˇáş áááşáĄáááşááźáąáááşááźá áşáááşá Docker áááş Device Mapper áá áşáážááşáĄáááşááťáŹá¸áááŻáˇ áĄááźáąááśáĄáááşááąááŹáĄááťááŻáˇááᯠáááˇáşáá˝ááşá¸ááŹá¸ááąáŹááźáąáŹááˇáş Docker ááąáŤáşáááŻáážáŻáĄááťáŹá¸áĄááźáŹá¸áááş á ááşáá áşááŻáááşá¸áá˝ááş ááŻááşááąáŹááşááąááŤáá áááşá¸áááŻáˇáááş áá áşááŻáážááˇáşáá áşáᯠááááşáážááşá¸áááŻááşáĄáąáŹááş ááźáŻááŻááşááŹá¸áááşá
áááŻáˇááąáŹáşá á¤áá˛áˇáááŻáˇáááˇáşáá˝ááşá¸ááźááşá¸áááş ááŻáśá¸ááááŻá¸áážááşá¸áááşáááŻááşááŤá á¤áĄááŹááťáŹá¸ááž ááźááşáá˝áąáˇáááŻááşáááş
Docker-in-Docker- áááŻáááŻá¸ááŹááŤáááşá
build cache ááąáŹ áááşáááŻáá˛á ááŤááááşá¸ ááąáŹáşááąáŹáşáááşáá˛áááŻááşááŤáááşá áá°áá˝áąá "á፠Docker-in-Docker ááᯠáĄááŻáśá¸ááźáŻááąáááşáááŻáááş áĄááŹáĄáŹá¸ááŻáśá¸ááᯠááŤáˇáá˛áˇ Docker áá˛ááᯠááźááşáá˝á˛ááŻááşáááˇáşáĄá áŹá¸ ááŤáˇáá˛áˇ host áážáŹ áááşááŹá¸áá˛áˇ ááŻáśáá˝áąááᯠáááşáááŻááŻáśá¸áááá˛" áááŻáˇ ááąá¸ááąáˇáážááááşá
áĄááťááŻáˇááąáŹ á á˝ááˇáşáŚá¸ááŽáá˝ááşáá°ááťáŹá¸áááş /var/lib/docker ááᯠhost ááž Docker-in-Docker áá˝ááşááááşááŹáá áşááŻáááŻáˇ ááťáááşáááşáááş ááźááŻá¸á áŹá¸áá˛áˇááźáááşá áá áşááŤáá áşááśáá˝ááş áááşá¸áááŻáˇáááş /var/lib/docker ááᯠáá˝ááşááááşááŹááťáŹá¸á á˝áŹááźááˇáş ááťážááąáááşá
áááˇáşááąááŹááᯠááťááşá
áŽá¸á
áąáááŻááŤáááŹá¸á ááŹááźáąáŹááˇáşáá˛áááŻááąáŹáˇ ááŤá áááşá¸áá˛áˇááąááŹááᯠááťááşá
áŽá¸á
áąáááˇáşáĄááŹáá˛á
Docker daemon áááş /var/lib/docker áááŻáˇ ááŽá¸áááˇáşáááşááąáŹááşáá˝ááˇáşáážááááş áážááşá¸áážááşá¸áááşá¸áááşá¸ ááŽáááŻááşá¸ááŻááşááŹá¸áááşá á¤áááŻááşáá˝á˛áá˝ááşáážáááąáŹ Docker áááŻááşááťáŹá¸ááᯠ"ááá ááŻááşááźááşá¸ áááŻáˇáááŻááş ááŻááşááŻááş" áĄááźáŹá¸áááşáááˇáşáĄááŹááž áááźá áşáááˇáşááŤá
ááŹááźáąáŹááˇáş ááŽáááŻááźá áşáááŹáá˛? áĄáááşááźáąáŹááˇáşáááŻááąáŹáşáááşá¸áááş dotCloud áááŻááŽáá˝ááşááąá ááşáá˝ááşáááşáá°áá˛áˇááąáŹáĄáááşáá˛ááŻáśá¸áááşáááşá¸á áŹááťáŹá¸áá˛áážáá áşááŻááźá áşááąáŹááźáąáŹááˇáşááźá áşáááşá dotCloud áá˝ááşááááşááŹáĄááşááťááşáááş /var/lib/dotcloud ááᯠáá áşááźááŻááşáááş áááşááąáŹááşáĄááŻáśá¸ááźáŻáááˇáş ááŻááşáááşá¸á ááşááťáŹá¸á á˝áŹáážáááźááşá¸ááźááˇáş áááşáááşáá˛áˇáááşá áĄááşáááşáááŻááşááᯠáĄá áŹá¸áááŻá¸ááźááşá¸ (ááąááŹáá˝ááş áááşá¸ááźááşááźááşá¸áĄá áŹá¸)á áĄááźáśááąá¸ááťááşáážááˇáş áááźá áşáááąááąáŹáˇáááąáŹááşááťáŹá¸ááŤááąáŹ ááŻááşááťáŹá¸ááᯠááźáááˇáşááąáŹááşá¸áĄáąáŹááşááźáŻááŻááşááźááşá¸áá˛áˇáááŻáˇááąáŹ áááášááŹááŤá¸áááşááąáŹáážááˇáşáá˝ááşááťáŹá¸á SQLite áážááˇáş BDB áá˛áˇáááŻáˇááąáŹ ááŻáśááźáŻáśááąáŹá áá áşááťáŹá¸áážááˇáş áĄááźáŹá¸á ááşá¸áááşáážáŻááťáŹá¸áááş áĄááźá˛áááşá¸ áĄááŻááşáááźá áşááŤá ááąáŹááşááŻáśá¸áá˝ááş Docker ááźá áşááŹáááˇáş ááťá˝ááşáŻááşáááŻáˇááá˝ááşááááşááŹáĄááşááťááşááᯠááźááşáááşááŽáááŻááşá¸áá˝á˛áááˇáşáĄááŤá ááźáŽá¸ááŹá¸ááąáŹ ááŽáááŻááşá¸ááŻáśá¸ááźááşááťááşááťáŹá¸áá˛ááž áá áşááŻáááş container operations áĄáŹá¸ááŻáśá¸ááᯠdaemon áá áşááŻáááşá¸áĄáąáŹááşáá˝ááş á áŻá ááşá¸áááşááźá áşáááşá
ááźá áşá ááşááťáŹá¸á á˝áŹáážááˇáş ááąááşááŽáĄááźááŻááş ááááşá¸ááťáŻááşáážáŻááťáŹá¸ááŤáááşááąáŹ ááąáŹááşá¸áá˝ááşááąáŹá ááŻáśááźááşá áááşááťáááźáŽá¸ ááźááşáááşááąáŹ áĄááŹáá áşááŻááᯠáááşááŽá¸áááş ááťá˝ááşáŻááşááᯠááážáŹá¸ááŤá áąáážááˇáşá áááŻáˇááąáŹáş Docker ááᯠáá áşáŚá¸áááşá¸ááąáŹáá áŹá¸áááŹá¸áĄááźá áş áĄááŻáśá¸ááźáŻá ááŻááşááąá¸áááşáážááˇáş ááááşá¸ááááşá¸áááşáážáŹ áááŻáááŻáá˝ááşáá°ááźáŽá¸ áá˝ááşáá°áááşáᯠááťá˝ááşáŻááşáááŻáˇáá°áááŤáááşá
áááŻáááŻáááşáážáŹ áááşáááş Docker instances áĄááťáŹá¸áĄááźáŹá¸ááźáŹá¸ /var/lib/docker directory ááᯠááťážááąááŤáá áááşáááş ááźáżááŹááťáŹá¸áážáááááˇáşáááşááźá áşáááşá ááŻááşááŤáááşá áĄáá°á¸áááźááˇáş á ááşá¸áááşáážáŻáá˛áˇ áĄá áąáŹáááŻááşá¸áĄáááˇáşáá˝áąáážáŹ ááŤá áĄááŻááşááŻááşáááŻááşááŤáááşá "ááŹá¸ááąáŹááşá፠ááąááąá ááťá˝ááşááąáŹáş ubuntu ááᯠdocker áá áşááŻáĄááąáá˛áˇ run áááŻááşáááş!" ááŤááąáááˇáş ááá°ááŽáá˛áˇááŻáśáážá áşááŻáááą áá°ááŽáá˛áˇááŻáśáá áşááŻáśááᯠáá˝á˛ááŻááşááŹáááŻááťááŻá¸ áááŻáážáŻááşáá˝áąá¸áá˛áˇáĄááŹáá áşááŻááᯠááźááŻá¸á áŹá¸ááźááˇáşááŤá ááášááŹááźáŽá¸ áá°ááąáŹááşááąááŹááᯠáááşáá˝áąáˇááážáŹááŤá
áááŻáááŻáááşáážáŹ áááşá CI á áá áşáááş áááşááąáŹááşááźáŽá¸ ááźááşáááşáááşááąáŹááşááŤáá áááşá Docker-in-Docker áá˝ááşááááşááŹááᯠááźááşáááşá áááşáááˇáşáĄááŤáááŻááşá¸á áááşáááş áááşá¸á cache áá˛áááŻáˇ áá°ááąá¸áá áşá ááşááᯠá á˝ááˇáşáá áşáááş áĄáášáááŹááşáážááááşá á፠ááŻáśá¸á ááááŻááşáá°á¸!
addressing
ááźáąáá áşáážááşá¸ááŻááşááźááĄáąáŹááşá Docker-in-Docker ááᯠáĄáážááşááááş áááŻáĄááşááŤáááŹá¸ áááŻáˇáááŻááş Docker ááᯠáááşáááşá áąááźáŽá¸ CI á áá áşáááŻááşáááŻááş áá˝ááşááááşááŹáá áşááŻáá˛áá˝ááş áážáááąá ááş áááˇáş CI á áá áşááž áá˝ááşááááşááŹááťáŹá¸áážááˇáş ááŻáśááťáŹá¸ááᯠáááşááąáŹááşáᏠááŻááşááąáŹááşáááŻááşáááŻááŤáááŹá¸á
áá°áĄááťáŹá¸á áŻáááş ááąáŹááşááŻáśá¸áá˝áąá¸ááťááşáážáŻááᯠáááŻááťááşááźáááşá áááŻáááŻáááşáážáŹ Jenkins áá˛áˇáááŻáˇááąáŹ CI á áá áşáá áşááŻááᯠáá˝ááşááááşááŹááťáŹá¸áááşáááşáááŻááşá áąáááş áááŻááŹá¸ááŤáááşá áááşá¸áááŻááźáŻááŻááşáááş áĄáá˝ááşáá°ááŻáśá¸áááşá¸áááşá¸áážáŹ áááşá CI áá˝ááşááááşááŹáá˛áááŻáˇ Docker socket áá áşááŻááᯠáááˇáşáá˝ááşá¸ááźáŽá¸ -v áĄááśáážááˇáş ááťáááşáááşáááşááźá áşáááşá
áááŻá¸áážááşá¸á á˝áŹááźáąáŹáááťážááşá áááşáááşáááşá CI áá˝ááşááááşáᏠ(Jenkins áááŻáˇáááŻááş áĄááźáŹá¸) áááŻáĄááŻáśá¸ááźáŻááąáŹáĄá፠Docker-in-Docker áážááˇáş áá áşá áŻáśáá áşááŻááᯠáááşááşááŻááşáááˇáşáĄá áŹá¸ áááşá¸ááᯠáááŻááşá¸ááźááˇáşá áááşááŤá
docker run -v /var/run/docker.sock:/var/run/docker.sock ...
á¤áá˝ááşááááşááŹáááş ááᯠDocker socket áááŻáˇ áááşááąáŹááşáááŻááşááźáŽááźá áşááąáŹááźáąáŹááˇáş áá˝ááşááááşááŹááťáŹá¸ááᯠáá˝ááˇáşáááŻááşáááşááźá áşáááşá "áááąá¸" áá˝ááşááááşááŹááťáŹá¸áááŻáá˝ááˇáşáááˇáşáĄá áŹá¸á áááşá¸áááş "ááŽáĄáááŻ" áá˝ááşááááşááŹááťáŹá¸áááŻáá˝ááˇáşááááˇáşáááşá
áááŹá¸áááş docker ááŻáś (Docker binary á፠á ááşááąáŹáááŹá¸áááş docker ááŻáśááᯠáĄááŻáśá¸ááźáŻá á ááşá¸ááźááˇáşááŤ)
docker run -v /var/run/docker.sock:/var/run/docker.sock
-ti docker
áááşá¸áááş Docker-in-Docker áážááˇáşáá°ááąáŹáşáááşá¸ áááşá¸áááş Docker-in-Docker áááŻááşááŤá á¤áá˝ááşááááşááŹáááş ááąáŹááşáááşáá˝ááşááááşááŹááťáŹá¸ááᯠáááşááŽá¸áááˇáşáĄá፠áááşá¸áááŻáˇááᯠááááşáááşá¸áĄáááˇáş Docker áá˝ááş áááşááŽá¸áááşááźá áşáááşá nesting á ááąá¸áá˝ááşáááŻá¸ááťááŻá¸ááťáŹá¸ááᯠáááşááśá áŹá¸ááááşáááŻááşááŤá ááąáŤáşáááŻáážáŻááťáŹá¸á á˝áŹáá˝ááş áááşáááşááąá¸áááşáážáşááᯠááťážááąááŤáááşá
áážááşááťááş- á¤ááąáŹááşá¸ááŤá¸á ááááşááŹá¸áážááşá¸ááťáŹá¸áááş Docker binary ááᯠhost ááž container áááŻáˇ ááťáááşáááşáááş áĄááźáśááźáŻááŹá¸áááşá Docker áĄááşááťááşáááş static áááŻáˇáááŻááş static libraries ááťáŹá¸ááᯠáááŻáśá¸áá˝ážááşá¸ááąáŹáˇáᲠáááŻáĄá፠áááşá¸áááş á áááşáááťáááźá áşááŹáááşá
áááŻáˇááźáąáŹááˇáş áááşáááş Jenkins CI ááž Docker áááŻáĄááŻáśá¸ááźáŻáááŻááŤáá áááˇáşáá˝ááş áá˝áąá¸ááťááşá
áᏠ2 ááŻáážááááşá
áĄááźáąááśááŻááşááŻáśááŻááşáááŻá¸áážáŻá
áá
áş (áááŻáááŻáááşáážáŹ áááˇáşááŻáśáááş Debian áááŻáĄááźáąááśááŤá Docker API áááŻáĄááŻáśá¸ááźáŻá .deb áááşááąáˇááťáşááťáŹá¸áááŻááŻáśá¸ááŤ) áááŻáĄááŻáśá¸ááźáŻá Docker CLI áááŻáááˇáşáá˝ááşá¸ááźááşá¸á
ááźáąáŹáşááźáŹáĄááťááŻáˇ đ
ááťá˝ááşáŻááşáááŻáˇáážááˇáşáĄáá°áážáááąáááˇáşáĄáá˝ááş ááťáąá¸áá°á¸áááşááŤáááşá ááťá˝ááşáŻááşáááŻáˇáááąáŹááşá¸ááŤá¸ááťáŹá¸ááᯠáááşáážá
áşáááşááŤáááŹá¸á áááŻá
áááşáááşá
áŹá¸á
ááŹááąáŹááşá¸áá˛áˇ áĄááźáąáŹááşá¸áĄááŹáá˝áąááᯠááźááˇáşááťááşááŤáááŹá¸á áážáŹáá°áážáŻáá
áşááŻááźáŻááŻááşááźááşá¸ áááŻáˇáááŻááş áá°áááşááťááşá¸ááťáŹá¸ááᯠáĄááźáśááźáŻááźááşá¸ááźááˇáş ááťá˝ááşáŻááşáááŻáˇáĄáŹá¸ ááśáˇáááŻá¸áá°ááŽááŤá
áĄááşá
ááŹáááşáážá Equinix Tier IV ááąááŹá
ááşááŹáá˝ááş Dell R730xd áááş á á á
áťáąá¸áááşááŹáááşá ááŽáážáŹááŹ
source: www.habr.com