Docker Reminder

Материал из ALT Linux Wiki

Шпаргалка по Docker

Основная статья по Docker находится здесь.

Интро

Все нижеизложенное надергано из различных источников. Указать авторство не всегда представляется возможным.

Внимание! Все что Вы делаете, Вы делаете на свой страх и риск! Не копируйте, вникайте.


Docker Образы

В Docker имеется команда, очищающая все не связанные с контейнерами ресурсы, в том числе образы, контейнеры, тома и сети:

$ docker system prune

Чтобы удалить все остановленные контейнеры и неиспользуемые образы, добавьте в эту команду флаг -a:

$ docker system prune -a

Удаление одного или нескольких конкретных образов:

Команда docker images с флагом -a, покажет идентификаторы образов, список включает промежуточные слои образов. Вы можете передать идентификаторы или теги в docker rmi:
Список образов:

$ docker images -a

Удаление выбранных:

$ docker rmi Image Image

Удаление всех образов

Если вы уверены, что хотите удалить их все, добавьте флаг -q для передачи идентификатора образа в docker rmi:

$ docker rmi $(docker images -a -q)
Внимание! Будьте аккуратны! Можете легко и безвозвратно удалить нужное. Потренируйтесь на кошках.


Контейнеры

Удаление одного или нескольких конкретных контейнеров

Команда docker ps с флагом -a предназначена для поиска имен или идентификаторов контейнеров.
Список образов:

$ docker ps -a
CONTAINER ID   IMAGE           COMMAND       CREATED       STATUS       PORTS     NAMES
f88d9306220b   alt-p10-build   "/bin/bash"   9 hours ago   Up 9 hours             alt-p10-build

Удаление выбранных:

$ docker rm ID_or_Name ID_or_Name

Удаление контейнера при выходе

Если вы создаете контейнер, который вам не будет нужен после завершения его использования, вы можете использовать команду docker run --rm для его автоматического удаления при выходе. Запуск и удаление:

$ docker run --rm image_name

Удаление всех контейнеров, из которых выполнен выход

Найти контейнеры можно с помощью команды docker ps -a и отфильтровать их по статусу:

  • created (создан)
  • restarting (перезапускается)
  • running (работает)
  • paused (пауза)
  • exited (выполнен выход).

Чтобы просмотреть список контейнеров, из которых выполнен выход, используйте флаг -f для фильтрации по статусу. Список остановленных контейнеров:

$ docker ps -a -f status=exited
Внимание! Убедитесь, что вы хотите удалить именно эти контейнеры!Используйте флаг -q для передачи идентификаторов в команду docker rm.


Удаление:

$ docker rm $(docker ps -a -f status=exited -q)

Создание (запуск) контейнера

Просмотр установленных образов (image)

$ docker images

REPOSITORY                       TAG       IMAGE ID       CREATED        SIZE
alt-latest                    latest    6ce8472ef310   24 hours ago   1.34GB

Запуск контейнера в интерактивном режиме.

Это значит, что вы сможете выполнять команды bash внутри контейнера с оболочкой. Для старта интерактивного режима используются опции -i и -t. Опция -d позволяет запустить контейнер в фоновом режиме, и вывести идентификатор контейнера. Для собственного удобства, привыкайте давать имена контейнерам, параметр --name.

$ docker run -dit -P --name alt-p10-build alt-latest

Присоединение к активному контейнеру

Выводим список контейнеров, присоединяемся к нужному

$ docker ps -a -f status=running
CONTAINER ID   IMAGE           COMMAND       CREATED       STATUS       PORTS     NAMES
f88d9306220b   alt-latest   "/bin/bash"   8 hours ago   Up 7 hours             alt-p10-build

$ docker attach f88d9306220b

Если контейнер точно один, то можно делать так:

$ docker attach (docker ps -a -q -f status=running)

Запуск неактивного контейнера

docker ps -a  ИЛИ (docker ps -a -q -f status=exited)
 docker start 132185b8a166 
 docker ps -a

Отсоединение контейнера без его остановки

Нажмите Ctrl-P, а затем Ctrl-Q, чтобы отключить соединение.

Запуск контейнера с общим каталогом

Если нужно "расшарить" каталог для обмена с контейнером. В примере общим будет $HOME/Public (при условии что в контейнере имя пользователя rpmbuild)

$ docker run -dit -P --name alt-p10-build -v ~/Public:/home/rpmbuild/Public alt-latest

При желании, можно смонтировать tmpfs в нужный каталог. В примере создаем в контейнере tmpfs в каталог /opt

$ docker run -dit -P --name alt-p10-build --mount type=tmpfs,destination=/opt alt-latest

Сохранение контейнера в образ

Взглянем на команды docker export и docker save.

  • docker export сохраняет запущенный или поставленный на паузу экземпляр контейнера в tar файл.
$ docker ps
CONTAINER ID   IMAGE           COMMAND       CREATED       STATUS       PORTS     NAMES
f88d9306220b   alt-latest   "/bin/bash"   8 hours ago   Up 7 hours             alt-p10-build
 
$ docker export f88d9306220b -o alt-p10-export.tar


  • docker save сохраняет образ в tar файл.
$ docker images
REPOSITORY                       TAG       IMAGE ID       CREATED        SIZE
alt-p10-build   latest    6ce8472ef310   25 hours ago   1.34GB

$ docker save -o alt-p10-build-save.tar alt-p10-build


Загрузка сохраненного образа

К сохраненным в tar образам применяются команды docker import и docker load.

  • docker import используется для импорта tar файла (т.е. контейнера), созданного через docker export.
$ docker import alt-p10-export.tar
 sha256:56п54e1b4a26cd15a6c6d33da835e7319491a9c1dbeca16583750f7b96235403
  • docker load для загрузки tar файла (т.е. образа), созданного через docker save.
$ docker load --input alt-p10-build-save.tar
 Loaded image: busybox:latest