ืืื ืืชื ืืืืข ืื ืืชื ืฆืจืื Docker ืืื VM? ืืชื ืฆืจืื ืืงืืืข ืื ืืืืืง ืืชื ืจืืฆื ืืืืื. ืื ืืชื ืจืืฆื ืืืืื ืืขืจืืช ืขื ืืฉืืืื ืืืขืืืืื ืืืืืืื ืืืืืจื ืืืจืืืืืืช, ืืืืืจื ืฆืจืืื ืืืืืช VM. ืื ืืชื ืฆืจืื ืืืืื ืืืฉืืืื ืคืืขืืื ืืชืืืืื ืืขืจืืช ื ืคืจืืื, ืชืฆืืจื Docker.
ืื ืื ืืืืื ืืื ืืืืืืช Docker ื-VMs?
ืืืื ื ืืืจืืืืืืช (VM) ืืื ืืืฉื ืืืจืืืืื ืขื ืื ืืืืฉืืจืื ืืืืืจืืืืืืื ืืืืกืง ืงืฉืื ืืืจืืืืื ืขืืื ืืืชืงื ืช ืืขืจืืช ืืคืขืื ืขืฆืืืืช ืืืฉื ืืื ืขื ืื ืืื ืืชืงื ืื ืืืจืืืืืืื, ื ืืืื ืืืืจืื ืืจืืืืื ื ืืกืคืื. ืืืืืจ, ืื ื ืืงืืืื ืืคืฉืื ืฉื โโืืืืจื ืคืืืืช ืืืืคืฉืจืช ืื ื ืืืคืขืื ืืืฉืืื ืืืจืืืืืืื ืจืืื ืขื ืืืฉื ืืื.
VM ืืืชืงื ืืืื ืืชืคืืก ืืงืื ืืืืกืง ืฉื ืืืืฉื ืฉืื ืืืจืืื ืฉืื ืืช:
- ืฉืื ืืืกืง ืงืฉืื ืงืืืข, ืืืืคืฉืจ ืืืฉื ืืืืจื ืืืชืจ ืืืืกืง ืืงืฉืื ืืืืจืืืืื ืืืื ืข ืคืืฆืื ืงืืฆืื;
- ืืงืฆืืช ืืืืจืื ืืื ืืืช. ืืขืช ืืชืงื ืช ืืืฉืืืื ื ืืกืคืื, ืืืืืจืื ืืืงืฆื ืขืืืจื ืืืืคื ืืื ืื ืขื ืฉืืืืข ืืืืืช ืืืงืกืืืืืช ืฉืืืงืฆื ืื.
ืืื ืฉืืืชืจ ืืืื ืืช ืืืจืืืืืืืช ืืฉืจืช, ืื ืื ืชืืคืกืืช ืืืชืจ ืืงืื, ืืื ืืืจืฉืืช ืชืืืื ืืชืืืช ืืกืืืื ืื ืืจืฉืช ืืืคืขืืช ืืืคืืืงืฆืื ืฉืื.
ืกึทืึธืจ ืืื ืชืืื ื ืืืฆืืจืช ืืืฉืืืื ืืืืกืกื ืงืื ืืืื ืจ. ืืืืืืืช ืืืืืื ืืช ืืืจืืืืืืืช ืืฉ ืืชืจืื ืืช ืืืืื, ืื ืคืืขืืื ืืืจืช. ืืืืืื ืชืืคืกืื ืคืืืช ืืงืื ืื... ืืขืฉืืช ืฉืืืืฉ ืืืืจ ืืืชืจ ืืืฉืืืื ืืฉืืชืคืื ืฉื ืืืขืจืืช ืืืืจืืช ืืืฉืจ ื-VM, ืืืืืื ืื ืืืื ื-VM, ืืื ืืกืคืง ืืืจืืืืืืืฆืื ืืจืืช ืืขืจืืช ืืืคืขืื, ืื ืืจืืช ืืืืืจื. ืืืฉื ืื ืืืืื ืืืืืขืช ืืืืจืื ื ืืืื ืืืชืจ, ืืคืจืืกื ืืืืจื ืืืชืจ ืืืฉืื ืื ืงื ื ืืืื ืงื ืืืชืจ.
ืืงืื ืืืื ืจ ืืกืคืง ืื ืื ืื ืืขืื ืืืชืจ ืืืงืืืช ืืืฉืืืื ืขื ืืื ืืกืคืงืช ืืืืฉืงืื ืืืจืืฉืื ืืืขืจืืช ืืืืจืืช. ืชืืื ื ืื ืืืคืฉืจืช ืืงืื ืืืื ืจืื ืืฉืชืฃ ืืช ืืืืช ืืืขืจืืช, ืืืฉืจ ืื ืงืื ืืืื ืจ ืคืืขื ืืชืืืื ื ืคืจื ืฉื ืืขืจืืช ืืคืขืื ืืืจื ืฉืืฉ ืื ืงืืืฆื ืืฉืื ืฉื ืืืืจื ืืืืจืื (ืืจืื ืืชืืืืช ืืืจืืืืื ืืฉืื). ืืืืืื ืฉืืจืื ืืืชืืืืช ืืืืืจืืืืื ืฉื ืื ืืืื ืืื ืฉืื, ืื ื ืืชื ืืฉื ืืช ื ืชืื ืื ืืฉืืืืื ืืืืืจื ืืืืจืื ืฉืื ืื.
ืืขืจืืช ืืืคืขืื ืืืงืืจืืช ืฉื Docker ืืื ืืื ืืงืก (ืืคืฉืจ ืืืฉืชืืฉ ื-Docker ืื ื-Windows ืื-MacOS), ืืื ืืฉืชืืฉืช ืืืชืจืื ืืช ืืขืืงืจืืื ืฉืื, ืืืืคืฉืจืื ืื ืืืจืื ืืช ืืคืจืืช ืืืืื. ืืคืขืืช ืงืื ืืืื ืจืื ืฉื Docker ื-Windows ืชืชืืฆืข ืืชืื ืืืื ื ืืืจืืืืืืช ืืืจืืฅ ืืขืจืืช ืืคืขืื ืืื ืืงืก, ืืืืืื ืงืื ืืืื ืจืื ืืืืงืื ืืช ืืขืจืืช ืืืคืขืื ืฉื ืืืขืจืืช ืืืืจืืช ืืืขืจืืช ืืืคืขืื ืืขืืงืจืืช ืขืืืจื ืืื ืืื ืืงืก.
ืืืื - ืืื ืื ืขืืื?
ืืืืื ืืื ืืคืฉืื ืืจืืช ืืืืฉืื ืืืฉืืืช ืงืื ืืชืืืช. ืงืื ืืืื ืจืื ื ืืฆืจืื ืชืืื ืืชืืื ืืช, ืืืกืคืช ืฉืืื ืขืืืื ื ื ืืชื ืช ืืืชืืื ืืืชืืื ืคืจืืืจืื ืฉืื ืื. ืืืืืื ืฉืืืืืื ืืฉ ืฉืืืช ืืชืืื ืืฉืื ืืื ืืฉืื ืืืื ืืืืืกื ืื ืืฉืืื ืื, ืงืื ืืืื ืจ ืืจืืืื ืืืืืื ืืฉืชืฃ ืืืฉื ืืืืชื ืชืืื ืช ืืืกืืจ.
ื ืืชื ืืืืืืจ ืื ืงืื ืืืื ืจ ืืจื ืงืืืฅ ืืคืจืืืงื docker-compose ืืืืื ืืคืชืจืื ืืจืืฉื - docker-compose.yml. ืฉื ืืชื ืืืื ืืืืืืจ ืคืจืืืจืื ืฉืื ืื ืืืื ืฉื ืงืื ืืืื ืจ, ืืฆืืืืช, ืืืืื, ืืืืืืช ืืฉืืืื, ืชืืืช ืืื ืงืื ืืืื ืจืื ืืืจืื. ืื ืื ืชืฆืืื ืฉื ืงืื ืืืื ืจ ืืืืืจืืช, Docker ืชืืฆืืจ ืงืื ืืืื ืจ ืืืฉ ืืื ืคืขื, ืืืขื ืืง ืื ืฉื ืืืืคื ืืงืจืื.
ืืืฉืจ ืืืื ืืืคืขื ืืชืืื ื, Docker ืืขืื ืืขืจืืช ืงืืฆืื ืืงืจืืื-ืืชืืื ืขื ืืื ืื ืืฉืืืืช ืฉืืชืืช. ืื ืืืงืื ืฉืื ืืคืขืื ืื ืืชืืืืืื ืฉืื ื ืจืืฆืื ืฉื-Docker ืฉืื ื ืืคืขืื.
ืืืฉืจ Docker ืืชืืื ืืจืืฉืื ื ืืืื, ืฉืืืช ืืงืจืืื-ืืชืืื ืืจืืฉืื ืืช ืจืืงื. ืืืฉืจ ืืชืจืืฉืื ืฉืื ืืืื, ืื ืืืืืื ืขื ืฉืืื ืื; ืืืืืื, ืื ืืจืฆืื ื ืืฉื ืืช ืงืืืฅ, ืืงืืืฅ ืืื ืืืขืชืง ืืืฉืืื ืืงืจืืื ืืืื ืืืื ืืฉืืืช ืืงืจืืื-ืืชืืื.
ืืืจืกื ืืงืจืืื ืืืื ืฉื ืืงืืืฅ ืขืืืื ืงืืืืช, ืื ืืขืช ืืื ืืืกืชืจืช ืืชืืช ืืขืืชืง. ื ืคืืื ืืฉืืฉืื ืืืืกืื ื ืชืื ืื, ืืื ืงืฉืจ ืืืืืืจ ืืืืื ืฉื ืืืืื. ื ืคืืื ืืืชืืืื ืืืฉืจ ืืืืื ื ืืฆืจ.
ืืื ืืชืืื ื ืงืฉืืจื ืืืืื?
ืชืืื ื - ืืืจืืื ืืขืืงืจื ืขืืืจ ืื ืืืื. ืืชืืื ื ื ืืฆืจืช ืืชืื Dockerfile ืฉื ืืกืฃ ืืคืจืืืงื ืืืื ืงืืืฆื ืฉื ืืขืจืืืช ืงืืฆืื (ืฉืืืืช) ืฉืืืืช ืื ืขื ืืื ืื ืืืงืืืฆืืช ืืื, ืืงืจืืื ืืืื; ืืืกืคืจ ืืืจืื ืฉื ืฉืืืืช ืืื 127.
ืืืืื ืฉื ืื ืชืืื ื ื ืืฆืืช ืชืืื ืช ืืกืืก, ืืืฆืืื ืช ืืคืงืืืช FROM - ื ืงืืืช ืืื ืืกื ืืขืช ืื ืืืช ืชืืื ืช Dockerfile. ืื ืฉืืื ืืื ืฉืืื ืืงืจืืื ืืืื ืืืืืฆืืช ืขื ืืื ืคืงืืื ืืืืื ืฉืืฉื ื ืืช ืืขืจืืช ืืงืืฆืื, ืืืชืืื ื-Dockerfile.
ืืื ืืฉืื ืืช ืืฉืืืืช ืืืื ืืชืืื ื ืืืช, Docker ืืฉืชืืฉ ืืืขืจืืช ืืงืืฆืื ืืืชืงืืืช ืืจืืื ืฉืืืืช ืฉื Union (AuFS ืื ืืื ืขื ืืื UnionFS), ืืืืคืฉืจืช ืฉืืื ืฉืงืืคื ืฉื ืงืืฆืื ืืกืคืจืืืช ืฉืื ืืช ืืฉืืืืช ืงืืฆืื ืฉืื ืืช, ืืืืฆืจืช ืืขืจืืช ืงืืฆืื ืืืืืฉืช.
ืฉืืืืช ืืืืืืช ืืื ื ืชืื ืื ืืืืคืฉืจืื ืื ืืืืกื ืืืืข ืงืฉืืจ ืขื ืื ืฉืืื ืืืืื ืืื ืืจืืฆื ืืืื ืืื ืืื. ืื ืฉืืื ืืืืื ืงืืฉืืจ ืืฉืืื ืืืื; ืื ืืฉืืื ืืื ืงืืฉืืจ, ืืื ืืฉืืื ืืขืืืื ื ืืืืชืจ ืืชืืื ื.
ื-Dockerfile ืขืฉืื ืืืืื ืคืงืืืืช ืืืื:
- FROM - ื ืงืืืช ืื ืืกื ืืขืช ืืฆืืจืช ืชืืื ื;
- MAINTAINER - ืฉื ืืขื ืืชืืื ื;
- RUN - ืืืฆืืข ืคืงืืื ืืืืื ืืจืืืช ืชืืื ื;
- ADD - ืืขืชืงืช ืงืืืฅ ืืืืจื ืืชืืื ื ืืืฉื; ืื ืชืฆืืื ืืช ืืชืืืช ื-URL ืฉื ืืงืืืฅ, Docker ืืืจืื ืืืชื ืืกืคืจืืื ืฉืฆืืื ื;
- ENV - ืืฉืชื ื ืกืืืื;
- CMD - ืืชืืื ืืฆืืจืช ืืืื ืืืฉ ืืืืืกืก ืขื ืืชืืื ื;
- ENTRYPOINT - ืืคืงืืื ืืืืฆืขืช ืืืฉืจ ืืืืื ืืชืืื.
- WORKDIR ืืื ืกืคืจืืืช ืืขืืืื ืืืืฆืืข ืคืงืืืช CMD.
- USER - ืืืืืจ ืืช ื-UID ืขืืืจ ืืืืื ืฉื ืืฆืจ ืขื ืกืื ืืชืืื ื.
- VOLUME - ืืขืื ืืช ืกืคืจืืืช ืืืืจื ืืชืื ืืงืื ืืืื ืจ.
- EXPOSE ืืื ืงืืืฆื ืฉื ืืฆืืืืช ืฉืืืืื ื ืืื ืืืืื.
ืืื UnionFS ืขืืื?
UnionFS - ืืขืจืืช ืงืืฆืื ืืืกื ืืช ืฉืืจืืช (FS) ืขืืืจ ืืื ืืงืก ื- FreeBSD. FS ืื ืืืืฉื ืื ืื ืื ืืขืชืง-ืขื-ืืชืืื (Copy-On-Write, COW). ืืืืืช ืืขืืืื ืฉื UnionFS ืืื ืฉืืื; ืื ืฉืืื ืฆืจืืื ืืืืืฉื ืืืขืจืืช ืงืืฆืื ื ืคืจืืช ืืืื ืขื ืืืจืจืืื ืฉื ืกืคืจืืืช ืืืฉืืจืฉ ืขืฆืื. UnionFS ืืืฆืจ ืืืืื mount ืขืืืจ ืืขืจืืืช ืงืืฆืื ืืืจืืช ืืืืคืฉืจ ืืฉืื ืงืืฆืื ืืกืคืจืืืช ืืืขืจืืืช ืงืืฆืื ืฉืื ืืช (ืื ืงืจืืืช forks) ืืืขืจืืช ืงืืฆืื ืงืืืจื ืืืช ืืืช, ืืฉืงืืคืืช ืืืฉืชืืฉ.
ืืชืืื ืฉื ืกืคืจืืืช ืขื ืืืชื ื ืชืืืื ืืืคืืข ืืื ืืกืคืจืื ืืืืืืช ืืืช (ืืืจืื ืฉืืืช ืืืื) ืฉื ืืขืจืืช ืืงืืฆืื ืืืชืงืืืช.
UnionFS ืืฉืื ืฉืืืืช ืืืืืกืกืืช ืขื ืืขืงืจืื ืืช ืืืืื:
- ืืืช ืืฉืืืืช ืืืคืืช ืืฉืืื ืืจืื ืืขืืืื ื, ืืฉืืื ืืฉื ืืื ืืืฉืืืืช ืืืืืช ืืืคืืืช ืืฉืืืืช ืืจืื ืืชืืชืื ื;
- ืืืืืืงืื ืฉืืื ืืืื ืื ืืืฉืชืืฉ "ืืืืขืื ืืืื", ืืืืืจ. ืื ืืืืืืืงื ืืืืืงืฉ ื ืืฆื ืืฉืืื "ืืขืืืื ื", ืืื ืืืืืจ, ืืื ืงืฉืจ ืื ืืืืืช ืฉื ืืืืืืงื ืืขื ืฉื ืืื ืืฉืืื ื"ืชืืชืื ื"; ืืืจืช ืืืืืจ ืืืืืืืงื ืฉื ืืฉืืื ื"ืชืืชืื ื"; ืื ืืืืืืืงื ืืืืืงืฉ ืื ืฉื ืืื ืฉื, ืืฉืืืื "ืืื ืงืืืฅ ืื ืกืคืจืืื ืืืื" ืืืืืจืช;
- ืฉืืืช ืืขืืืื ืืื "ืืขืืืื", ืืืืืจ, ืื ืคืขืืืืช ืืืฉืชืืฉ ืืฉืื ืื ื ืชืื ืื ืืฉืชืงืคืืช ืจืง ืืฉืืื ืืจืื ืืขืืืื ื, ืืืื ืืืฉืคืืข ืขื ืืชืืื ืฉื ืืฉืืืืช ืฉื ืืจืืืช ืื ืืืืืช.
Docker ืืื ืืืื ืืืืืื ืื ืคืืฆื ืืืืชืจ ืืฉืืืืฉ ืืงืื ืืืื ืจืื ืืืคืขืืช ืืืฉืืืื. ืื ืืคื ืืกืื ืืจื ืืชืืื, ืชืื ืืชืืกืกืืช ืขื cgroups ืืืจืืื ืืฉืืืช ืฉืืกืคืงืื ืืืืช ืืื ืืงืก.
Docker ืืืคืฉืจ ืื ื ืืคืจืืก ืืืฉืืืื ืืืืืจืืช ืืื ืฆื ืืช ืืขืจืืช ืืงืืฆืื ืืฆืืจื ืืืืื ืืืืชืจ ืขื ืืื ืคืืฆืื ืืืืช ืืขืจืืช ืืืคืขืื ืืื ืื ืืงืื ืืืื ืจืื, ืืคืืขืืื ืืชืืืืื ืืขืจืืช ืืคืขืื ื ืคืจืืื.
ืืงืืจ: www.habr.com