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