
Хотелось бы поделиться "граблями", на которые успел наступить при работе с docker, интересными фишками и вообще рассказать про эту замечательную технологию.
Что за зверь такой?
Думаю, сегодня уже все слышали про docker, но все же:
Docker - контейнеризатор приложений. =) (более развернутое пояснение на вики)
А тут я собрал основные свойства технологии:
Система контейнеров
Возможность добавлять в контейнер сам проект , среду окружения , сервер и все остальное
Запуск на любой машине без установки среды
Запуск с помощью одной команды
Безопасность
Возможность тестирования новых технологий без ее установки
Установка
Установка вполне дефолтная, но все же уделю этому немного внимания
Первое, что необходимо сделать - перейти на официальный сайт (удивительно, правда?!)

далее, как показано на скриншоте выше, вбираем вашу систему, и дожидаемся загрузки.
Стандартная установка и все, поздравляю, Вы установили себе Docker Desktop.

Грабля при установке
На ОС Windows может появиться ошибка, связанная с Hyper-V (система аппаратной визуализации)
Решение:
Переходим в папку с Docker -> открыть файл start.sh ->открываем в любом текстовом редакторе -> найти следующую строку:
"${DOCKER_MACHINE}" create -d virtualbox $PROXY_ENV "${VM}"
->заменить на :
"${DOCKER_MACHINE}" create -d virtualbox --virtualbox-no-vtx-check $PROXY_ENV "${VM}«
->снова запустить процесс установки (готово)
Работа с Docker
Есть несколько способов работы с Docker :
Первый запуск
Запускаем наш Docker Desktop и открываем командную строку. После запуска приложения, у Вас должна отображаться следующая иконка (в скрытых значках):

в командной сроке пишем следующую команду:
docker
и если все верно сделано, то у Вас отобразиться список всех доступных команд и их описание:

Если командная строка говорит, что не знает такой команды как "docker"
Проверьте переменные зависимости. В переменной PATH мог не прописаться путь до docker.exe. Найдите путь до docker.exe (обычно в папке bin) и добавьте путь в переменную PATH
Надеюсь у Вас все хорошо, и команда docker заработала и описание команд появилось и погода хорошая. Теперь то можно и скопировать команду из Docker Desktop

и выполнить ее в командной строке. По идее должно получиться следующее:

И что же мы сделали? Создали и запустили контейнер docker/getting-started на порту 80.
Вернемся в наш Docker Desktop и видим следующее:

Поздравляю - мы запустили контейнер.
Перейдем во вкладку Images и увидим следующее:

Видим образ, на основе которого создался наш контейнер. (это все мы сделали командой выше)
Посмотреть информацию можно вернувшись в командную строку и прописав команду:
docker info
тогда увидим следующее

Видим всю информацию про все контейнеры и образы.
Давайте-то уже посмотрим, что у нас получилось. Переходим в Docker Desktop во вкладку Containers/Apps и нажимаем следующее:

Hello world! по docker-ски

Можем насладиться проделанной работой)
Контейнеры и образы
Контейнеры, образы - чтооооо?!
Давайте теперь немного теории(совсем чуть-чуть)
Образ – готовое решение , содержащее некий функционал(нельзя изменять), на его основе можем создать свой контейнер
Контейнер – это собранный проект , состоящий из образов: упакованное (контейнеризированное) приложение на основе образов
Посмотрим на картинку ниже:

Тут наглядно показан принцип работы технологии docker, но все же, уточним моменты:
Docker deamon – промежуточный api для нахождение и скачивания нужного image
Docker hub - место сбора различных образов
Images –образы
Containers- контейнеры
Установка образа
Давайте попробуем развернуть какой-нибудь контейнер (что-то повеселее стартовой страницы).
Заходим на сайт docker
Переходим во вкладку: Explore
В поиске вводим название нужного образа (я буду скачивать образ java- вы можете выбрать любой другой)

находим следующее

нажимаем, видим сразу готовенькую команду:

Копируем и вставляем в командную строку –> тем самым устанавливаем себе образ java:

Запуск образа
Давайте теперь создадим и запустим контейнер на основе только что скачанного образа.
docker run имя_образа
"Стоп" - скажите Вы . А откуда взять имя образа? А вот от куда:
docker images
На вас вывалится список образов, находим там нужный и вставляем в команду выше:

Что получили
Запустить образ без контейнера невозможно – противоречит принципу docker, следовательно у нас создался контейнер на основе нашего образа, который мы пытались запустить

Давайте запустим наш контейнер в интерактивном режиме и убедимся, что мы все сделали верно. Вводим команду для запуска (даем свое имя- тут я обозвал его как JavaContainer):
docker run -it --name JavaContainer openjdk
Получаем запущенный контейнер:

Видим - запустили контейнер с java (об этом нам говорит надпись jshell- java оболочка). Ну хорошо, поигрались с java, а как вернуться обратно, команды docker то уже не работают. И что делать ?


Спокойствие, только спокойствие. Нажимаем магическую комбинацию Ctrl + D:

и о чудо, можно выдохнуть)
А что еще можно запустить?
Давайте , на последок, посмотрим еще возможности docker и запустим Ubuntu.
Схема запуска не сложнее, чем мы занимались выше, все действия аналогичные:
Аналогично шагам выше , зайдем на сайт и найдем Ubuntu, после воспользуемся командой в описании на сайте
Далее запустим в интерактивном режиме:
docker run –it –name имя_контейнера имя_образа

как-то так )
Итоги
Тут я собрал некоторые полезные команды docker и их описание на русском. Может кому пригодится).
Это был краткий обзор на технологию Docker, разумеется он не претендует на полноценный гайд: не было рассказано про Dockerfile или Docker compose или про запуск контейнеров в IDE, про создание собственных образов; НО цель данной статьи - помочь ознакомиться с базой а не рассказать про все и вся). В будущем поговорим про незатронутые тут моменты в Docker. Надеюсь моя статья была для Вас полезной!