Docker
Страницата е създадена на: 5 юни 2021 и редактирана на:15 февруари 2022
Docker(колекция връзки), Play with Docker Classroom
Важни понятия
В Docker overview | Docker Documentation е посочено: "Docker е отворена платформа за разработване, доставка и изпълняване на приложения."
Чрез Docker разработеното приложение се доставя в т.наречен контейнер. Контейнерите са леки и съдържат всичко необходимо за стартиране на приложението. Контейнерите са изолирани и в един хост може да се изпълняват различни контейнери.
Image или образ е готов шаблон от който се създава контейнер. Образът съдържа изолирана файлове система, в която се налични необходимите изпълними, конфигурационни, библиотечни и др. файлове.
Контейнерът е изпълняван екземпляр на даден образ. Контейнери могат да се създават, стартират, спират, преместват или изтриват посредством програмен (API) или команден (CLI) интерфейс.
Docker daemon е софтуерът, който функционира на заден план върху машината хост и осигурява възможностите за инсталиране, обновяване и премахване на контейнери, стартиране и спиране на приложения, доставени в контейнерите.
Docker registry е хранилище за съхраняване на контейнери с цел тяхното разпространяване. Глобално, използвано от Docker по подразбиране хранилище е Docker Hub.
Docker client - команден интерфейс използван от разработчиците, разчитащи на Doker. Чрез него се осъществява връзка с Docker daemon и се осъществява ползването на Docker.
Docker Desktop - софтуерен пакет, който се инсталира на локалния компютър на разработчика с операционна система Windows, macOS или Linux и му осигурява необходимата среда за създаване и разпространяване на приложения с Docker. Включва: Docker Engine, Docker CLI client, Docker Compose, Docker Content Trust, Kubernetes, и Credential Helper.
Dockerfile - текстов файл, съдържащ команди, които последователно се изпълняват с цел създаване на контейнер. (Dockerfile reference | Docker Documentation).
Томове (Volumes) - директории от файловата система в машината на разработчика, които при стартиране на контейнер се монтират и във файловата система на контейнера. Така направени от контейнера промени в тези директории се запазват в машината на разработчика.
Командите RUN, COPY и ADD от Dockerfile създават различни нива (Docker Layers), като променят размера на създавания образ. Други команди създават междинни нива, които не се отразяват на големината на образа.
Инсталиране на Docker Desktop в macOS
От страница Install Docker Desktop on Mac | Docker Documentation се избира съответната версия според процесора на компютъра: Intel или Apple. Изтегленият файл е .dmg
архив, който съдържа програмен пакет Docker.app. По обичайния за Mac начин инсталирането се свежда до влачене и пускане на Docker.app
в директория /Applications
. При ограничено място на вътрешния диск, вместо в директория /Applications
, инсталирането може да се направи и върху външен диск.
Инсталиране върху външен диск може да стане и с команда:
brew install --cask docker --appdir=/Volumes/External_disk/Applications
в която External_disk
е името на външния диск, на който има създадена директория Applications
, предназначена за инсталиране на приложения.
Docker Desktop съхранява създаваните контейнери в голям файл ~/Library/Containers/com.docker.docker/Data/vms/0/data/Docker.raw
. С цел спестяване на място този файл може да се премести върху външен диск, а файлът във вътрешния диск да се замени със символична връзка.
Деинсталиране
Стартира се приложението Docker. Икона за опции се показва върху заглавната лента. Щраква се върху иконата и се избира Preferences. В прозореца на приложението се щраква бутона с изображение на буболечка (Troubleshoot). В новия прозорец се щраква бутон с надпис Uninstall. (How to easily install and uninstall docker on MacOs - Stack Overflow)
Ако инсталирането е извършено с команда brew install --cask docker
, деинсталирането се извършва с:
brew uninstall --cask docker
Създаване на първо примерно приложение-учебник
Веднага след първото стартиране на Docker, може да се изпълни, както се предлага в неговия прозорец, команда от терминал:
docker run -d -p 80:80 docker/getting-started
Командата изтегля необходимото и стартира приложение, което се появява в главния прозорец на Docker Desktop и може да се отвори през браузър на адрес http://localhost
Това приложение представлява учебник за Docker. В него се описва:
- създаване на контейнер, предназначен за друго примерно Node.js приложение с използване Dockerfile;
- стартиране на контейнера и изпробване на приложението;
- извършване на промяна, преизграждане на контейнер, опит за стартиране;
- спиране и изтриване на контейнер, ново стартиране, забелязване на промяната;
- създаване на хранилище за контейнери в hub.docker.com;
- качване на контейнер с приложение в hub.docker.com;
- изпробване на качения контейнер в Play with Docker;
- използване на именуван том (named volume) за споделяне на данни между контейнери;
- ...
Често използвани команди
Информация за всички команди - в Use the Docker command line | Docker Documentation.
docker build -t имеНаОбраз . - създаване на образ по команди от Dockerfile, намиращ се в текущата директория.
docker container ls - показване на списък на изпълняваните в момента контейнери.
docker container ls -a - показване на списък на всички изпълнени контейнери.
docker container run имеНаОбраз пътДоПриложение - създаване и стартиране на контейнер от даден образ и на приложение, което се съдържа в образа. След завършване изпълнението на приложението, контейнерът се затваря.
docker container run -it имеНаОбраз пътДоПриложение - опция -it оставя приложението да се изпълнява в интерактивен режим.
docker container start
docker container exec
docker container diff
docker container commit
docker image ls - показване списък на наличните образи.
docker image pull имеНаОбраз - изтегляне на образ от hub.docker.com.
docker ps - показване списък на стартираните контейнери.
docker run [опции] образ [команда] - изпълняване на команда в нов контейнер.
Предишна страница: Django
Следваща страница: JDK - Java Development Kit