Docker шпаргалка

Docker шпаргалка

Картинка к публикации: Docker шпаргалка

Docker - это платформа для разработки, развертывания и запуска приложений в контейнерах. Контейнеры Docker обеспечивают среду, в которой приложения могут работать независимо от хост-системы и других контейнеров, что делает их легко переносимыми и масштабируемыми. 


Основные команды

Запуска контейнера из образа. С помощью этой команды вы можете указать образ, который вы хотите использовать, и определить любые дополнительные параметры, такие как монтирование томов или проброс портов.
ссылка на документацию по команде

$ docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

Создание образа из Dockerfile. Dockerfile - это файл, содержащий инструкции для создания образа Docker. Команда docker build используется для сборки образа из этого файла.
ссылка на документацию по команде

$ docker build [OPTIONS] PATH | URL | -

Показывает список доступных образов Docker на хост-системе.
ссылка на документацию по команде

$ docker images [OPTIONS] [REPOSITORY[:TAG]]

Показывает список работающих контейнеров Docker.
ссылка на документацию по команде

$ docker ps [OPTIONS]

Эта команда прекращает работу контейнера, сохраняя его состояние.
ссылка на документацию по команде

$ docker stop [OPTIONS] CONTAINER [CONTAINER...]

Команда для удаления контейнера. Контейнер должен быть остановлен перед удалением.
ссылка на документацию по команде

$ docker rm [OPTIONS] CONTAINER [CONTAINER...]

Команда для удаления образа. Образ не может быть удален, если существуют работающие контейнеры, основанные на нем.
ссылка на документацию по команде

$ docker rmi [OPTIONS] IMAGE [IMAGE...]

Возвращает поток данных о запущенных контейнерах в реальном времени. Чтобы ограничить данные одним или несколькими определенными контейнерами, укажите список имен или идентификаторов контейнеров, разделенных пробелом. 
ссылка на документацию по команде

$ docker stats [OPTIONS] [CONTAINER...]

Удалить все остановленные контейнеры
ссылка на документацию по команде

$ docker container prune [OPTIONS]

Посмотреть данные конкретного контейнера | Только IP адреса к примеру
ссылка на документацию по команде

$ docker inspect [OPTIONS] NAME|ID [NAME|ID...] | grep IPAddress

Команда для выполнения команд в работающем контейнере. Эта команда позволяет запускать команды внутри контейнера, даже если он уже работает.
ссылка на документацию по команде

$ docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

Войти в bash терминал контейнера `f2f1d58dc49a`

$ docker exec -it f2f1d58dc49a bash

Команда пакетно извлекает журналы, существующие на момент выполнения.
ссылка на документацию по команде

$ docker logs [OPTIONS] CONTAINER 

Команды для работы с объектами

Команда используется для вывода информации о использовании дискового пространства Docker.

$ docker system df

Команда docker system df может быть полезна, когда вам нужно определить, сколько дискового пространства занимают ваши Docker-ресурсы, или когда вы хотите удалить неиспользуемые ресурсы, чтобы освободить дисковое пространство.

флаг -v добавляет более подробную информацию о томах

$ docker system df -v

Команда остановит все запущенные и остановленные контейнеры на вашей системе

$ docker stop $(docker ps -a -q)

Команда удалит все контейнеры на вашей системе, включая запущенные контейнеры, с принудительным удалением.

$ docker container rm -f $(docker container ls -a -q)

Команда используется для отображения списка всех Docker образов, которые были загружены на вашу систему.

$ docker image ls 

Команда удалит все Docker образы, загруженные на вашу систему, с принудительным удалением.

$ docker rmi -f $(docker images -a -q)

Висячие образы - это образы, которые больше не используются никакими контейнерами и не имеют тегов. Они могут появляться после выполнения команды docker build, если вы не указали тег для нового образа. Эти образы могут занимать место на диске, поэтому их рекомендуется удалить, если они больше не нужны.


Команда используется для отображения списка всех висячих (dangling) Docker образов на вашей системе.

$ docker image ls -f dangling=true

Команда используется для удаления всех висячих Docker образов на вашей системе.

$ docker image rm $(docker image ls -f dangling=true -q)

Команда используется для удаления неиспользуемых Docker образов на вашей системе. Эта команда автоматически удаляет все образы, которые не используются ни в одном контейнере.

$ docker image prune -f

Если у вас есть контейнеры, которые используют старые версии образов, эти образы не будут удалены, поскольку они все еще используются.


Команда используется для удаления неиспользуемых сборщиков Docker на вашей системе. Эта команда автоматически удаляет все сборщики, которые не используются ни в одном процессе сборки.

$ docker builder prune -f

Команда используется для отображения списка всех Docker томов на вашей системе. Тома в Docker используются для сохранения и переноса данных между контейнерами и хост-системой. Они представляют собой персистентное хранилище данных, которое существует независимо от контейнеров.

$ docker volume ls

Удалить конкретный volume.

$ docker volume rm VOLUME_NAME

Команда используется для удаления неиспользуемых томов Docker на вашей системе. Эта команда автоматически удаляет все тома, которые не связаны ни с одним контейнером.

$ docker volume prune -f

Если у вас есть контейнеры, которые используют старые тома, эти тома не будут удалены, поскольку они все еще используются.


Используется для удаления всех томов, которые являются "зависшими" или "безымянными" (dangling) на вашей системе.

$ docker volume ls -qf dangling=true | grep -E '^[0-9a-f]{64}$' | xargs -r docker volume rm

Команда удалит все неиспользуемые объекты на вашей системе, включая остановленные контейнеры, неиспользуемые образы, тома и сети, и выполнит удаление без запроса подтверждения.

$ docker system prune -a -f

Обратите внимание, что удаление неиспользуемых объектов Docker может привести к потере данных, поэтому перед использованием этой команды убедитесь, что вы не удаляете важные данные.  


Команды docker compose

Команда, которая позволяет запустить все контейнеры, описанные в файле docker-compose.yml, и пересобрать их образы при необходимости
ссылка на документацию по команде

$ docker compose up --build

Кроме того, команда docker-compose up может принимать и другие опции, например, -d для запуска контейнеров в фоновом режиме, -s для масштабирования количества экземпляров контейнеров и т.д.


Команда, которая позволяет остановить и удалить все контейнеры
ссылка на документацию по команде

$ docker compose down [OPTIONS]

Кроме того, команда docker-compose down может принимать и другие опции, например, -v для удаления томов, --rmi для удаления образов и т.д.


Работа в контейнерах  

Команда выполняет миграции базы данных для Django-приложения, запущенного в контейнере с именем web.

$ docker compose exec NAME python3 manage.py migrate --noinput

Команда сначала очищает директорию для сборки статических файлов, а затем собирает статические файлы в эту директорию внутри контейнера web.

$ docker compose exec NAME python3 manage.py collectstatic --no-input --clear

Команда docker-compose exec web bash позволяет запустить интерактивную оболочку Bash внутри контейнера web. Это может быть полезно, если вам нужно выполнить какие-то действия внутри контейнера вручную, например, если вы хотите проверить состояние файловой системы внутри контейнера или выполнить какие-то тесты вручную.

$ docker compose exec NAME bash

Системные команды

Перезапуск всех служб Docker

$ sudo systemctl restart docker.socket docker.service

Изменить путь хранения data файлов DOCKER

$ sudo nano /etc/docker/daemon.json
{
  "data-root": "~/docker-data"
}

Зеркала для работы Docker в России и Белоруссии

https://daocloud.io
https://c.163.com 
https://registry.docker-cn.com 
https://mirror.gcr.io
https://dockerhub.timeweb.cloud

Для обхода блокировок добавьте в конфиг зеркала, а если не поможет то и прокси серверы. К примеру

{
  "registry-mirrors" : [
    "https://mirror.gcr.io",
    "https://dockerhub.timeweb.cloud"
  ],
  "proxies": {
    "http-proxy": "http://user:pass@1хх.1хх.1хх.1хх:port",
    "https-proxy": "http://user:pass@1хх.1хх.1хх.1хх:port",
    "no-proxy": "*.test.example.com,.example.org,127.0.0.0/8"
  }
}

Далее перезапуск Docker с помощью:

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

Читайте также:

ChatGPT
Eva
💫 Eva assistant