-
Notifications
You must be signed in to change notification settings - Fork 5
General: Docker
Самый удобный способ начать работать с Docker на Windows — с помощью программы Docker Desktop, которую можно скачать по этой ссылке и затем установить. Если при установке возникли какие-то трудности — тогда можно обратиться к справочному разделу на официальном сайте Докера.
Если вы удачно установили программу, то вы должны в итоге при запуске увидеть что-то подобное этому.
Docker — это прослойка над вашей операционной системой (в терминах Docker ее называют «хост»
).
Эта прослойка позволяет изолировать любое приложение, поместив его в некую сущность (в терминах Docker ее называют «контейнер»
по аналогии с грузовыми контейнерами, что перевозят грузовые суда),
которая позволяет изолировать приложение (или набор приложений) от других приложений и процессов, запущенных на хосте.
Самому же контейнеру (так как он становится изолированным от любой ОС), вообще неважно где он будет запущен (на Linux, Windows или на чем-то более экзотическом), решая тем самым проблему зависимостей в разных окружениях. Использование контейнеров устраняет проблему «А на моей машине все работало! ¯\_(ツ)_/¯
».
Главное — чтобы на целевой операционной системе была установлена прослойка в виде Docker для запуска контейнера.
Чтобы запускать одновременно несколько копий одного и того же изолированного приложения (каждое из которых изолировано в своем собственное контейнере) и удобно делиться ими между собой — придумали такую сущность как «образ»
(image). А то место, где хранятся образы на локальном компьютере или удаленном хранилище называют репозиторием
(repository). Образ — это статический набор файлов (файлов приложения, файлов настроек, и т.д.) инструментов и директорий, словом всего того, что требуется приложению в контейнере, чтобы успешно его запустить в изолированой среде. Скачанные один раз образы могут использоваться как заготовка для запуска новых контейнеров вновь и вновь. У образа есть имя, которое ему дал автор, например короткое «ubuntu» или более уникальное «us.gcr.io/artifacts-298104/java:v11». Когда вы скачиваете себе какой-то образ на локальный компьютер из удаленного хранилища с помощью команды docker pull <имя>
, то по-умолчанию вы его скачиваете с удаленного репозитория, который называется Docker Hub.
Соответственно, контейнеры — это основная единица, с которой мы работаем. Работаем посредством передачи команд запущенному докеру или конкретному контейнеру через командную строку.
Немного пугающая схема состояний контейнера и переходов между ними, которая в конце курса вам будет казаться очень примитивной.
Всё, что <между угловыми скобками>, нужно изменить на свое значение.
У каждого запущенного контейнера должен быть идентификатор
(Container ID) и имя
(Name), которые автоматически генерируются при первом запуске контейнера автоматически. Их можно узнать, например, с помощью команды docker ps -a
:
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
33593a942a7f ubuntu "/bin/bash" 29 minutes ago Exited (0) 29 minutes ago suspicious_tesla
docker build -t <идентификатор>
— Создаёт образ вашего приложения
docker images
— Возвращает все существующие на вашем компьютере ( локальные ) образы.
docker rmi <идентификатор>
— Удаляет локальный образ найденный по имени или ID
docker tag <старое имя> <новое имя>
— Переименовывает локальный образ меняя его имя со <старое имя> на <новое имя>.
docker pull <идентификатор>
— Скачивает образ, с основного репозитория Docker, если образ существует.
docker push <идентификатор>
— Опубликовывает ваш образ в главном репозитории Docker.
docker run -it -d <образ>
— Запускает контейнер в скрытом режиме (-d) на основе образа <образ>
docker run -d (скрытно) --rm (удалить после остановки) -p 80:80 (порт хоста:порт контейнера) -e <переменная>=<значение> -v <том или путь на хосте>/<путь внутри контейнера> (монтирование директории) --name <имя контейнера> <имя образа>
docker ps
— Выводит в консоль список всех активных контейнеров.
docker ps -a
— Выводит в консоль список всех контейнеров, как активных, так и неактивных.
docker stop <идентификатор>
— Останавливает контейнер найденный по идентификатору.
docker rm -f <идентификатор>
— Удаляет контейнер найденный по идентификатору.
docker logs -f <идентификатор>
— Выводит логи событий происходящих в контейнере найденного по идентификатору.
docker exec <идентификатор> <команда>
— Запускает выполнение команды в контейнере.
docker exec -it <идентификатор> bash
— Открывает командную строку BASH контейнера.
docker inspect <container>
— Выводит техническую информацию о контейнере.
docker stop $(docker ps -aq)
— Останавливает все активные контейнеры.
docker rm $(docker ps -aq)
— Удаляет все остановленные контейнеры.
docker info
— Выводит информацию о состоянии Docker, его версию, используемые ресурсы, существующие образы и т.д.
docker system prune
— Чистит все неиспользуемые образа, контейнеры, а так же сети (networks) и тома (volumes).
docker run -it us.gcr.io/artifacts-298104/java:v11 /bin/bash
— Опции -i
и -t
вместе с /bin/bash
даёт доступ к выполнению команд в терминале внутри контейнера. Теперь, внутри этого контейнера можно выполнять любые команды, применимые к Ubuntu.
docker run -v C:\projects\docker-example\:/mnt ubuntu /bin/bash
— Пример монтирования локальной директории на компьютере к директории в контейнере с помощью опции -v
. Монтирование директории в Docker контейнер — это предоставление доступа контейнеру на чтение содержимого вашей папки C:\projects\docker-example\
. Помимо чтения из этой папки, так же, контейнер может её изменять, и такая связь является двусторонней: при изменении файлов в основной ОС изменения будут видны в контейнере в директории /mnt
, и наоборот.
- Видео | Зачем нужен и как работает Docker — ликбез
- Docker — самый простой и понятный туториал. Изучаем докер, так, если бы он был игровой приставкой
- Дополнительная шпаргалка по командам Docker
- Видео | Основы Docker. Большой практический выпуск
- Шпаргалка по командам Docker
- Как запустить shell в докер контейнере?
- Docker-шмокер и Kubernetes. Что это такое по-рабоче-крестьянски
- Раздел справки Microsoft по работе с Docker на Windows 10
- Видео | Установка Docker на Windows 10 без поддержи WSL2 или на более ранние версии Windows с помощью Docker Toolbox
- Установка Docker для Manjaro Linux
- Изучаем Docker (серия статей)
- Докер с нуля: работа с контейнерами, часть 1
- Докер с нуля: работа с контейнерами, часть 2