Тъй като мощният хардуер стана все повече и повече от стока, способността да се изпълняват няколко виртуални машини на едно парче хардуер се превърна в индустриална норма. От уеб хостинг до изчислителни облаци, много услуги се изпълняват на виртуализирани среди. Освен решения за виртуализация на настолни компютри като VirtualBox, има и бързи решения за предоставяне на услуги като Vagrant. Проблемът с виртуалната машина е, че трябва да емулира всеки аспект на компютъра за гости, включително цялата RAM на системата, която ще бъде разпределена изключително към виртуалната машина. В резултат на това виртуализацията може да бъде източник на глад.

В другия край на спектъра има среда "chroot", която променя основната коренна директория за процес, така че да работи в собствената си среда и няма достъп до други файлове на хост операционната система. Въпреки това, няма никаква виртуализация, просто друго дърво на директориите.

Средната точка между тези две системи е контейнер. Контейнерите предлагат много от предимствата на виртуализираната машина, но без високите ресурси. Контейнерите са по-функционални от средите на chroot, тъй като има известна виртуализация. Например, процесите, създадени в контейнер, са присвоени ID (PID) отделно от тези в хост операционната система. От техническа гледна точка контейнерът има свое собствено PID пространство на имена. Всъщност, контейнерите имат свое собствено пространство за имена за подсистемата за работа в мрежа и за комуникацията между InterProcess (IPC). Това означава, че контейнерът може да изпълнява мрежови услуги, като SSH сървър или уеб сървър.

От външната страна контейнерът изглежда като виртуална машина със свой собствен IP адрес и собствени мрежови услуги, но отвътре контейнерът използва много повече от операционната система на хост, отколкото виртуална машина, по-скоро среда като "chroot". Например можете да използвате контейнер CentOS, който се изпълнява на хост на Ubuntu. Командите и файловете са от CentOS, но ако попитате кой контейнер е ядрото, той ще съобщи, че работи с ядрото на Ubuntu, защото контейнерът работи на ядрото от хост операционната система.

Docker е рамка за виртуализация, базирана на контейнери, която ви позволява да създавате контейнери, съдържащи всички зависимости за дадено приложение. Всеки контейнер се държи изолиран от всеки друг и нищо не се споделя.

За да инсталирате Docker на 64-битова Ubuntu 14.04 система, изпълнете следните команди:

 sudo apt-get актуализация sudo apt-get инсталирате docker.io sudo ln -sf /usr/bin/docker.io/ usr / local / bin / docker 

Съществува съществуващ Ubuntu пакет, наречен докер, който е системна тава за KDE3 / GNOME2. За да избегнете объркване, времето за изпълнение на контейнера се нарича docker.io . Последната команда създава връзка от "/ usr / local / bin / docker" до "/usr/bin/docker.io", която позволява командата docker от командния ред, а не от docker.io.

Забележка : Docker.io е достъпен и за други дистрибуции. Ето инструкциите за инсталиране, ако не използвате Ubuntu.

За да изпълните черупка в контейнера, изпълнете:

 sudo докер работи-i-t ubuntu / bin / bash 

Знакът " -i " прави сесията интерактивна, а флага " -t " казва на докера да подражава на сесия на терминал. Параметърът "ubuntu" казва на докера да пусне контейнер на базата на Ubuntu 14.04 и "/ bin / bash" е командата, която трябва да се изпълни след като контейнерът е нагоре, т.е.

Когато стартира докер, той проверява дали преди това е изтеглен желаният файл с базово изображение. Ако не е така, той ще изтегли изображението от index.docker.io, което също е сайтът, който да се използва, за да видите кои изображения официално се поддържат от докер.

За да изтеглите други изображения, без да стартирате контейнер, използвайте командата " docker pull ". Например, за да изтеглите основното изображение на CentOS, използвайте:

 sudo докер издърпайте центо 

Можете също да изпълнявате единични команди в контейнер и след това да излезете от контейнера. Използвайте следната команда, за да изпълните командата " ps aux " в контейнера CentOS:

 sudo докер стартира centos ps aux 

Когато контейнера се изключи, всички промени се загубват. Предимството на този подход е, че когато контейнерът започне, той е в известно състояние. Това е от съществено значение за тестовите среди и за изграждането на услуги и т.н. Важно е също така и при работа с облачни услуги, тъй като контейнерът може бързо да бъде нулиран и рестартиран в стабилно състояние.

Това обаче означава, че всяка извършена конфигурация или създадените в контейнера файлове ще бъдат загубени. Решението е да създадете ново изображение с всичките си промени. Изпробвайте следните команди:

 sudo докер стартиране на ubuntu apt-get инсталирате-y nmap sudo docker ps -l 

Първата команда ще стартира контейнер и ще инсталира nmap. Втората команда ще изброи последния (-l) създаден контейнер, дори и да не работи.

Вече можете да създадете моментна снимка на този контейнер и да го запазите в ново изображение:

 sudo докер се ангажира с 1b498c2d502c ubuntu-with-nmap 

"1b498c2d502c" е идентификационният номер на контейнера, посочен от командата " docker ps -l ". Сега, ако стартирате черупката за контейнера ubuntu-with-nmap, ще има предварително инсталирана командата nmap.

 sudo докер работи-i-t ubuntu-с-nmap / bin / bash 

Има много информация за докера в документацията на docker.io и има и няколко примерни настройки, включително как да изпълнявате обичайни задачи като пускане на уеб приложение на Python и стартиране на услуга SSH.

Ако имате някакви въпроси относно докера, има силна общност на докери, която трябва да може да ви помогне. Можете също да задавате въпроси в секцията за коментари по-долу и ще видим дали можем да помогнем.