Docker — шпаргалка

Docker, это модно или имеет большое практическое применение? Увы, оценить ценность той или иной технологии может только время. Вопросы установки docker оставляем в стороне, все очень просто и хорошо описано.

Терминология (источник):

  • Images (образы) — Схемы нашего приложения, которые являются основой контейнеров. В примере выше мы использовали команду docker pull чтобы скачать образ busybox.
  • Containers (контейнеры) — Создаются на основе образа и запускают само приложение. Мы создали контейнер командой docker run, и использовали образ busybox, скачанный ранее. Список запущенных контейнеров можно увидеть с помощью команды docker ps.
  • Docker Daemon (демон Докера) — Фоновый сервис, запущенный на хост-машине, который отвечает за создание, запуск и уничтожение Докер-контейнеров. Демон — это процесс, который запущен на операционной системе, с которой взаимодействует клиент.
  • Docker Client (клиент Докера) — Утилита командной строки, которая позволяет пользователю взаимодействовать с демоном. Существуют другие формы клиента, например, Kitematic, с графическим интерфейсом.
  • Docker Hub — Регистр Докер-образов. Грубо говоря, архив всех доступных образов. Если нужно, то можно содержать собственный регистр и использовать его для получения образов.
  • Base images (базовые образы) — это образы, которые не имеют родительского образа. Обычно это образы с операционной системой, такие как ubuntu, busybox или debian.
  • Child images (дочерние образы) — это образы, построенные на базовых образах и обладающие дополнительной функциональностью.
  • Официальные образы — это образы, которые официально поддерживаются командой Docker. Обычно в их названии одно слово. В списке выше pythonubuntubusybox и hello-world — базовые образы.
  • Пользовательские образы — образы, созданные простыми пользователями вроде меня и вас. Они построены на базовых образах. Обычно, они называются по формату user/image-name.

docker pull busybox # скачивает образ busybox из хаба docker и сохраняет его локально;
docker images # показать список локальных образов в системе;
docker rmi hello-world # удалить образ из системы;
docker ps # показать все запущенные контейнеры;
docker ps -a # показать также контейнеры, которые запускались. P.S. контейнеры, после запуска не удаляются автоматически, а остаются, скорее всего, мусором в системе. Их нужно удалять или вручную, или запуском с параметром —rm;
docker rm c922e483702d 315f106e80ee # удалить остатки контейнеров с идентификаторами c922e483702d и 315f106e80ee;
docker rm $(docker ps -a -q -f status=exited) # удаляет группу контейнеров, статус которых exited, -q возвращает только численные ID, -f фильтрует вывод на основе условий;

docker run -it busybox sh # запускает контейнер, подключает к нему tty (интерактивный терминал) и запускает внутри sh;
docker run -d -P —name static-site prakhar1989/static-site # запускаем контейнер. -d — открепит (detach) терминал, -P сделает все открытые порты публичными и случайными, —name — имя, которое даем контейнеру.
docker port [CONTAINER] # посмотреть порты, используемые контейнером;
docker run -p 8888:80 prakhar1989/static-site # -p 8888:80 — задали свой порт;
docker stop 16f1d4f27ba4 # остановить контейнер с идентификатором 16f1d4f27ba4;
docker search elasticsearch # поиск в Docker Hub
docker build -t vgrey/test . # создать образ на основе Dockerfile Обратите внимание на точку в конце;
docker push vgrey/test # опубликовать образ на Docker Hub;

docker network ls # просмотр сетей. По умолчанию. docker создает:
NETWORK ID NAME DRIVER
075b9f628ccc none null
be0f7178486c host host
8022115322ec bridge bridge
docker network inspect bridge # смотрим, что входи в сеть bridge;
docker network create mynet # создаем свою сеть, по умолчанию, типа bridge;
docker run -dp 9200:9200 —net mynet —name es elasticsearch # запускаем контейнер elasticsearch в сети mynet с именем es. Теперь к нему можно будет обратится по имени с других контейнеров в сети.

Запись опубликована в рубрике Записки админа. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *