Docker-in-Docker ααΊααΆααα·ααααΆααααα·α Docker αα·αααα·ααααααααΎαααΆααα
αααα»ααα»αααΊααααααα½αααΆααΎααααΈαααααΎαααΌαααΆααα»αααΊαααα αααααααααααΆααααααΆααααααΎα Docker-in-Docker ααΊααΎααααΈαα½αα’αα·αααα Docker αααα½αα―αα ααα»αααααΆα
αααΎαααααΎααΆααΎααααΈααααΎαααΆα Jenkins CI α ααΆα αΆααααΌα
ααΆααααααΆαα
αααααααΌα ααα»αααααααααΆαααααααα αΆααΎαα‘αΎααααα’αΆα
ααααΌαααΆααααααΆααααααΆαααα‘αΎα Docker αα
αααα»ααα»α Jenkins CI α α’ααααααααααααΆααα’αααααΈααααααααΎααΆα ααααα·αααΎα’αααα
αΆααα’αΆααααααααΎαααααααααΆαα
α»αααααααααααααΆαααααααΆααααα’α·αααααΆααααα’αΆααααααα
α»ααααααααα’ααααα "ααΆααααααααΆααααα αΆ"α
Docker-in-Docker: "ααα’"
ααΆαααΈαααααΆααα»ααααα»αααΆααααα
αΌα Docker
- ααΆααα½α α αΌα hack;
- ααΆαααα;
- αααααααααα·α Docker ααααααα»αααααΎαααΆα;
- ααΎαααααΎαααΆααααα·α Docker ααααΈ;
- ααΆαααααΎααααα;
- ααααΎαααααααααααα
ααααα·αααΎα’αααα αααααααΎαααΆααα½αααααα»αααααΆαααααααααα’αΆα αα·αα’αΆα ααα·αα‘αΎααα·αααΆα (αααααΊαα αααα»ααα»ααα½α) αααααΆααΆαααααααα»αααααΆαα
- ααΆααα½α α αΌα hack;
- ααααΌαααααΆααααΆααααααΆαααΆααααα Docker αααα»αααααΎαααΆαα
- αααααΎα Docker ααααΈααΆαα½α Docker α αΆαα;
- αααααα Docker αααα·α;
- α αΆααααααΎααααα·α Docker ααααΈ;
- ααααα;
- αααααααααα·α Docker ααααΈ;
- ααααΎαααααααα
ααΆαα½αααΉαααΆαααααααα Docker-in-Docker ααααΎαααΆαααΆαααααΆααα ααΆααΆααααααΆααα»αα
- ααΆααα½α α αΌα hack;
- ααΆααα½αααααα»αααααΆ + ααΆαααΎαααααΎαααΆααααα»αααααΆααααΆααα½α;
- ααααΎαααααααααααα
αα·ααΈααααα·ααααααΎαααΆααα?
Docker-in-Docker: "α’αΆααααα"
ααααααΆαααΆααααα αααα»ααα ααΉαααααΏααααααα·αα Docker-in-Docker αα·ααααααΆααΆααΆ 100% ααααααα αα·αααααα ααααααααααα α’αααΈβαααβαααα»αβα ααβαα·ααΆαβααΊβααΆβααΆαβαααα αΆβααΆβα αααΎαβαααβα’αααβα’αα·ααααααβααααΌαβααΉαβα
αα½ααααα»αα αααααα½αααααΆααααααΉα LSMs (αααΌαα»ααα»ααααα·ααΆαααΈαα»α ) ααΌα ααΆ AppArmor αα·α SELinuxα αα αααααααΎαααΆααα»αααΊααα "Docker ααΆααααα»α" α’αΆα ααααΆααΆαα’αα»αααααααααααα»ααααα·ααΆααααααΉααααααααα·α α¬α ααα‘α "Docker ααΆααααα " α αααααΊααΆαααα αΆααααΆααααα»ααααα»αααΆααααααααΆα αα ααααααααααΆααΆααααα αΌαααααΆααΌαααΆαα’αα»ααααααΎαααααα -privileged α ααΆαααααΆααααααΌααααααααα»αααΆαααααΎαααΆα α αΎαααΆαααααΎαααααααΆααα’ααααΉαα α»α αα ααΎαααΆαααΈα Debian αα·α Ubuntu test VMs αααααααα»α ααα»αααααα½αααααΉαααΆαα αα·αααααα ααΎαααΆαααΈααααα Michael Crosby (ααΆααααΆα Fedora ααΌα ααααααα»αα αα αΆα)α αααα»ααα·αα’αΆα α αΆαααΈααΌαα ααα»αα·αααααΆαααααααα αΆααααα ααα»ααααααΆαααα ααααΆαααααΆααα Mike ααΊααΆααα»αααααααΆαααααΆαααααααααΎααΆαααΆαα½α SELINUX=enforce (αααα»αααΆαααααΎ AppArmor) α αΎαααΆαααααΆααααααΌααααααααα»ααα·αααΆααααααααα SELinux αα αααα»αααααΈαααααα
Docker-in-Docker: "α’αΆααααα"
αααα αΆααΈααΈαααΊααΆαα½ααααααα·ααΈαααααΆαααα»α Docker α αα αααα’αααααααΎαααΆα Docker-in-Docker ααα Docker ααΆααααα ααααΎαααΆααα αααααααΆαααΎααααααααααα―αααΆαααααααΆ (EXT4, BTRFS α¬α’αααΈαααα’αααααΆα) α αΎα Docker ααΆααααα»αααααΎαααΆααα ααΎααααααααα ααααααΎααΆαααααα (AUFS, BTRFS, Device Mapper αα ) α’αΆαααααααΎα’αααΈαααααααΌαααΆαααααααα ααΆααααααααααΎααααΈααααΎ Docker ααΆααααα )α ααααααααΎααααααααΆα αααΎααααααΉααα·αααααΎαααΆαα α§ααΆα ααα α’αααααΉααα·αα’αΆα ααααΎαααΆα AUFS αα ααΎ AUFS ααΆαααα
ααααα·αααΎα’αααααααΎαααΆα BTRFS αα ααΎααααΌααα BTRFS ααΆαα½αααααααΎαααΆαααααΌα ααα»αααααα ααααααααΆαααααα»ααααααααΆαααΆαααα½α ααΆααα»αααΆαααααααΉααααΆαααα αααΌαα»ααααααα·ααΈαααααΈα§ααααααα·αααΆαα αααααααααααα ααΌα ααααααααα·αααΎααααΈ Docker α αααΎααααα»αααααΎαααΆαααΆαα ααΎαααΆαααΈααααα½α αα½αααΆααΆααα’ααααΉαα’αΆα ααΎαααΎα (αα·αααΆαα₯αααα·αα) ααΌαααΆααα ααΎααααΆαα αα·ααα αα αα·ααα ααΎα§αααααααααα»ααα»ααα»αααΊαααα αααβααΆβααΏαβα’αΆαααααα
ααΆααα·ααΈαααααααΆαααΆα αααΎα ααΎααααΈαααααααΆααααα αΆααΆαααααα α§ααΆα ααα ααααα·αααΎα’αααα ααααααΎ AUFS αα αααα»α Docker ααΆααααα»α ααααΆααααααααααααα―αααΆα /var/lib/docker αα ααΆααΆα αααα’αααααΉααα·αα’αΈααα Docker ααΆαααααααα ααααααααααααΌαααααΆααα½αα ααα½ααα αααααααααα α§ααααα Mapper ααΌα ααααααααα·αααΎααΆαα α Docker α αααΎααααα»αααααΎαααΆααα ααΎαααΆαααΈααααα½α αα½αααααΉααα·αααΆαααΎαααααΆαα αα·ααα ααααα
αααααΆαααΆαααΆααααα ααΆααααα
ααααααααα·αααΆαααααα ααΌα
αααα’αΆα
ααΎαααΎαααΈα
ααα»α
ααΆααααα
Docker-in-Dockerα ααΆααΆααααα’αΆααααααα α
α α»αβααααΆααβαααααΆααβαααααΎαβαα·α? αααααα’αΆα ααΆααΆαααααΆααααααα ααα»αααααααααα½ααααα»αααΆ "ααααα·αααΎαααα»ααααα»αααααΎαααΆα Docker-in-Docker ααΎαααα»αα’αΆα ααααΎααΌαααΆαααααααα αααα ααΎαααΆαααΈααααααααα»α αααα½αα±ααααΆαααΆαα’αααΈαααααααααΆαα αΌααα αααα»α Docker ααΆααααα»ααααααααα»ααα·α"?
ααα»ααααααααΆααααα·αα αααααααα·ααα½αα ααα½αααΆαααααΆααΆαα α /var/lib/docker ααΈ host αα Docker-in-Docker containerα ααααααααα½αααα ααααααα /var/lib/docker ααΆαα½ααα»αα αααΎαα
ααΎα’αααα
ααααΌα
αα·ααααααααααα’ααααα? ααααααααααΆα’αααΈαααααααααΆααα·ααααααααααα’ααα!
αααα·α Docker ααααΌαααΆααα ααΆα‘αΎααααΆαα αααΆααααΆααααΎααααΈα±ααααΆαααΆαα αΌαααααΎααααΆα ααα»ααα ααΆαα /var/lib/docker α ααααΆαβα’αααΈβαααααβαααβαααβαα½α "ααα α αΆαα α¬βααα·α" α―αααΆα Docker αααβααΆαβααΈααΆααβαααα»αβααβαααβααα
α ααα»βα’αααΈβααΆαβααΆβαααΆαβααα? αααααΆααααααααΊααΆαααααααααααααααααααΆααααα»ααα½ααααααΆααααααααααααααααα»αα’αα·αααα dotCloud α αααΆαααΈααα»αααΊααα dotCloud ααααΎαααΆααααααααΎαααΆαααΆα αααΎααααα αΌαααααΎ /var/lib/dotcloud αααα»ααααααααΆαααααΆα αααα·α αααααααααααΌα ααΆααΆααααα½αα―αααΆαα’αΆααΌαα·α (αααα½αα±ααααΆαααααααα½ααα ααΉααααααα) ααΆααααα αΌαααΌααααααΆαααααΆα αα·αααΆαα αΆααααααΆααΆαααααα·α αα αα·αααΆααα·αααααααααααααααΆαα½ααααααααααα»ααααα·ααΆαααΌα ααΆ SQLite αα·α BDB αα·ααααααααααΎαααΆαααα αα ααααααααΎααααα»ααα ααΆα‘αΎααα·αααΌααααΆαααΈααα»αααΊαααααααααΎα αααααΈαααα»αααΆαααααΆααα ααΆ Docker ααΆααααααα α α·ααααα ααΆαααααα½αααΊααΆαααααα½αααααα½αααααα·ααααα·ααΆααα»αααΊαααααΆααα’αααα ααααααααα·ααααα½α ααΎααααΈαααα αΆααα ααααΌαααΆαααα ααα»αααααα½αααΆααα’ααα
αα»ααααα ααα‘αα ααΆα’αΆα αα αα½α ααΆαααααα»ααααα»αααΆααααααΎαα’αααΈαα½ααααααα’ αα½αα±αααα»αα α·ααα αα·αααΏα αααααΆαααααααααΉαααααΎαααΆαααΆα αααΎα αα·αααΆααααααααααααααααααΎαα ααα»ααααααΎααα·αααΆ ααΆααΆααααααΆααααα½α αα·αααΆααααα½αααΆααααα»αααΆαααααα αα·ααααααΆααΌααααααααΎ Docker ααΆα’αααααααααα½ααααα
αααααΆααααααΆααααα·αααΎα’αααα ααααααααα /var/lib/docker αααΆα Docker α αααΎα α’αααααΉαααΆααααα αΆα ααΆααΆααα·αααΆαα αααα’αΆα ααααΎαααΆαααΆα ααΆαα·ααααα αααα»αααααΆααααΆαααααΌαααααΆαααααΎαααααα "ααααΆαα αααΆ αααα»αα’αΆα ααααΎαααΆα ubuntu ααΆ docker ααΆα!" ααα»ααααβααΆαααααβα’αααΈβαααβαααα»αααααΆαβααΆαβααα ααΌα ααΆβααΆαβααΌαααΆαβααΌα ααααΆβααΈβα§ααΆα αααβααΈαβαααααβααααΆ α αΎαβα’αααβααΉαβααΎαβαα·αααααβαααα
αααααΆααααααΆ ααααα·αααΎαααααααα CI ααααα’αααααααΎαααΆαααΆαααα αα·ααααααΎαα‘αΎααα·α ααΆααααααααα’αααα αΆααααααΎααα»αααΊααα Docker-in-Docker ααααα’αααα‘αΎααα·α αααα’αααααΉαααααα»αααΉααααααΆαα nuke αα αααα»αααααΆαααααααΆααααααααΆα ααααα·αα‘αΌαααΆααααααα!
ααΆααααααααΆααααα αΆ
αααβαα½αβααα αΆαβααβαααααα ααΎα’ααααα·αααΆααααΌαααΆα Docker-in-Docker α¬ααΎα’αααααααΆααααα ααα’αΆα ααααΎαααΆα Docker αα·ααααααΎα αα·αααααΎαααΆααα»αααΊααα αα·αααΌαααΆαααΈαααααααα CI ααααα’ααα αααααααααααααα CI αααα½αα―ααααα·ααα αααα»ααα»αααΊααα?
αααα»αααααΆααααΆααα»αααααΆαα αααΎαα ααααΆααααααΎαα α»αααααα ααΆααααααΆαα½αααα ααααΆααααααααα CI ααΌα ααΆ Jenkins ααΎααααΈα’αΆα ααααΎαααΆααα»αααΊαααααΆαα α αΎααα·ααΈααΆααααα½ααααα»αααΎααααΈααααΎααΆααΊααααΆαααααααα αΌααααα Docker αα αααα»ααα»αααΊααα CI ααααα’ααα α αΎαααααΆααααΆααΆαα½αααα -v α
αα·ααΆαα±ααααΆαααα αα αααα’αααααααΎαααΆααα»αααΊααα CI ααααα’ααα (Jenkins α¬αααααααα) αααα½αα±ααααΆααα½α α αΌαα’αααΈαα½αααΆαα½α Docker-in-Docker ααΌαα αΆααααααΎαααΆααΆαα½ααααααΆααα
docker run -v /var/run/docker.sock:/var/run/docker.sock ...
α₯α‘αΌαααααα»αααΊααααααααΉαααΆααα·αααα·α αΌαααααΎαααα Docker ααΌα ααααα αΎαα’αΆα ααααΎαααΆααα»αααΊαααααΆαα ααΎααααααααΆαααα½αα±ααααΆαααααΎαααΆααα»αααΊααα "αα»ααΆα" ααΆααΉαααΎαααααΎαααΆααα»α "ααααα’αΌααααααΎα" α
ααΆαααααααΆαααααααΎααΌαααΆα docker ααααΌαααΆα (αααααΆα Docker binary):
docker run -v /var/run/docker.sock:/var/run/docker.sock
-ti docker
ααΆααΎααα αα·αααααΎαααΆαααΌα Docker-in-Docker ααα»ααααααΆαα·ααααααΆ Docker-in-Docker ααα αα αααααααα»αααΊαααααααααααΎααα»ααααααα αα½αααΆααΉαααααΌαααΆααααααΎααα αααα»α Docker ααααα·αααααΌαα α’αααβααΉαβαα·αβαα½αβαααααβααΉαβααβαααααΆααβααβααΆαβααΆααβαααα»αβαα α αΎαβααααΆααβαααααΆααβααβααΆαβαα½αβαα»αβααΉαβααααΌαβααΆαβα ααβαααααβααΆαβααΆαβα α βααΌαααααβααΆβα αααΎαα
α αααΆαα αααααα»αααα’ααααααααααααΆαα±ααααααΆαααααααααααααααΈα Docker ααΈαααΆαααΈααα αα»αααΊαααα α₯α‘αΌααααααΆααΆαααααΆααα ααΆαα·ααα½αα±αααα»αα α·αααααΆα αααααΆααααΆαααΈα Docker ααααααααααααααααααΆααααα·αα·αααα α¬αα·ααααα·αα
ααΌα
ααααααααα·αααΎα’αααα
ααααααΎ Docker ααΈ Jenkins CI α’αααααΆααααααΎα 2α
ααΆαααα‘αΎα Docker CLI αααααααΎααααααααααα
ααα
ααααΌαααΆαααΌαααααΆα (α§. ααααα·αααΎααΌαααΆαααααα’αααααα’ααααΎ Debian ααΌαααααΎαααα
αα .deb) αααααααΎ Docker APIα
ααΆαααααΆαααΆαα·ααααααααα½αα ααα½απ
ααΌαα’ααα»αα
ααααααΆαααααΆαααα
ααΆαα½ααα½αααΎαα ααΎα’αααα
αΌαα
α·αααα’αααααααααααΎααα? α
ααααΎαααααΉαααΆααα½αα±ααα
αΆααα’αΆααααααααααααααααα? ααΆααααααΎααααααΆααααααΆαα·αα¬ααααΆαααααα·αααααααα·,
Dell R730xd 2x αααααΆααα
αααα»αααααααααααα·αααααα Equinix Tier IV αα
ααΈαααα»α Amsterdam? αα
ααΈααα
ααααα: www.habr.com