แƒ™แƒแƒ แƒ’แƒแƒ“ แƒ“แƒแƒคแƒ˜แƒฅแƒ แƒ“แƒ˜แƒ— Docker-in-Docker-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒ›แƒ“แƒ” CI-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒแƒœ แƒกแƒแƒขแƒ”แƒกแƒขแƒ แƒ’แƒแƒ แƒ”แƒ›แƒแƒกแƒ—แƒ•แƒ˜แƒก

แƒ™แƒแƒ แƒ’แƒแƒ“ แƒ“แƒแƒคแƒ˜แƒฅแƒ แƒ“แƒ˜แƒ— Docker-in-Docker-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒ›แƒ“แƒ” CI-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒแƒœ แƒกแƒแƒขแƒ”แƒกแƒขแƒ แƒ’แƒแƒ แƒ”แƒ›แƒแƒกแƒ—แƒ•แƒ˜แƒก

Docker-in-Docker แƒแƒ แƒ˜แƒก แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ แƒ˜ Docker แƒ“แƒ”แƒ›แƒแƒœแƒฃแƒ แƒ˜ แƒ’แƒแƒ แƒ”แƒ›แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒจแƒ˜ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜แƒก แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฅแƒ›แƒœแƒ”แƒšแƒแƒ“. Docker-in-Docker-แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒก แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒ›แƒ˜แƒ–แƒแƒœแƒ˜ แƒ˜แƒงแƒ แƒ—แƒแƒ•แƒแƒ“ Docker-แƒ˜แƒก แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒแƒจแƒ˜ แƒ“แƒแƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ. แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒแƒ“แƒแƒ›แƒ˜แƒแƒœแƒ˜ แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒ›แƒแƒก Jenkins CI-แƒ˜แƒก แƒ’แƒแƒกแƒแƒจแƒ•แƒ”แƒ‘แƒแƒ“. แƒ”แƒก แƒ—แƒแƒ•แƒ˜แƒ“แƒแƒœ แƒœแƒแƒ แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒฉแƒแƒœแƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒฌแƒแƒ แƒ›แƒแƒ˜แƒฅแƒ›แƒœแƒ”แƒ‘แƒ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ—แƒ แƒ—แƒแƒ•แƒ˜แƒ“แƒแƒœ แƒแƒชแƒ˜แƒšแƒ”แƒ‘แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ Docker-แƒ˜แƒก แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— Jenkins CI แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒจแƒ˜. แƒ”แƒก แƒกแƒขแƒแƒขแƒ˜แƒ แƒ’แƒ”แƒขแƒงแƒ•แƒ˜แƒ—, แƒ—แƒฃ แƒ แƒแƒ’แƒแƒ  แƒฃแƒœแƒ“แƒ แƒ’แƒแƒแƒ™แƒ”แƒ—แƒแƒ— แƒ”แƒก. แƒ—แƒฃ แƒ’แƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ”แƒ‘แƒ— แƒกแƒแƒ‘แƒแƒšแƒแƒ แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ แƒ“แƒ”แƒขแƒแƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”, แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒ”แƒ— แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒ‘แƒแƒšแƒ แƒœแƒแƒฌแƒ˜แƒšแƒ˜, โ€žแƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ˜แƒก แƒ’แƒแƒ“แƒแƒญแƒ แƒโ€œ.

แƒ™แƒแƒ แƒ’แƒแƒ“ แƒ“แƒแƒคแƒ˜แƒฅแƒ แƒ“แƒ˜แƒ— Docker-in-Docker-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒ›แƒ“แƒ” CI-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒแƒœ แƒกแƒแƒขแƒ”แƒกแƒขแƒ แƒ’แƒแƒ แƒ”แƒ›แƒแƒกแƒ—แƒ•แƒ˜แƒก

Docker-in-Docker: "แƒ™แƒแƒ แƒ’แƒ˜"

แƒแƒ  แƒฌแƒ”แƒšแƒ–แƒ” แƒ›แƒ”แƒขแƒ˜ แƒฎแƒœแƒ˜แƒก แƒฌแƒ˜แƒœ แƒฉแƒแƒ•แƒแƒ‘แƒแƒ แƒ” Docker-แƒจแƒ˜ แƒ“แƒ แƒแƒจแƒ โ€“ แƒžแƒ แƒ˜แƒ•แƒ˜แƒšแƒ”แƒ’แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ“แƒ แƒ“แƒแƒฌแƒ”แƒ แƒ แƒ“แƒ˜แƒœแƒ“แƒ˜แƒก แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ. แƒ›แƒ˜แƒ–แƒแƒœแƒ˜ แƒ˜แƒงแƒ แƒ“แƒแƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒแƒ“แƒ แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“ แƒ’แƒฃแƒœแƒ“แƒก Docker-แƒ˜แƒก แƒฃแƒคแƒ แƒ แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒแƒจแƒ˜. Docker-in-Docker-แƒ›แƒ“แƒ”, แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒขแƒ˜แƒžแƒ˜แƒฃแƒ แƒ˜ แƒชแƒ˜แƒ™แƒšแƒ˜ แƒแƒกแƒ” แƒ’แƒแƒ›แƒแƒ˜แƒงแƒฃแƒ แƒ”แƒ‘แƒแƒ“แƒ:

  • hackity hack;
  • แƒแƒจแƒ”แƒœแƒ”แƒ‘แƒ;
  • แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ Docker แƒ“แƒ”แƒ›แƒแƒœแƒ˜แƒก แƒจแƒ”แƒฉแƒ”แƒ แƒ”แƒ‘แƒ;
  • แƒแƒฎแƒแƒšแƒ˜ Docker แƒ“แƒ”แƒ›แƒแƒœแƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ;
  • แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ;
  • แƒ’แƒแƒ˜แƒ›แƒ”แƒแƒ แƒ”แƒ— แƒชแƒ˜แƒ™แƒšแƒ˜.

แƒ—แƒฃ แƒ’แƒ˜แƒœแƒ“แƒแƒ“แƒแƒ— แƒšแƒแƒ›แƒแƒ–แƒ˜, แƒ แƒ”แƒžแƒ แƒแƒ“แƒฃแƒชแƒ˜แƒ แƒ”แƒ‘แƒแƒ“แƒ˜ แƒแƒกแƒแƒ›แƒ‘แƒšแƒ”แƒ˜แƒก แƒ’แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ (แƒแƒœแƒฃ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒจแƒ˜), แƒ›แƒแƒจแƒ˜แƒœ แƒ˜แƒก แƒฃแƒคแƒ แƒ แƒ แƒ—แƒฃแƒšแƒ˜ แƒ’แƒแƒฎแƒ“แƒ:

  • hackity hack;
  • แƒ“แƒแƒ แƒฌแƒ›แƒฃแƒœแƒ“แƒ˜แƒ—, แƒ แƒแƒ› แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก Docker-แƒ˜แƒก แƒกแƒแƒ›แƒฃแƒจแƒแƒ แƒ•แƒ”แƒ แƒกแƒ˜แƒ;
  • แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒแƒฎแƒแƒšแƒ˜ แƒ“แƒแƒ™แƒ”แƒ แƒ˜ แƒซแƒ•แƒ”แƒšแƒ˜ แƒ“แƒแƒ™แƒ”แƒ แƒ˜แƒ—;
  • แƒจแƒ”แƒแƒฉแƒ”แƒ แƒ” แƒ“แƒแƒ™แƒ”แƒ แƒ˜แƒก แƒ“แƒ”แƒ›แƒแƒœแƒ˜;
  • แƒ“แƒแƒ˜แƒฌแƒงแƒ”แƒ— แƒแƒฎแƒแƒšแƒ˜ Docker แƒ“แƒ”แƒ›แƒแƒœแƒ˜;
  • แƒขแƒ”แƒกแƒขแƒ˜;
  • แƒจแƒ”แƒแƒฉแƒ”แƒ แƒ” แƒแƒฎแƒแƒšแƒ˜ แƒ“แƒแƒ™แƒ”แƒ แƒ˜แƒก แƒ“แƒ”แƒ›แƒแƒœแƒ˜;
  • แƒ’แƒแƒ˜แƒ›แƒ”แƒแƒ แƒ”แƒ—.

Docker-in-Docker-แƒ˜แƒก แƒ›แƒแƒกแƒ•แƒšแƒแƒกแƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“, แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ แƒฃแƒคแƒ แƒ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒ’แƒแƒฎแƒ“แƒ:

  • hackity hack;
  • แƒจแƒ”แƒ™แƒ แƒ”แƒ‘แƒ + แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ แƒ”แƒ แƒ— แƒ”แƒขแƒแƒžแƒ–แƒ”;
  • แƒ’แƒแƒ˜แƒ›แƒ”แƒแƒ แƒ”แƒ— แƒชแƒ˜แƒ™แƒšแƒ˜.

แƒแƒกแƒ” แƒแƒ  แƒฏแƒแƒ‘แƒ˜แƒ?

แƒ™แƒแƒ แƒ’แƒแƒ“ แƒ“แƒแƒคแƒ˜แƒฅแƒ แƒ“แƒ˜แƒ— Docker-in-Docker-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒ›แƒ“แƒ” CI-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒแƒœ แƒกแƒแƒขแƒ”แƒกแƒขแƒ แƒ’แƒแƒ แƒ”แƒ›แƒแƒกแƒ—แƒ•แƒ˜แƒก

Docker-in-Docker: "แƒชแƒฃแƒ“แƒ˜"

แƒ—แƒฃแƒ›แƒชแƒ, แƒžแƒแƒžแƒฃแƒšแƒแƒ แƒฃแƒšแƒ˜ แƒ แƒฌแƒ›แƒ”แƒœแƒ˜แƒก แƒกแƒแƒฌแƒ˜แƒœแƒแƒแƒฆแƒ›แƒ“แƒ”แƒ’แƒแƒ“, Docker-in-Docker แƒแƒ  แƒแƒ แƒ˜แƒก 100% แƒ•แƒแƒ แƒกแƒ™แƒ•แƒšแƒแƒ•แƒ”แƒ‘แƒ˜, แƒžแƒแƒœแƒ˜แƒ”แƒ‘แƒ˜ แƒ“แƒ unicorns. แƒ›แƒ” แƒ•แƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒแƒ‘ แƒแƒ แƒ˜แƒก แƒ˜แƒก, แƒ แƒแƒ› แƒแƒ แƒ˜แƒก แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ›แƒ แƒฃแƒœแƒ“แƒ แƒ˜แƒชแƒแƒ“แƒ”แƒก.

แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒ›แƒแƒ—แƒ’แƒแƒœแƒ˜ แƒ”แƒฎแƒ”แƒ‘แƒ LSM-แƒ”แƒ‘แƒก (Linux-แƒ˜แƒก แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ“แƒฃแƒšแƒ”แƒ‘แƒก), แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ AppArmor แƒ“แƒ SELinux: แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒกแƒแƒก, โ€žแƒจแƒ˜แƒ“แƒ แƒ“แƒแƒ™แƒ”แƒ แƒ›แƒโ€œ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒจแƒ”แƒ”แƒชแƒแƒ“แƒแƒก แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒก แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒแƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ™แƒแƒœแƒคแƒšแƒ˜แƒฅแƒขแƒจแƒ˜ แƒ›แƒแƒฐแƒงแƒ•แƒ”แƒ‘แƒ แƒแƒœ แƒแƒฆแƒ แƒ”แƒ•แƒก โ€žแƒ’แƒแƒ แƒ” แƒ“แƒแƒ™แƒ”แƒ แƒกโ€œ. แƒ”แƒก แƒแƒ แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒ แƒ—แƒฃแƒšแƒ˜ แƒ’แƒแƒ“แƒแƒกแƒแƒญแƒ แƒ”แƒšแƒ˜ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ•แƒชแƒ“แƒ˜แƒšแƒแƒ‘แƒ— แƒจแƒ”แƒ•แƒแƒ”แƒ แƒ—แƒแƒ— แƒแƒ แƒ˜แƒ’แƒ˜แƒœแƒแƒšแƒฃแƒ แƒ˜ แƒžแƒ แƒ˜แƒ•แƒ˜แƒšแƒ”แƒ’แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ“แƒ แƒแƒจแƒ. แƒฉแƒ”แƒ›แƒ›แƒ แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ›แƒ แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ แƒ“แƒ แƒงแƒ•แƒ”แƒšแƒ แƒขแƒ”แƒกแƒขแƒ˜ แƒ’แƒแƒ˜แƒ•แƒšแƒ˜แƒ“แƒ แƒฉแƒ”แƒ›แƒก Debian แƒ›แƒแƒœแƒฅแƒแƒœแƒแƒก แƒ“แƒ Ubuntu-แƒก แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒฃแƒš VM-แƒ”แƒ‘แƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒแƒ•แƒแƒ แƒ˜แƒ“แƒ”แƒ‘แƒแƒ“แƒœแƒ”แƒœ แƒ“แƒ แƒ“แƒแƒ˜แƒฌแƒ•แƒ”แƒ‘แƒแƒ“แƒœแƒ”แƒœ แƒ›แƒแƒ˜แƒ™แƒš แƒ™แƒ แƒแƒกแƒ‘แƒ˜แƒก แƒแƒžแƒแƒ แƒแƒขแƒ–แƒ” (แƒ›แƒแƒก แƒฐแƒงแƒแƒ•แƒ“แƒ Fedora, แƒ แƒแƒ’แƒแƒ แƒช แƒ›แƒแƒฎแƒกแƒแƒ•แƒก). แƒ›แƒ” แƒแƒ  แƒ›แƒแƒฎแƒกแƒแƒ•แƒก แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ˜แƒก แƒ–แƒฃแƒกแƒขแƒ˜ แƒ›แƒ˜แƒ–แƒ”แƒ–แƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ˜แƒ›แƒ˜แƒขแƒแƒ›, แƒ แƒแƒ› แƒ›แƒแƒ˜แƒ™แƒ˜ แƒ‘แƒ แƒซแƒ”แƒœแƒ˜ แƒ‘แƒ˜แƒญแƒ˜แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก SELINUX=enforce-แƒ˜แƒ— (แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ” AppArmor) แƒ“แƒ แƒฉแƒ”แƒ›แƒ˜ แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜ แƒแƒ  แƒ˜แƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒ”แƒ‘แƒ“แƒ SELinux-แƒ˜แƒก แƒžแƒ แƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒก.

Docker-in-Docker: "แƒ‘แƒแƒ แƒแƒขแƒ˜"

แƒ›แƒ”แƒแƒ แƒ” แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ แƒ”แƒฎแƒ”แƒ‘แƒ Docker แƒจแƒ”แƒœแƒแƒฎแƒ•แƒ˜แƒก แƒ“แƒ แƒแƒ˜แƒ•แƒ”แƒ แƒ”แƒ‘แƒก. Docker-in-Docker-แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒกแƒแƒก, แƒ’แƒแƒ แƒ” Docker แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒฉแƒ•แƒ”แƒฃแƒšแƒ”แƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒคแƒแƒ˜แƒšแƒฃแƒ แƒ˜ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒ—แƒแƒ•แƒ–แƒ” (EXT4, BTRFS, แƒแƒœ แƒ แƒแƒช แƒ’แƒแƒฅแƒ•แƒ—) แƒ“แƒ แƒจแƒ˜แƒ“แƒ Docker แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒแƒกแƒšแƒ˜-แƒฉแƒแƒฌแƒ”แƒ แƒ˜แƒก แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒ—แƒแƒ•แƒ–แƒ” (AUFS, BTRFS, Device Mapper). แƒ“แƒ แƒ.แƒจ.). , แƒ˜แƒ›แƒ˜แƒกแƒ“แƒ แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—, แƒ—แƒฃ แƒ แƒ แƒแƒ แƒ˜แƒก แƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ’แƒแƒ แƒ” แƒ“แƒแƒ™แƒ”แƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒกแƒแƒงแƒ”แƒœแƒ”แƒ‘แƒšแƒแƒ“). แƒ”แƒก แƒฅแƒ›แƒœแƒ˜แƒก แƒ‘แƒ”แƒ•แƒ  แƒ™แƒแƒ›แƒ‘แƒ˜แƒœแƒแƒชแƒ˜แƒแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ  แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ—แƒฅแƒ•แƒ”แƒœ แƒ•แƒ”แƒ  แƒจแƒ”แƒซแƒšแƒ”แƒ‘แƒ— AUFS-แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒแƒก AUFS-แƒ˜แƒก แƒ—แƒแƒ•แƒ–แƒ”.

แƒ—แƒฃ BTRFS-แƒก แƒแƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ— BTRFS-แƒ˜แƒก แƒ—แƒแƒ•แƒ–แƒ”, แƒ›แƒแƒœ แƒ—แƒแƒ•แƒ˜แƒ“แƒแƒœ แƒฃแƒœแƒ“แƒ แƒ˜แƒ›แƒฃแƒจแƒแƒแƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒแƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ แƒแƒช แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒฉแƒแƒ“แƒ’แƒ›แƒฃแƒšแƒ˜ แƒฅแƒ•แƒ”แƒขแƒแƒ›แƒ”แƒ‘แƒ˜, แƒ›แƒจแƒแƒ‘แƒ”แƒšแƒ˜ แƒฅแƒ•แƒ”แƒขแƒแƒ›แƒ˜แƒก แƒฌแƒแƒจแƒšแƒ แƒ•แƒ”แƒ  แƒ›แƒแƒฎแƒ”แƒ แƒฎแƒ“แƒ”แƒ‘แƒ. Device Mapper แƒ›แƒแƒ“แƒฃแƒšแƒก แƒแƒ  แƒแƒฅแƒ•แƒก แƒกแƒแƒฎแƒ”แƒšแƒ—แƒ แƒกแƒ˜แƒ•แƒ แƒชแƒ”, แƒแƒกแƒ” แƒ แƒแƒ›, แƒ—แƒฃ Docker-แƒ˜แƒก แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒ แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก แƒ›แƒแƒก แƒ”แƒ แƒ— แƒ›แƒแƒœแƒฅแƒแƒœแƒแƒ–แƒ”, แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒงแƒ•แƒ”แƒšแƒ แƒจแƒ”แƒซแƒšแƒ”แƒ‘แƒ”แƒœ แƒœแƒแƒฎแƒแƒœ (แƒ“แƒ แƒ’แƒแƒ•แƒšแƒ”แƒœแƒ แƒ›แƒแƒแƒฎแƒ“แƒ˜แƒœแƒแƒœ) แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒ–แƒ” แƒ”แƒ แƒ—แƒ›แƒแƒœแƒ”แƒ—แƒ–แƒ” แƒ“แƒ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜แƒก แƒกแƒแƒ แƒ”แƒ–แƒ”แƒ แƒ•แƒ แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒ”แƒ‘แƒ–แƒ”. แฒ”แƒก แƒแƒ แƒ˜แƒก แƒชแƒฃแƒ“แƒ˜.

แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒ’แƒแƒ›แƒแƒกแƒแƒ•แƒแƒšแƒ˜ แƒ›แƒ แƒแƒ•แƒแƒšแƒ˜ แƒแƒ› แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ˜แƒก แƒ’แƒแƒ“แƒแƒกแƒแƒญแƒ แƒ”แƒšแƒแƒ“. แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒแƒ“, แƒ—แƒฃ แƒ’แƒกแƒฃแƒ แƒ— แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— AUFS แƒจแƒ˜แƒ“แƒ Docker-แƒจแƒ˜, แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ’แƒแƒ“แƒแƒแƒฅแƒชแƒ˜แƒ”แƒ— /var/lib/docker แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ” แƒขแƒแƒ›แƒแƒ“ แƒ“แƒ แƒ™แƒแƒ แƒ’แƒแƒ“ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ˜แƒ—. Docker-แƒ›แƒ แƒ“แƒแƒแƒ›แƒแƒขแƒ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒกแƒแƒ‘แƒแƒ–แƒ˜แƒกแƒ แƒกแƒแƒฎแƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ•แƒ แƒชแƒ” Device Mapper-แƒ˜แƒก แƒกแƒแƒ›แƒ˜แƒ–แƒœแƒ” แƒกแƒแƒฎแƒ”แƒšแƒ”แƒ‘แƒจแƒ˜, แƒ แƒแƒ—แƒ แƒ—แƒฃ Docker-แƒ˜แƒก แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ–แƒแƒ แƒ˜ แƒ”แƒ แƒ—แƒกแƒ แƒ“แƒ แƒ˜แƒ›แƒแƒ•แƒ” แƒ›แƒแƒฌแƒงแƒแƒ‘แƒ˜แƒšแƒแƒ‘แƒแƒ–แƒ” แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก, แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ”แƒ แƒ—แƒ›แƒแƒœแƒ”แƒ—แƒก แƒแƒ  แƒ“แƒแƒแƒ‘แƒ˜แƒฏแƒ”แƒ‘แƒ”แƒœ.

แƒ—แƒฃแƒ›แƒชแƒ, แƒแƒกแƒ”แƒ—แƒ˜ แƒ“แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒกแƒฃแƒšแƒแƒช แƒแƒ  แƒแƒ แƒ˜แƒก แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜, แƒ แƒแƒ’แƒแƒ แƒช แƒแƒฅแƒ”แƒ“แƒแƒœ แƒฉแƒแƒœแƒก แƒกแƒขแƒแƒขแƒ˜แƒ”แƒ‘แƒ˜ GitHub-แƒ˜แƒก dind แƒกแƒแƒชแƒแƒ•แƒจแƒ˜.

Docker-in-Docker: แƒ”แƒก แƒฃแƒแƒ แƒ”แƒกแƒ“แƒ”แƒ‘แƒ

แƒ แƒแƒช แƒจแƒ”แƒ”แƒฎแƒ”แƒ‘แƒ build cache-แƒก? แƒ”แƒก แƒแƒกแƒ”แƒ•แƒ” แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒ แƒ—แƒฃแƒšแƒ˜ แƒ˜แƒงแƒแƒก. แƒแƒ“แƒแƒ›แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜ แƒฎแƒจแƒ˜แƒ แƒแƒ“ แƒ›แƒ”แƒ™แƒ˜แƒ—แƒฎแƒ”แƒ‘แƒ˜แƒแƒœ: โ€žแƒ—แƒฃ แƒ›แƒ” แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘ Docker-in-Docker-แƒก, แƒ แƒแƒ’แƒแƒ  แƒจแƒ”แƒ›แƒ˜แƒซแƒšแƒ˜แƒ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒ แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ’แƒแƒœแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒฉแƒ”แƒ›แƒก แƒฐแƒแƒกแƒขแƒ–แƒ”, แƒ˜แƒ›แƒ˜แƒก แƒœแƒแƒชแƒ•แƒšแƒแƒ“, แƒ แƒแƒ› แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒฃแƒ™แƒแƒœ แƒ“แƒแƒ•แƒ˜แƒฎแƒ˜แƒ แƒฉแƒ”แƒ›แƒก แƒจแƒ˜แƒ“แƒ Docker-แƒจแƒ˜โ€œ?

แƒ–แƒแƒ’แƒ˜แƒ”แƒ แƒ—แƒ˜ แƒ›แƒ”แƒฌแƒแƒ แƒ›แƒ” แƒชแƒ“แƒ˜แƒšแƒแƒ‘แƒ“แƒ /var/lib/docker-แƒ˜แƒก แƒ›แƒ˜แƒ‘แƒ›แƒ แƒ›แƒแƒกแƒžแƒ˜แƒœแƒซแƒšแƒ˜แƒ“แƒแƒœ Docker-in-Docker แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ—แƒแƒœ. แƒ–แƒแƒ’แƒฏแƒ”แƒ  แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ˜แƒ–แƒ˜แƒแƒ แƒ”แƒ‘แƒ”แƒœ /var/lib/docker-แƒก แƒ›แƒ แƒแƒ•แƒแƒš แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ—แƒแƒœ.

แƒ™แƒแƒ แƒ’แƒแƒ“ แƒ“แƒแƒคแƒ˜แƒฅแƒ แƒ“แƒ˜แƒ— Docker-in-Docker-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒ›แƒ“แƒ” CI-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒแƒœ แƒกแƒแƒขแƒ”แƒกแƒขแƒ แƒ’แƒแƒ แƒ”แƒ›แƒแƒกแƒ—แƒ•แƒ˜แƒก
แƒ’แƒกแƒฃแƒ แƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒก แƒ™แƒแƒ แƒฃแƒ›แƒžแƒ˜แƒ แƒ”แƒ‘แƒ? แƒ แƒแƒ“แƒ’แƒแƒœ แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ–แƒฃแƒกแƒขแƒแƒ“ แƒ˜แƒก, แƒ แƒแƒช แƒ“แƒแƒแƒ–แƒ˜แƒแƒœแƒ”แƒ‘แƒก แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก!

Docker แƒ“แƒ”แƒ›แƒแƒœแƒ˜ แƒแƒจแƒ™แƒแƒ แƒแƒ“ แƒจแƒ”แƒ˜แƒฅแƒ›แƒœแƒ แƒ˜แƒ›แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› แƒฐแƒฅแƒแƒœแƒ“แƒ”แƒก แƒ”แƒฅแƒกแƒ™แƒšแƒฃแƒ–แƒ˜แƒฃแƒ แƒ˜ แƒฌแƒ•แƒ“แƒแƒ›แƒ /var/lib/docker-แƒ–แƒ”. แƒกแƒฎแƒ•แƒ แƒแƒ แƒแƒคแƒ”แƒ แƒ˜ แƒแƒ  แƒฃแƒœแƒ“แƒ โ€žแƒจแƒ”แƒ”แƒฎแƒแƒก, แƒ“แƒแƒแƒ แƒขแƒงแƒแƒก แƒแƒœ แƒแƒฌแƒแƒ แƒ›แƒแƒแƒกโ€œ Docker แƒคแƒแƒ˜แƒšแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒ“แƒ”แƒ‘แƒแƒ แƒ”แƒแƒ‘แƒก แƒแƒ› แƒกแƒแƒฅแƒแƒฆแƒแƒšแƒ“แƒ”แƒจแƒ˜.

แƒ แƒแƒขแƒแƒ› แƒแƒ แƒ˜แƒก แƒ”แƒก แƒแƒกแƒ”? แƒ แƒแƒ“แƒ’แƒแƒœ แƒ”แƒก แƒแƒ แƒ˜แƒก แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒงแƒ•แƒ”แƒšแƒแƒ–แƒ” แƒ แƒ—แƒฃแƒšแƒ˜ แƒ’แƒแƒ™แƒ•แƒ”แƒ—แƒ˜แƒšแƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ•แƒ˜แƒกแƒฌแƒแƒ•แƒšแƒ”แƒ— dotCloud-แƒ˜แƒก แƒจแƒ”แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ˜แƒกแƒแƒก. dotCloud แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜แƒก แƒซแƒ แƒแƒ•แƒ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ“แƒ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒ— /var/lib/dotcloud แƒ”แƒ แƒ—แƒ“แƒ แƒแƒฃแƒšแƒแƒ“. แƒ›แƒ–แƒแƒ™แƒ•แƒ แƒฃแƒšแƒ˜ แƒฎแƒ แƒ˜แƒ™แƒ”แƒ‘แƒ˜, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ แƒแƒขแƒแƒ›แƒฃแƒ แƒ˜ แƒคแƒแƒ˜แƒšแƒ˜แƒก แƒฉแƒแƒœแƒแƒชแƒ•แƒšแƒ”แƒ‘แƒ (แƒแƒ“แƒ’แƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒ˜ แƒ แƒ”แƒ“แƒแƒฅแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒชแƒ•แƒšแƒแƒ“), แƒ™แƒแƒ“แƒ˜แƒก แƒแƒ™แƒ แƒ”แƒคแƒ แƒกแƒแƒ™แƒแƒœแƒกแƒฃแƒšแƒขแƒแƒชแƒ˜แƒ แƒ“แƒ แƒกแƒแƒ•แƒแƒšแƒ“แƒ”แƒ‘แƒฃแƒšแƒ แƒกแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜แƒ— แƒ“แƒ แƒกแƒฎแƒ•แƒ แƒ”แƒฅแƒกแƒžแƒ”แƒ แƒ˜แƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜ แƒฃแƒกแƒแƒคแƒ แƒ—แƒฎแƒ แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒ—, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ SQLite แƒ“แƒ BDB, แƒงแƒแƒ•แƒ”แƒšแƒ—แƒ•แƒ˜แƒก แƒแƒ  แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ“แƒ. แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ“แƒ˜แƒ— แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜แƒก แƒซแƒ แƒแƒ•แƒ˜แƒก แƒฎแƒ”แƒšแƒแƒฎแƒšแƒ แƒ“แƒ˜แƒ–แƒแƒ˜แƒœแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒกแƒแƒ‘แƒแƒšแƒแƒแƒ“ แƒ’แƒแƒฎแƒ“แƒ Docker, แƒ”แƒ แƒ—-แƒ”แƒ แƒ—แƒ˜ แƒ“แƒ˜แƒ“แƒ˜ แƒ“แƒ˜แƒ–แƒแƒ˜แƒœแƒ˜แƒก แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ˜แƒšแƒ”แƒ‘แƒ แƒ˜แƒงแƒ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ”แƒ‘แƒ แƒ”แƒ แƒ—แƒ˜ แƒ“แƒ”แƒ›แƒแƒœแƒ˜แƒก แƒฅแƒ•แƒ”แƒจ, แƒ แƒแƒ—แƒ แƒ—แƒแƒ•แƒ˜แƒ“แƒแƒœ แƒแƒ•แƒ˜แƒชแƒ˜แƒšแƒแƒ— แƒงแƒ•แƒ”แƒšแƒ แƒ™แƒแƒœแƒ™แƒฃแƒ แƒ”แƒœแƒขแƒฃแƒšแƒ˜ แƒกแƒ˜แƒกแƒฃแƒšแƒ”แƒšแƒ”.

แƒแƒ แƒแƒกแƒฌแƒแƒ แƒแƒ“ แƒแƒ  แƒ’แƒแƒ›แƒ˜แƒ’แƒแƒ—: แƒกแƒแƒ•แƒกแƒ”แƒ‘แƒ˜แƒ— แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒ แƒแƒ˜แƒ›แƒ” แƒ™แƒแƒ แƒ’แƒ˜, แƒกแƒแƒ˜แƒ›แƒ”แƒ“แƒ แƒ“แƒ แƒกแƒฌแƒ แƒแƒคแƒ˜ แƒ“แƒแƒ›แƒ–แƒแƒ“แƒ”แƒ‘แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒแƒ˜แƒชแƒแƒ•แƒก แƒ›แƒ แƒแƒ•แƒแƒš แƒžแƒ แƒแƒชแƒ”แƒกแƒก แƒ“แƒ แƒ—แƒแƒœแƒแƒ›แƒ”แƒ“แƒ แƒแƒ•แƒ” แƒžแƒแƒ แƒแƒšแƒ”แƒšแƒฃแƒ  แƒ™แƒแƒœแƒขแƒ แƒแƒšแƒก. แƒ›แƒแƒ’แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœ แƒ•แƒคแƒ˜แƒฅแƒ แƒแƒ‘แƒ—, แƒ แƒแƒ› แƒฃแƒคแƒ แƒ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒ“แƒ แƒแƒ“แƒ•แƒ˜แƒšแƒ˜แƒ แƒ™แƒแƒ“แƒ˜แƒก แƒ“แƒแƒฌแƒ”แƒ แƒ แƒ“แƒ แƒจแƒ”แƒœแƒแƒ แƒฉแƒฃแƒœแƒ”แƒ‘แƒ Docker-แƒ˜แƒก, แƒ แƒแƒ’แƒแƒ แƒช แƒ”แƒ แƒ—แƒแƒ“แƒ”แƒ แƒ—แƒ˜ แƒ›แƒแƒ—แƒแƒ›แƒแƒจแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—.

แƒ”แƒก แƒœแƒ˜แƒจแƒœแƒแƒ•แƒก, แƒ แƒแƒ› แƒ—แƒฃ แƒ—แƒฅแƒ•แƒ”แƒœ แƒ˜แƒ–แƒ˜แƒแƒ แƒ”แƒ‘แƒ— /var/lib/docker แƒ“แƒ˜แƒ แƒ”แƒฅแƒขแƒแƒ แƒ˜แƒแƒก แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” Docker แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒแƒก แƒจแƒแƒ แƒ˜แƒก, แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ’แƒ”แƒฅแƒ›แƒœแƒ”แƒ‘แƒแƒ—. แƒ แƒ แƒ—แƒฅแƒ›แƒ แƒฃแƒœแƒ“แƒ, แƒแƒ›แƒแƒœ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ˜แƒ›แƒฃแƒจแƒแƒแƒก, แƒ’แƒแƒœแƒกแƒแƒ™แƒฃแƒ—แƒ แƒ”แƒ‘แƒ˜แƒ— แƒขแƒ”แƒกแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒแƒ“แƒ แƒ”แƒฃแƒš แƒ”แƒขแƒแƒžแƒ”แƒ‘แƒ–แƒ”. โ€แƒ›แƒ˜แƒกแƒ›แƒ˜แƒœแƒ”, แƒ“แƒ”แƒ“แƒ, แƒ›แƒ” แƒจแƒ”แƒ›แƒ˜แƒซแƒšแƒ˜แƒ แƒ’แƒแƒ•แƒฃแƒจแƒ•แƒ ubuntu, แƒ แƒแƒ’แƒแƒ แƒช แƒ“แƒแƒ™แƒ”แƒ แƒ˜!โ€ แƒ›แƒแƒ’แƒ แƒแƒ› แƒกแƒชแƒแƒ“แƒ”แƒ— แƒ แƒแƒฆแƒแƒช แƒฃแƒคแƒ แƒ แƒ แƒ—แƒฃแƒšแƒ˜, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ แƒ”แƒ แƒ—แƒ˜ แƒ“แƒ แƒ˜แƒ’แƒ˜แƒ•แƒ” แƒกแƒฃแƒ แƒแƒ—แƒ˜แƒก แƒแƒ›แƒแƒฆแƒ”แƒ‘แƒ แƒแƒ แƒ˜ แƒ’แƒแƒœแƒกแƒฎแƒ•แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒ˜แƒ“แƒแƒœ แƒ“แƒ แƒ“แƒแƒ˜แƒœแƒแƒฎแƒแƒ•แƒ—, แƒ แƒแƒ› แƒกแƒแƒ›แƒงแƒแƒ แƒ แƒ˜แƒฌแƒ•แƒ˜แƒก.

แƒ”แƒก แƒœแƒ˜แƒจแƒœแƒแƒ•แƒก, แƒ แƒแƒ› แƒ—แƒฃ แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ CI แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒก build-แƒ”แƒ‘แƒก แƒ“แƒ แƒแƒฆแƒแƒ“แƒ’แƒ”แƒœแƒก, แƒงแƒแƒ•แƒ”แƒš แƒฏแƒ”แƒ แƒ–แƒ”, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ—แƒฅแƒ•แƒ”แƒœ แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒแƒ•แƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒก Docker-in-Docker แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒก, แƒ—แƒฅแƒ•แƒ”แƒœ แƒ แƒ˜แƒกแƒ™แƒแƒ•แƒ— แƒ‘แƒ˜แƒ แƒ—แƒ•แƒฃแƒšแƒ˜ แƒ˜แƒแƒ แƒแƒฆแƒ˜แƒก แƒ›แƒ˜แƒก แƒฅแƒ”แƒจแƒ˜ แƒฉแƒแƒ’แƒ“แƒ”แƒ‘แƒแƒก. แƒ”แƒก แƒกแƒฃแƒšแƒแƒช แƒแƒ  แƒแƒ แƒ˜แƒก แƒ›แƒแƒ’แƒแƒ แƒ˜!

แƒ’แƒแƒ“แƒแƒฌแƒงแƒ•แƒ”แƒขแƒ

แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒ“แƒแƒ•แƒ“แƒ’แƒแƒ— แƒœแƒแƒ‘แƒ˜แƒฏแƒ˜ แƒฃแƒ™แƒแƒœ. แƒœแƒแƒ›แƒ“แƒ•แƒ˜แƒšแƒแƒ“ แƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— Docker-in-Docker แƒแƒœ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒ’แƒกแƒฃแƒ แƒ— แƒจแƒ”แƒซแƒšแƒแƒ— Docker-แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ แƒ“แƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ CI แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒ“แƒแƒœ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ แƒกแƒฃแƒ แƒแƒ—แƒ”แƒ‘แƒ˜แƒก แƒแƒจแƒ”แƒœแƒ”แƒ‘แƒ แƒ“แƒ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ แƒ›แƒแƒจแƒ˜แƒœ, แƒ แƒแƒชแƒ แƒ”แƒก CI แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ แƒ—แƒแƒ•แƒแƒ“ แƒแƒ แƒ˜แƒก แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒจแƒ˜?

แƒ“แƒแƒ“แƒ”แƒ‘แƒก, แƒ แƒแƒ› แƒแƒ“แƒแƒ›แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒฃแƒ›แƒ”แƒขแƒ”แƒกแƒแƒ‘แƒแƒก แƒกแƒฃแƒ แƒก แƒ”แƒก แƒฃแƒ™แƒแƒœแƒแƒกแƒ™แƒœแƒ”แƒšแƒ˜ แƒ•แƒแƒ แƒ˜แƒแƒœแƒขแƒ˜, แƒ แƒแƒช แƒ˜แƒ›แƒแƒก แƒœแƒ˜แƒจแƒœแƒแƒ•แƒก, แƒ แƒแƒ› แƒ›แƒแƒ— แƒกแƒฃแƒ แƒ— CI แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ, แƒ แƒแƒ’แƒแƒ แƒ˜แƒชแƒแƒ แƒฏแƒ”แƒœแƒ™แƒ˜แƒœแƒกแƒ˜, แƒ แƒแƒ› แƒจแƒ”แƒซแƒšแƒแƒก แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ. แƒ“แƒ แƒแƒ›แƒ˜แƒก แƒ’แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ˜แƒก แƒฃแƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ”แƒกแƒ˜ แƒ’แƒ–แƒแƒ แƒฃแƒ‘แƒ แƒแƒšแƒแƒ“ แƒฉแƒแƒกแƒ•แƒแƒ— Docker แƒกแƒแƒ™แƒ”แƒขแƒ˜ แƒ—แƒฅแƒ•แƒ”แƒœแƒก CI แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒจแƒ˜ แƒ“แƒ แƒ“แƒแƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒแƒ— แƒ˜แƒ’แƒ˜ -v แƒ“แƒ แƒแƒจแƒแƒกแƒ—แƒแƒœ.

แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒแƒ“ แƒ แƒแƒ› แƒ•แƒ—แƒฅแƒ•แƒแƒ—, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ—แƒฅแƒ•แƒ”แƒœ แƒ›แƒแƒ แƒ—แƒแƒ•แƒ— แƒ—แƒฅแƒ•แƒ”แƒœแƒก CI แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒก (แƒฏแƒ”แƒœแƒ™แƒ˜แƒœแƒกแƒ˜ แƒแƒœ แƒกแƒฎแƒ•แƒ), แƒ˜แƒ›แƒ˜แƒก แƒœแƒแƒชแƒ•แƒšแƒแƒ“, แƒ แƒแƒ› แƒ แƒแƒฆแƒแƒช แƒ’แƒแƒขแƒ”แƒฎแƒแƒ— Docker-in-Docker-แƒ—แƒแƒœ แƒ”แƒ แƒ—แƒแƒ“, แƒ“แƒแƒ˜แƒฌแƒงแƒ”แƒ— แƒ˜แƒ’แƒ˜ แƒฎแƒแƒ–แƒ˜แƒ—:

docker run -v /var/run/docker.sock:/var/run/docker.sock ...

แƒแƒ› แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒก แƒแƒฎแƒšแƒ แƒ”แƒฅแƒœแƒ”แƒ‘แƒ แƒฌแƒ•แƒ“แƒแƒ›แƒ Docker แƒกแƒแƒ™แƒ”แƒขแƒ–แƒ” แƒ“แƒ, แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒแƒ“, แƒจแƒ”แƒซแƒšแƒ”แƒ‘แƒก แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒแƒก. แƒ’แƒแƒ แƒ“แƒ แƒ˜แƒ›แƒ˜แƒกแƒ, แƒ แƒแƒ› โ€žแƒ‘แƒแƒ•แƒจแƒ•แƒ˜แƒกโ€œ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒชแƒ•แƒšแƒแƒ“, แƒ˜แƒก โ€žแƒ“แƒ-แƒซแƒ›แƒ˜แƒกโ€œ แƒ™แƒแƒœแƒขแƒ”แƒ˜แƒœแƒ”แƒ แƒ”แƒ‘แƒก แƒ’แƒแƒฃแƒจแƒ•แƒ”แƒ‘แƒก.

แƒกแƒชแƒแƒ“แƒ”แƒ— แƒ”แƒก แƒ“แƒแƒ™แƒ”แƒ แƒ˜แƒก แƒแƒคแƒ˜แƒชแƒ˜แƒแƒšแƒฃแƒ แƒ˜ แƒกแƒฃแƒ แƒแƒ—แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— (แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก Docker แƒแƒ แƒแƒ‘แƒ˜แƒ—แƒแƒ‘แƒแƒก):

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-แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—.

แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ แƒ”แƒ™แƒšแƒแƒ›แƒ ๐Ÿ™‚

แƒ’แƒ›แƒแƒ“แƒšแƒแƒ‘แƒ—, แƒ แƒแƒ› แƒ“แƒแƒ แƒฉแƒ˜แƒ— แƒฉแƒ•แƒ”แƒœแƒ—แƒแƒœ. แƒ›แƒแƒ’แƒฌแƒแƒœแƒ— แƒฉแƒ•แƒ”แƒœแƒ˜ แƒกแƒขแƒแƒขแƒ˜แƒ”แƒ‘แƒ˜? แƒ’แƒกแƒฃแƒ แƒ— แƒœแƒแƒฎแƒแƒ— แƒฃแƒคแƒ แƒ แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒ แƒจแƒ˜แƒœแƒแƒแƒ แƒกแƒ˜? แƒ›แƒฎแƒแƒ แƒ˜ แƒ“แƒแƒ’แƒ•แƒ˜แƒญแƒ˜แƒ แƒ”แƒ— แƒจแƒ”แƒ™แƒ•แƒ”แƒ—แƒ˜แƒก แƒ’แƒแƒœแƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒ˜แƒ— แƒแƒœ แƒ›แƒ”แƒ’แƒแƒ‘แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ แƒ”แƒ™แƒแƒ›แƒ”แƒœแƒ“แƒแƒชแƒ˜แƒ˜แƒ—, แƒฆแƒ แƒฃแƒ‘แƒ”แƒšแƒ˜ VPS แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก 4.99 แƒ“แƒแƒšแƒแƒ แƒ˜แƒ“แƒแƒœ, แƒกแƒแƒฌแƒงแƒ˜แƒกแƒ˜ แƒ“แƒแƒœแƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒฃแƒœแƒ˜แƒ™แƒแƒšแƒฃแƒ แƒ˜ แƒแƒœแƒแƒšแƒแƒ’แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฉแƒ•แƒ”แƒœ แƒ›แƒ˜แƒ”แƒ  แƒ’แƒแƒ›แƒแƒ’แƒแƒœแƒ˜แƒšแƒ˜แƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒ—แƒ•แƒ˜แƒก: แƒ›แƒ—แƒ”แƒšแƒ˜ แƒกแƒ˜แƒ›แƒแƒ แƒ—แƒšแƒ” VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps 19$-แƒ“แƒแƒœ แƒแƒœ แƒ แƒแƒ’แƒแƒ  แƒ’แƒแƒ•แƒแƒ–แƒ˜แƒแƒ แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜? (แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒ RAID1 แƒ“แƒ RAID10-แƒ˜แƒ—, 24 แƒ‘แƒ˜แƒ แƒ—แƒ•แƒแƒ›แƒ“แƒ” แƒ“แƒ 40 แƒ’แƒ‘-แƒ›แƒ“แƒ” DDR4).

Dell R730xd 2-แƒฏแƒ”แƒ  แƒ˜แƒแƒคแƒ˜แƒ Equinix Tier IV แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒชแƒ”แƒœแƒขแƒ แƒจแƒ˜ แƒแƒ›แƒกแƒขแƒ”แƒ แƒ“แƒแƒ›แƒจแƒ˜? แฒ›แƒฎแƒแƒšแƒแƒ“ แƒแƒฅ 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 แƒขแƒ”แƒšแƒ”แƒ•แƒ˜แƒ–แƒแƒ แƒ˜ $199-แƒ“แƒแƒœ แƒœแƒ˜แƒ“แƒ”แƒ แƒšแƒแƒœแƒ“แƒ”แƒ‘แƒจแƒ˜! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - $99-แƒ“แƒแƒœ! แฒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒ แƒ แƒแƒฆแƒแƒชแƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒ แƒแƒ’แƒแƒ  แƒแƒ•แƒแƒจแƒ”แƒœแƒแƒ— แƒ˜แƒœแƒคแƒ แƒแƒกแƒขแƒ แƒฃแƒฅแƒขแƒฃแƒ แƒ˜แƒก แƒ™แƒแƒ แƒžแƒฃแƒกแƒ˜. แƒ™แƒšแƒแƒกแƒ˜ Dell R730xd E5-2650 v4 แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— 9000 แƒ”แƒ•แƒ แƒแƒก แƒฆแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒžแƒ”แƒœแƒ˜?

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ