Все вы наверное знакомы с понятием виртуальные машины, возможно даже пользовались VirtualBox или другими программами для виртуализации. Но часто нам не нужна полноценная виртуальная машина с ОС, а требуется например просто веб-сервер TomCat. Тут нам на выручку приходит технология контейнеров. Такая виртуальная машина на минималках, которая содержит только то что нужно для запуска сервиса. В этой статье мы познакомимся с Docker и его основными командами. Скачаем пару контейнеров из DockerHub, запустим и т.д
Docker — это проект с открытым исходным кодом для автоматизации развертывания приложений в виде переносимых автономных контейнеров, выполняемых в облаке или локальной среде.
Установка.
В Windows все достаточно просто, качаем Докер с официального сайта и устанавливаем.
Если мы хотим установить его скажем в Debian или дистрибутивы семейства Linux то начинаются не большие танцы с бубном. Мы ставить будем в Debian :
- Ставить для начало необходимые зависимости:
apt install apt-transport-https ca-certificates curl gnupg2 software-properties-common
- Добавьте официальный ключ GPG Docker (если все хорошо вернет OK):
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
- Добавьте стабильный репозиторий Docker APT в список репозиториев
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
- Обновите список пакетов и установите последнюю версию Docker CE (Community Edition):
sudo apt update
sudo apt install docker-ce
Первые команды.
Контейнеры Docker запускаются из образов, можно сказать аналог ISO файла. По умолчанию образы Docker хранятся на Docker Hub – как Github только для контейнеров, поддерживаемый командой разработчиков проекта. Разместить свой образ на Docker Hub может любой пользователь, потому здесь можно найти образы для большей части приложений и дистрибутивов Linux.
Давайте выполним первые команды :
- Проверим версию Докер.
docker -v
- И запустим первый контейнер, который называется hello-world и сделан специально для проверки работы Docker )))
docker run hello-world

Давайте теперь посмотрим список загруженных Images на компьютере командой images :
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 3 months ago 13.3kB
Команда которая может вам пригодиться ) search — поиск по репозиторию образов, например бедный TomCat :
docker search tomcat
Мы тут видим много разных образов. Но нас интересует образ с название tomcat . У него 3008 звездочек и отметка что он официальный. Давайте скачаем командой pull
docker pull tomcat
Теперь давайте запустим и потестируем его:
docker run -d -p 80:8080 tomcat
--detach
,-d
Запустите контейнер в фоновом режиме и распечатайте идентификатор контейнера.--publish
,-p
Опубликуйте порты контейнера на хосте, пробрасываем порт с контейнера на localhost
Теперь открываем браузер и заходим на localhost.
Посмотрим запущенные контейнеры :
docker ps
--all
,-a
Показать все контейнеры.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
af6d44eefe5c tomcat "catalina.sh run" 4 minutes ago Up 4 minutes 0.0.0.0:80->8080/tcp, :::80->8080/tcp zen_jang
Ну а теперь остановим контейнер (мы может использовать имя или использовать ID контейнера):
docker stop
tomcat
af6d44eefe5c
Шпаргалка основных команд.
docker start [CONTAINER…]
— запуск остановленного контейнера- Остановленный контейнер можно перезапустить с сохранением всех его предыдущих изменений при использовании.
docker run IMAGE
— создание и запуск нового контейнера. (То есть,docker run
эквивалентно API/containers/create
тогда/containers/(id)/start
--detach
,-d
Запустите контейнер в фоновом режиме и распечатайте идентификатор контейнера.--env
,-e
Установка переменных среды.--memory
,-m
Ограничение памяти.--rm
Автоматически удаление созданного контейнер, когда он выйдет.--publish
,-p
Опубликуйте порты контейнера на хосте.-p 8080:80/tcp -p 8080:80/udp
--name
Назначьте имя контейнеру.-it
Интерактивный режим.
docker rm CONTAINER
Удалите один или несколько контейнеров.--volumes
,-v
Удалить Volume контейнера(виртуальные жесткие диски).
docker search TERM
Поиск в центре Docker.--limit
Максимальное количество результатов поиска.--filter
,-f
Выход фильтра на основе заданных условий.
docker ps [OPTIONS]
Список контейнеров.--all
,-a
Показать все контейнеры.--last
,-n
Показать n последних созданных контейнеров (включает все состояния).--size
,-s
Отображение общих размеров файлов.
docker stop [OPTIONS] CONTAINER [CONTAINER…]
Остановите один или несколько запущенных контейнеров.--time
,-t
Секунды, чтобы дождаться остановки, прежде чем остановить его.
docker pull NAME
Получение образа из репозитория.docker images [OPTIONS] [REPOSITORY[:TAG]]
Список образов.--all , -a
Показать все изображения (по умолчанию скрываются промежуточные изображения).
docker rmi IMAGE [IMAGE…]
Удалите одно или нескольких образов.docker logs [OPTIONS] CONTAINER
Просмотр логов контейнера.