Docker
Страницата е създадена на: 5 юни 2021 и редактирана на: 9 декември 2022
Docker(колекция връзки), Play with Docker Classroom
Важни понятия
В Docker Documentation - Guides : Docker overview е посочено: "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).
Томове (Volumes) - директории от файловата система в машината на разработчика, които при стартиране на контейнер се монтират и във файловата система на контейнера. Така направени от контейнера промени в тези директории се запазват в машината на разработчика.
Командите RUN, COPY и ADD от Dockerfile създават различни нива (Docker Layers), като променят размера на създавания образ. Други команди създават междинни нива, които не се отразяват на големината на образа.
Инсталиране на Docker Desktop в macOS
От страница Docker Documentation - Manuals : Install Docker Desktop on Mac се избира съответната версия според процесора на компютъра: Intel или Apple. Изтегленият файл е .dmg
архив, който съдържа програмен пакет Docker.app. По обичайния за Mac начин инсталирането се свежда до влачене и пускане на Docker.app
в директория /Applications
. При ограничено място на вътрешния диск, вместо в директория /Applications
, Docker.app може да се постави и върху външен диск.
Инсталиране върху външен диск може да стане и с команда:
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
. (През Finder директория: ~/Library/Containers/com.docker.docker
може да се вижда като ~/Library/Containers/Docker
.) С цел спестяване на място този файл може да се премести върху външен диск (Docker Documentation - Manuals : Frequently asked questions for Mac - what-if-the-file-is-too-big).
Деинсталиране
Стартира се приложението Docker. Щраква се върху бутона 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. В него се описва:
- създаване на образ (с команда docker build), предназначен за друго примерно Node.js приложение с използване Dockerfile;
- стартиране на контейнер (с команда docker run) от създадения образ и изпробване на приложението;
- извършване на промяна, преизграждане на контейнер, опит за стартиране;
- спиране и изтриване на контейнер, ново стартиране, забелязване на промяната;
- създаване на хранилище за контейнери в hub.docker.com;
- качване на контейнер с приложение в hub.docker.com;
- изпробване на качения контейнер в Play with Docker;
- използване на именуван том (named volume) за споделяне на данни между контейнери;
- ...
Често използвани команди
Информация за всички команди - в Docker Documentation - Reference : Use the Docker command line.
docker build -t имеНаОбраз . - създаване на образ с посоченото име по команди от Dockerfile, намиращ се в текущата директория.
docker container commit идентификаторНаКонтейнер - превръща контейнерът в нов образ.
docker container ls - показване на списък на изпълняваните в момента контейнери. В списъка се виждат идентификаторите на контейнерите и др. данни.
docker container ls -a - показване на списък на всички изпълнени контейнери.
docker container run имеНаОбраз пътДоПриложение - създаване и стартиране на контейнер от даден образ и на приложение, което се съдържа в образа. След завършване изпълнението на приложението, контейнерът се затваря.
docker container run -it имеНаОбраз пътДоПриложение - опция -it оставя приложението да се изпълнява в интерактивен режим.
docker start идентификаторНаКонтейнер - стартиране на контейнер, имащо посочения идентификатор.
docker stop идентификаторНаКонтейнер - спира изпълнението на контейнер.
docker diff идентификаторНаКонтейнер - показва списък на файловете, по които се различава контейнерът от образа, от който е създаден.
docker exec идентификаторНаКонтейнер команда - изпълнява команда в контейнер.
docker image ls или
docker images - показване списък на наличните образи.
docker image pull имеНаОбраз или само
docker pull имеНаОбраз - изтегляне на образ от hub.docker.com.
docker ps - показване списък на стартираните контейнери. (Равносилно на docker container ls.)
docker rm идентификаторНаКонтейнер - изтриване на контейнер.
docker run [опции] имеНаОбраз [команда] - стартиране на нов контейнер от посочения образ, и изпълняване на команда в него.
Опциите могат да бъдат: -d - detached mode, -p - портове, -v - посочване на том и др.,
например: -dp 3000:3000 -v todo-db:/etc/todos
.
docker stop идентификаторНаКонтейнер - спиране на контейнер.
docker volume create имеНаТом - създаване на том.
docker volume inspect имеНаТом - показва информация за тома.
Примери за команди
docker pull alpine
- изтегляне на образ с Linux Alpine.
docker run -it alpine /bin/sh
- Създаване и стартиране на контейнер с Linux Alpine. Ако образ alpine
още не е изтеглен и наличен, то първо се изтегля този образ. Контейнерът остава интерактивен (поради опция -i) и това позволява изпълняване на sh команди в контейнера и виждане на резултата в терминала на разработчика. Изпълнението на командния интерпретатор sh на контейнера се прекратява с команда exit, след което спира и изпълнението на контейнера. Повторно изпълнение на същия контейнера се стартира с docker start -i идНаКонтейнера
, като идНаКонтейнера
се установява с команда docker ps -a
.
docker exec -it имеИлиИДнаКонтейнер /bin/sh
- предизвиква интерактивно изпълнение на командния интерпретатор /bin/sh в контейнер и показва резултата в терминала на разработчика.
Предишна страница: Django
Следваща страница: JDK - Java Development Kit