[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"/ru/kb/how-to/other/shpargalka-osnovnyh-komand-dockerKbData":3},{"page":4,"pages":183,"recommendedPages":184,"category":106,"categoryTree":106,"total":16,"currentOrder":212,"activeManualCategoryId":106,"tag":-1},{"route":5,"uuid":8,"title":9,"excerpt":10,"content":11,"view_count":12,"published_at":13,"modified_at":14,"like":15,"category":18,"hero_image":99,"seo_metadata":100,"schema_org_metadata":104,"open_graph_metadata":107,"sections":108,"tags":174,"breadcrumbs":175,"images":182},{"language":6,"path":7},"ru","/kb/how-to/other/shpargalka-osnovnyh-komand-docker","ada0097c-61ca-404c-01a0-28998094eef7","Шпаргалка по основным командам Docker, которая поможет вам в работе с платформой","Docker – платформа для запуска приложений в контейнерах: изолированных окружениях, которые включают в себя код, зависимости и настройки, необходимые для работы приложения. В отличие от виртуальных машин, контейнеры не эмулируют отдельную операционную систему, а используют ядро хоста, поэтому запускаются быстрее и потребляют меньше ресурсов.","\n\u003Cp>Docker – платформа для запуска приложений в контейнерах: изолированных окружениях, которые включают в себя код, зависимости и настройки, необходимые для работы приложения. В отличие от виртуальных машин, контейнеры не эмулируют отдельную операционную систему, а используют ядро хоста, поэтому запускаются быстрее и потребляют меньше ресурсов. Контейнер создается на основе образа – неизменяемого шаблона с файловой системой и инструкциями по запуску; один и тот же образ можно развернуть на любом сервере с Docker и получить идентичное окружение.\u003C/p>\n\n\n\n\u003Cp>На VPS Beget Docker можно не устанавливать вручную: в маркетплейсе есть готовый образ \u003Ca href=\"https://beget.com/ru/cloud/marketplace/docker?utm_source=kb&amp;utm_medium=article&amp;utm_campaign=docker_commands&amp;utm_content=marketplace_docker\">Docker\u003C/a> – сервер разворачивается с уже настроенными Docker и Docker Compose. Тем, кто предпочитает графический интерфейс вместо командной строки, подойдет \u003Ca href=\"https://beget.com/ru/cloud/marketplace/portainer?utm_source=kb&amp;utm_medium=article&amp;utm_campaign=docker_commands&amp;utm_content=marketplace_portainer\">Portainer\u003C/a> – он тоже разворачивается в пару кликов из маркетплейса и разобран в отдельной статье о \u003Ca href=\"https://beget.com/ru/kb/how-to/vps/kak-rabotat-s-docker-cherez-portainer?utm_source=kb&amp;utm_medium=article&amp;utm_campaign=docker_commands&amp;utm_content=kb_docker_portainer\">работе с Docker через Portainer\u003C/a>.&nbsp;\u003C/p>\n\n\n\n\u003Cp>Зная список команд Docker, можно запускать и останавливать контейнеры, управлять образами, хранить данные в томах, настраивать сети и следить за порядком в системе.&nbsp;\u003C/p>\n\n\n\n\u003Cp>Ниже – шпаргалка: команды Docker с примерами, от первого запуска контейнера до автоматизации через Docker Compose.\u003C/p>\n\n\n\n\u003Ch2 id=\"zapusk-ostanovka-i-udalenie-konteynerov\">Запуск, остановка и удаление контейнеров\u003C/h2>\n\n\n\n\u003Ch3 id=\"docker-run\">docker run\u003C/h3>\n\n\n\n\u003Cp>\u003Ccode>docker run\u003C/code> – главная команда, с которой начинается знакомство с Docker. Она создает контейнер Docker на основе образа и сразу запускает его. Если нужного образа нет локально, Docker автоматически скачает его из реестра.\u003C/p>\n\n\n\n\u003Cdiv class=\"wp-block-beget-code code-block\">\u003Cpre data-options=\"{&quot;mode&quot;:&quot;null&quot;}\">\u003Ccode>docker run -d -p 8080:80 --name my-nginx nginx\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Cp>Здесь \u003Ccode>-d\u003C/code> запускает контейнер в фоновом режиме, \u003Ccode>-p 8080:80\u003C/code> пробрасывает 80-й порт контейнера на 8080-й порт хоста, а \u003Ccode>--name\u003C/code> задает удобное имя вместо случайного идентификатора.\u003C/p>\n\n\n\n\u003Cp>Часто используемые ключи:\u003C/p>\n\n\n\n\u003Cul>\u003Cli>\u003Ccode>-d\u003C/code> – запуск в фоне (detached);\u003C/li>\u003Cli>\u003Ccode>-p host:container\u003C/code> – проброс порта;\u003C/li>\u003Cli>\u003Ccode>-e VAR=value\u003C/code> – передача переменной окружения;\u003C/li>\u003Cli>\u003Ccode>-v\u003C/code> – подключение тома или директории хоста;\u003C/li>\u003Cli>\u003Ccode>--rm\u003C/code> – автоматическое удаление контейнера после остановки;\u003C/li>\u003Cli>\u003Ccode>--restart=always\u003C/code> – автоматический перезапуск при сбоях или перезагрузке хоста (\u003Ccode>always\u003C/code> поднимет контейнер Docker даже если остановить его вручную командой \u003Ccode>docker stop\u003C/code>);\u003C/li>\u003Cli>\u003Ccode>--restart=unless-stopped\u003C/code> – то же самое что и \u003Ccode>--restart=always\u003C/code>, но не перезапускает контейнер, если он был остановлен вручную. Этот вариант обычно предпочтительнее \u003Ccode>always\u003C/code>.\u003C/li>\u003Cli>\u003Ccode>--memory\u003C/code>, \u003Ccode>--cpus\u003C/code> – ограничение ресурсов.\u003C/li>\u003C/ul>\n\n\n\n\u003Cp>Пример с ограничением ресурсов и автоперезапуском:\u003C/p>\n\n\n\n\u003Cdiv class=\"wp-block-beget-code code-block\">\u003Cpre data-options=\"{&quot;mode&quot;:&quot;null&quot;}\">\u003Ccode>docker run -d --name app --memory=1g --cpus=1 --restart=always myapp:latest\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Ch3 id=\"docker-ps\">docker ps\u003C/h3>\n\n\n\n\u003Cp>Команда \u003Ccode>docker ps\u003C/code> показывает запущенные контейнеры: идентификатор, образ, статус, порты.\u003C/p>\n\n\n\n\u003Cdiv class=\"wp-block-beget-code code-block\">\u003Cpre data-options=\"{&quot;mode&quot;:&quot;&quot;}\">\u003Ccode>docker ps              \t# только активные\ndocker ps -a            # включая остановленные\ndocker ps -q           \t# только идентификаторы\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Ch3 id=\"docker-stop-docker-start-docker-restart\">docker stop / docker start / docker restart\u003C/h3>\n\n\n\n\u003Cp>Управляют состоянием уже созданного контейнера, не удаляя его:&nbsp;\u003C/p>\n\n\n\n\u003Cdiv class=\"wp-block-beget-code code-block\">\u003Cpre data-options=\"{&quot;mode&quot;:&quot;&quot;}\">\u003Ccode>docker stop my-nginx \t\t# корректная остановка (SIGTERM, затем SIGKILL)\ndocker start my-nginx \t\t# запуск ранее остановленного контейнера\ndocker restart my-nginx \t# перезапуск\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Cp>Можно передавать сразу несколько имен или ID через пробел, чтобы обработать несколько контейнеров Docker одной командой.\u003C/p>\n\n\n\n\u003Ch3 id=\"docker-rm\">docker rm\u003C/h3>\n\n\n\n\u003Cp>Команда \u003Ccode>docker rm\u003C/code> удаляет остановленные контейнеры и освобождает занятые ими ресурсы:&nbsp;\u003C/p>\n\n\n\n\u003Cdiv class=\"wp-block-beget-code code-block\">\u003Cpre data-options=\"{&quot;mode&quot;:&quot;&quot;}\">\u003Ccode>docker rm my-nginx \t\t# удаление остановленного контейнера;\ndocker rm -f my-nginx \t# принудительное удаление, даже если контейнер запущен\ndocker container prune \t# удалить все остановленные контейнеры разом\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Ch2 id=\"rabota-s-uzhe-zapushchennym-konteynerom\">Работа с уже запущенным контейнером\u003C/h2>\n\n\n\n\u003Ch3 id=\"docker-exec\">docker exec\u003C/h3>\n\n\n\n\u003Cp>Позволяет зайти в работающий контейнер Docker, не останавливая его, и выполнить произвольную команду. Например, открыть интерактивную оболочку для отладки.\u003C/p>\n\n\n\n\u003Cdiv class=\"wp-block-beget-code code-block\">\u003Cpre data-options=\"{&quot;mode&quot;:&quot;&quot;}\">\u003Ccode>docker exec -it my-nginx bash\ndocker exec my-nginx nginx -t   # проверка конфигурации без входа в оболочку\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Cp>Флаг \u003Ccode>-it\u003C/code> подключает интерактивный терминал (\u003Ccode>-i\u003C/code> – интерактивный режим ввода, \u003Ccode>-t\u003C/code> – псевдотерминал). Если в образе нет \u003Ccode>bash\u003C/code> (например, в alpine-образах), используйте \u003Ccode>sh: docker exec -it my-nginx sh\u003C/code>.\u003C/p>\n\n\n\n\u003Ch3 id=\"docker-logs\">docker logs\u003C/h3>\n\n\n\n\u003Cp>Позволяет просматривать логи работы контейнера:\u003C/p>\n\n\n\n\u003Cdiv class=\"wp-block-beget-code code-block\">\u003Cpre data-options=\"{&quot;mode&quot;:&quot;&quot;}\">\u003Ccode>docker logs my-nginx\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Cp>Примеры использования:&nbsp;\u003C/p>\n\n\n\n\u003Cul>\u003Cli>\u003Ccode>docker logs -f my-nginx\u003C/code> – просмотр логов в реальном времени;\u003C/li>\u003Cli>\u003Ccode>docker logs --tail 100 my-nginx\u003C/code> – просмотр последних 100 строк лога.\u003C/li>\u003C/ul>\n\n\n\n\u003Ch3 id=\"docker-inspect\">docker inspect\u003C/h3>\n\n\n\n\u003Cp>Выводит полную информацию об объекте Docker в формате JSON: сети, тома, переменные окружения, лимиты ресурсов. Команда работает не только с контейнерами, но и с образами, томами и сетями.\u003C/p>\n\n\n\n\u003Cdiv class=\"wp-block-beget-code code-block\">\u003Cpre data-options=\"{&quot;mode&quot;:&quot;&quot;}\">\u003Ccode>docker inspect my-nginx\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Cp>Можно передать сразу несколько объектов и получить массив с данными по каждому:\u003C/p>\n\n\n\n\u003Cdiv class=\"wp-block-beget-code code-block\">\u003Cpre data-options=\"{&quot;mode&quot;:&quot;&quot;}\">\u003Ccode>docker inspect my-nginx another-container\ndocker inspect nginx:latest\ndocker inspect db-data\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Cp>Флаг \u003Ccode>-f\u003C/code> (\u003Ccode>--format\u003C/code>) позволяет вытащить из JSON конкретное поле по Go-шаблону, не читая весь вывод целиком:\u003C/p>\n\n\n\n\u003Cdiv class=\"wp-block-beget-code code-block\">\u003Cpre data-options=\"{&quot;mode&quot;:&quot;&quot;}\">\u003Ccode>docker inspect -f '{{.NetworkSettings.IPAddress}}' my-nginx      \t\t\t\t\t\t\t# IP-адрес контейнера (только для сети bridge по умолчанию)\ndocker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' my-nginx\t\t# IP-адрес для контейнера в пользовательской сети\ndocker inspect -f '{{.State.Status}}' my-nginx                    \t\t\t\t\t\t\t# текущий статус\ndocker inspect -f '{{json .Config.Env}}' my-nginx                 \t\t\t\t\t\t\t# переменные окружения в JSON\ndocker inspect -f '{{.HostConfig.Memory}}' my-nginx                \t\t\t\t\t\t\t# лимит памяти в байтах\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Cp>Для более сложной обработки удобно комбинировать вывод с \u003Ccode>jq\u003C/code>:\u003C/p>\n\n\n\n\u003Cdiv class=\"wp-block-beget-code code-block\">\u003Cpre data-options=\"{&quot;mode&quot;:&quot;&quot;}\">\u003Ccode>docker inspect my-nginx | jq '.[0].Mounts'\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Ch3 id=\"docker-stats-i-docker-top\">docker stats и docker top\u003C/h3>\n\n\n\n\u003Cp>Помогают следить за потреблением ресурсов и процессами внутри контейнера в реальном времени.\u003C/p>\n\n\n\n\u003Cul>\u003Cli>\u003Ccode>docker stats\u003C/code> – CPU, память, сеть по всем контейнерам\u003C/li>\u003Cli>\u003Ccode>docker top my-nginx\u003C/code> – список процессов внутри контейнера\u003C/li>\u003C/ul>\n\n\n\n\u003Ch3 id=\"docker-cp\">docker cp\u003C/h3>\n\n\n\n\u003Cp>Эта команда Docker копирует файлы между контейнером и файловой системой хоста в любом направлении, что делает ее универсальной для работы с файлами.\u003C/p>\n\n\n\n\u003Cdiv class=\"wp-block-beget-code code-block\">\u003Cpre data-options=\"{&quot;mode&quot;:&quot;&quot;}\">\u003Ccode>docker cp my-nginx:/etc/nginx/nginx.conf ./nginx.conf\ndocker cp ./index.html my-nginx:/usr/share/nginx/html/\ndocker cp ./site/ my-nginx:/usr/share/nginx/html/   \t\t# копирование директории целиком\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Cp>Флаг \u003Ccode>-a\u003C/code> сохраняет владельца файла и права доступа при копировании (по умолчанию Docker присваивает файлам владельца от пользователя, под которым выполняется команда):\u003C/p>\n\n\n\n\u003Cdiv class=\"wp-block-beget-code code-block\">\u003Cpre data-options=\"{&quot;mode&quot;:&quot;&quot;}\">\u003Ccode>docker cp -a my-nginx:/var/log/app ./app-logs\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Ch2 id=\"upravlenie-obrazami\">Управление образами\u003C/h2>\n\n\n\n\u003Ch3 id=\"docker-pull\">docker pull\u003C/h3>\n\n\n\n\u003Cp>Эта команда скачивает образ из реестра – по умолчанию: Docker Hub – без запуска контейнера.\u003C/p>\n\n\n\n\u003Cdiv class=\"wp-block-beget-code code-block\">\u003Cpre data-options=\"{&quot;mode&quot;:&quot;&quot;}\">\u003Ccode>docker pull ubuntu           # тег по умолчанию - latest\ndocker pull ubuntu:22.04     # конкретная версия\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Ch3 id=\"docker-build\">docker build\u003C/h3>\n\n\n\n\u003Cp>Собирает образ по инструкциям из файла \u003Ccode>Dockerfile\u003C/code> – текстового файла, в котором по шагам описано, из какого базового образа собирать приложение, какие зависимости устанавливать в Docker Compose и какую команду запускать при старте контейнера.\u003C/p>\n\n\n\n\u003Cdiv class=\"wp-block-beget-code code-block\">\u003Cpre data-options=\"{&quot;mode&quot;:&quot;&quot;}\">\u003Ccode>docker build -t myapp:1.0 .\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Cp>Точка в конце команды Docker build указывает контекст сборки – текущую директорию. Флаг \u003Ccode>-t\u003C/code> задает имя и тег образа.\u003C/p>\n\n\n\n\u003Cp>Дополнительные полезные ключи:\u003C/p>\n\n\n\n\u003Cul>\u003Cli>\u003Ccode>-f Dockerfile.prod\u003C/code> – использовать \u003Ccode>Dockerfile\u003C/code> с нестандартным именем или путем;\u003C/li>\u003Cli>\u003Ccode>--no-cache\u003C/code> – собрать образ заново, не используя кэш предыдущих слоев;\u003C/li>\u003Cli>\u003Ccode>--build-arg VAR=value\u003C/code> – передать аргумент сборки, доступный внутри \u003Ccode>Dockerfile\u003C/code> через инструкцию \u003Ccode>ARG\u003C/code>.\u003C/li>\u003C/ul>\n\n\n\n\u003Cdiv class=\"wp-block-beget-code code-block\">\u003Cpre data-options=\"{&quot;mode&quot;:&quot;&quot;}\">\u003Ccode>docker build -t myapp:1.0 --build-arg NODE_ENV=production --no-cache .\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Cp>Для больших приложений стоит иметь в виду многоэтапную сборку (multi-stage build) – она позволяет собрать приложение в одном образе, а в финальный включить только результат сборки, заметно уменьшив итоговый размер.\u003C/p>\n\n\n\n\u003Ch3 id=\"docker-images\">docker images\u003C/h3>\n\n\n\n\u003Cp>Выводит список локальных образов.\u003C/p>\n\n\n\n\u003Cdiv class=\"wp-block-beget-code code-block\">\u003Cpre data-options=\"{&quot;mode&quot;:&quot;&quot;}\">\u003Ccode>docker images\ndocker images -f dangling=true   \t\t\t\t\t\t\t\t\t# образы без тега («висячие»)\ndocker images --format \"{{.Repository}}:{{.Tag}}\\t{{.Size}}\"   \t\t# компактный вывод\ndocker image history myapp:1.0   \t\t\t\t\t\t\t\t\t# история слоев образа и их размер\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Ch3 id=\"docker-tag-i-docker-push\">docker tag и docker push\u003C/h3>\n\n\n\n\u003Cp>Перед публикацией образ обычно нужно пометить тегом с именем репозитория, а затем отправить в реестр. Если реестр требует авторизации (в том числе Docker Hub для приватных образов), перед push нужно выполнить вход:\u003C/p>\n\n\n\n\u003Cdiv class=\"wp-block-beget-code code-block\">\u003Cpre data-options=\"{&quot;mode&quot;:&quot;&quot;}\">\u003Ccode>docker login\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Cp>Публикация образа:\u003C/p>\n\n\n\n\u003Cdiv class=\"wp-block-beget-code code-block\">\u003Cpre data-options=\"{&quot;mode&quot;:&quot;&quot;}\">\u003Ccode>docker tag myapp:1.0 username/myapp:1.0\ndocker push username/myapp:1.0\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Cp>Одному образу можно присвоить сразу несколько тегов, например, версию и \u003Ccode>latest\u003C/code>:\u003C/p>\n\n\n\n\u003Cdiv class=\"wp-block-beget-code code-block\">\u003Cpre data-options=\"{&quot;mode&quot;:&quot;&quot;}\">\u003Ccode>docker tag myapp:1.0 username/myapp:latest\ndocker push username/myapp:latest\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Cp>Отправить сразу все теги образа одной командой:\u003C/p>\n\n\n\n\u003Cdiv class=\"wp-block-beget-code code-block\">\u003Cpre data-options=\"{&quot;mode&quot;:&quot;&quot;}\">\u003Ccode>docker push -a username/myapp\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Cp>Для приватного реестра (не Docker Hub) в теге дополнительно указывается его адрес:\u003C/p>\n\n\n\n\u003Cdiv class=\"wp-block-beget-code code-block\">\u003Cpre data-options=\"{&quot;mode&quot;:&quot;&quot;}\">\u003Ccode>docker tag myapp:1.0 registry.example.com/myapp:1.0\ndocker push registry.example.com/myapp:1.0\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Cp>Проверить, что образ действительно опубликован, можно, скачав его на другой машине или локально под другим именем:\u003C/p>\n\n\n\n\u003Cdiv class=\"wp-block-beget-code code-block\">\u003Cpre data-options=\"{&quot;mode&quot;:&quot;&quot;}\">\u003Ccode>docker pull username/myapp:1.0\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Ch3 id=\"docker-rmi\">docker rmi\u003C/h3>\n\n\n\n\u003Cp>Позволяет удалить образ.&nbsp;\u003C/p>\n\n\n\n\u003Cdiv class=\"wp-block-beget-code code-block\">\u003Cpre data-options=\"{&quot;mode&quot;:&quot;&quot;}\">\u003Ccode>docker rmi myapp:1.0\ndocker image prune -a    # удалить все неиспользуемые образы\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Ch2 id=\"toma-i-hranenie-dannyh\">Тома и хранение данных\u003C/h2>\n\n\n\n\u003Cp>Контейнеры по умолчанию не сохраняют данные после удаления – для постоянного хранения используются тома (\u003Ccode>volumes\u003C/code>) или монтирование директорий хоста (\u003Ccode>bind mounts\u003C/code>).\u003C/p>\n\n\n\n\u003Cdiv class=\"wp-block-beget-code code-block\">\u003Cpre data-options=\"{&quot;mode&quot;:&quot;&quot;}\">\u003Ccode>docker volume create db-data                      \t# создать том\ndocker run -d -v db-data:/var/lib/mysql mysql      \t# подключить том к контейнеру\ndocker volume ls                                   \t# список томов\ndocker volume inspect db-data                      \t# подробности о томе\ndocker volume rm db-data                           \t# удалить том (данные будут потеряны; не сработает, пока том используется контейнером )\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Cp>Для монтирования конкретной папки с хоста вместо именованного тома используется абсолютный путь:\u003C/p>\n\n\n\n\u003Cdiv class=\"wp-block-beget-code code-block\">\u003Cpre data-options=\"{&quot;mode&quot;:&quot;&quot;}\">\u003Ccode>docker run -d -v /srv/site/html:/usr/share/nginx/html nginx\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Ch2 id=\"seti-docker\">Сети Docker\u003C/h2>\n\n\n\n\u003Cp>Каждый контейнер по умолчанию подключается к сети \u003Ccode>bridge\u003C/code>, но для взаимодействия нескольких сервисов удобнее создавать собственные сети. Это дает им возможность обращаться друг к другу по имени.\u003C/p>\n\n\n\n\u003Cdiv class=\"wp-block-beget-code code-block\">\u003Cpre data-options=\"{&quot;mode&quot;:&quot;&quot;}\">\u003Ccode>docker network create app-network                                    \t\t\t# создать сеть\ndocker network ls                                                     \t\t\t# список сетей\ndocker run -d --network app-network --name backend myapp              \t\t\t# запустить контейнер в сети\ndocker run -d --network app-network --name another-container myapp    \t\t\t# запустить второй контейнер в той же сети\ndocker network connect app-network another-container                  \t\t\t# подключить существующий контейнер к сети\ndocker network inspect app-network                                    \t\t\t# подробная информация о сети\ndocker network disconnect app-network another-container               \t\t\t# отключить контейнер от сети\ndocker network rm app-network                                         \t\t\t# удалить сеть\ndocker network prune                                                  \t\t\t# удалить все неиспользуемые сети\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Cp>При создании сети можно явно задать драйвер и диапазон адресов – это пригодится, если контейнерам нужно взаимодействовать по фиксированным IP или если сеть по умолчанию (\u003Ccode>bridge\u003C/code>) конфликтует с адресацией хоста:\u003C/p>\n\n\n\n\u003Cdiv class=\"wp-block-beget-code code-block\">\u003Cpre data-options=\"{&quot;mode&quot;:&quot;&quot;}\">\u003Ccode>docker network create --driver bridge --subnet 172.20.0.0/16 app-network\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Cp>При подключении контейнера к сети можно задать ему дополнительный алиас. По нему другие контейнеры смогут обращаться к сервису, даже если у контейнера другое имя:\u003C/p>\n\n\n\n\u003Cdiv class=\"wp-block-beget-code code-block\">\u003Cpre data-options=\"{&quot;mode&quot;:&quot;&quot;}\">\u003Ccode>docker network connect --alias db app-network another-container\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Cp>Кроме \u003Ccode>bridge\u003C/code>, у Docker есть и другие драйверы сетей: \u003Ccode>host\u003C/code> (контейнер использует сетевой стек хоста напрямую), \u003Ccode>none\u003C/code> (контейнер без сети) и \u003Ccode>overlay\u003C/code> (для связи контейнеров между несколькими хостами в Docker Swarm).\u003C/p>\n\n\n\n\u003Ch2 id=\"docker-compose\">docker compose\u003C/h2>\n\n\n\n\u003Cp>Когда приложение состоит из нескольких сервисов (например, backend, база данных и кэш), удобнее описать их в одном файле \u003Ccode>docker-compose.yml\u003C/code> и управлять всем стеком – в этом помогает команда \u003Ccode>docker compose up\u003C/code>.\u003C/p>\n\n\n\n\u003Cdiv class=\"wp-block-beget-code code-block\">\u003Cpre data-options=\"{&quot;mode&quot;:&quot;&quot;}\">\u003Ccode>docker compose up -d              \t\t\t\t\t\t# запустить все сервисы в фоне\ndocker compose down               \t\t\t\t\t\t# остановить и удалить контейнеры и сети\ndocker compose down -v            \t\t\t\t\t\t# то же самое, но вместе с томами\ndocker compose ps                 \t\t\t\t\t\t# состояние сервисов\ndocker compose logs -f            \t\t\t\t\t\t# логи всех сервисов\ndocker compose logs -f web        \t\t\t\t\t\t# логи конкретного сервиса\ndocker compose build              \t\t\t\t\t\t# пересобрать образы\ndocker compose up -d --build      \t\t\t\t\t\t# пересобрать образы и сразу перезапустить сервисы\ndocker compose restart            \t\t\t\t\t\t# перезапустить сервисы\ndocker compose stop                \t\t\t\t\t\t# остановить сервисы без удаления\ndocker compose start               \t\t\t\t\t\t# запустить ранее остановленные сервисы\ndocker compose exec web sh        \t\t\t\t\t\t# зайти в контейнер конкретного сервиса\ndocker compose run --rm web python manage.py migrate   \t# разовый запуск команды в сервисе\ndocker compose top                \t\t\t\t\t\t# процессы по сервисам\ndocker compose config             \t\t\t\t\t\t# проверить и вывести итоговую конфигурацию\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Cp>Переменные окружения для сервисов удобно выносить в отдельный файл \u003Ccode>.env\u003C/code> рядом с \u003Ccode>docker-compose.yml\u003C/code>. Docker Compose подхватывает его автоматически и подставляет значения в конфигурацию.\u003C/p>\n\n\n\n\u003Cdiv class=\"wp-block-beget-alert alert-block alert-block-info\">\u003Cdiv class=\"alert-block-title\">Обратите внимание!\u003C/div>\u003Cdiv class=\"alert-block-content\">В современных версиях Docker Compose встроен в основной CLI и вызывается как \u003Ccode>docker compose\u003C/code> (через пробел), тогда как старый отдельный инструмент использовал написание через дефис – \u003Ccode>docker-compose\u003C/code>.&nbsp;\u003C/div>\u003C/div>\n\n\n\n\u003Ch2 id=\"obsluzhivanie-sistemy\">Обслуживание системы\u003C/h2>\n\n\n\n\u003Cp>Со временем на сервере накапливаются неиспользуемые образы, остановленные контейнеры, «висячие» тома и сети – это занимает место на диске.\u003C/p>\n\n\n\n\u003Cdiv class=\"wp-block-beget-code code-block\">\u003Cpre data-options=\"{&quot;mode&quot;:&quot;&quot;}\">\u003Ccode>docker system df                        # сколько места занимают образы, контейнеры, тома\ndocker system prune                     # удалить неиспользуемые данные (с подтверждением)\ndocker system prune -a --volumes        # полная очистка, включая тома и все неиспользуемые образы\u003C/code>\u003C/pre>\u003C/div>\n\n\n\n\u003Cp>Полную очистку стоит применять осторожно: флаг \u003Ccode>--volumes\u003C/code> удаляет данные из неиспользуемых анонимных томов. Начиная с Docker 23 именованные тома (например, \u003Ccode>db-data\u003C/code>) этой командой не затрагиваются – для их удаления нужен отдельный вызов \u003Ccode>docker volume prune -a\u003C/code>.\u003C/p>\n\n\n\n\u003Cp>Если возникнут вопросы, напишите нам, пожалуйста, тикет из панели управления аккаунта (раздел “\u003Ca href=\"https://cp.beget.com/support?utm_source=kb&amp;utm_medium=article&amp;utm_campaign=docker_commands&amp;utm_content=cp_support\">Помощь и поддержка\u003C/a>”), а если вы захотите обсудить основные команды Docker или наши продукты с коллегами по цеху и сотрудниками Beget – ждем вас в нашем\u003Ca href=\"https://t.me/beget_chat\"> сообществе\u003C/a> в Telegram.\u003C/p>\n",41,"2026-09-16T14:41:22.000Z","2026-09-16T15:12:00.000Z",{"count":16,"liked":17},0,false,{"route":19,"title":21,"tags":22,"breadcrumbs":91,"uuid":92,"parent_uuid":93,"default_page_path":27,"seo_metadata":94},{"language":6,"path":20},"/kb/how-to/other","Другое",[23,28,32,36,40,44,48,52,56,60,64,68,72,75,79,83,87],{"id":24,"title":25,"seo_metadata":26},"ddos","DDoS",{"title":27,"description":27,"header":27,"keywords":27},"",{"id":29,"title":30,"seo_metadata":31},"veb-analitika","Веб-аналитика",{"title":27,"description":27,"header":27,"keywords":27},{"id":33,"title":34,"seo_metadata":35},"reklama","Реклама",{"title":27,"description":27,"header":27,"keywords":27},{"id":37,"title":38,"seo_metadata":39},"php","PHP",{"title":27,"description":27,"header":27,"keywords":27},{"id":41,"title":42,"seo_metadata":43},"redis","Redis",{"title":27,"description":27,"header":27,"keywords":27},{"id":45,"title":46,"seo_metadata":47},"sajty","Сайты",{"title":27,"description":27,"header":27,"keywords":27},{"id":49,"title":50,"seo_metadata":51},"servisy","Сервисы",{"title":27,"description":27,"header":27,"keywords":27},{"id":53,"title":54,"seo_metadata":55},"backup","BackUp",{"title":27,"description":27,"header":27,"keywords":27},{"id":57,"title":58,"seo_metadata":59},"mysql","MySQL",{"title":27,"description":27,"header":27,"keywords":27},{"id":61,"title":62,"seo_metadata":63},"terminal","Терминал",{"title":27,"description":27,"header":27,"keywords":27},{"id":65,"title":66,"seo_metadata":67},"fajlovyj-menedzher","Файловый менеджер",{"title":27,"description":27,"header":27,"keywords":27},{"id":69,"title":70,"seo_metadata":71},"apache","Apache",{"title":27,"description":27,"header":27,"keywords":27},{"id":73,"title":73,"seo_metadata":74},"htaccess",{"title":27,"description":27,"header":27,"keywords":27},{"id":76,"title":77,"seo_metadata":78},"bitrix","Bitrix",{"title":27,"description":27,"header":27,"keywords":27},{"id":80,"title":81,"seo_metadata":82},"cms","CMS",{"title":27,"description":27,"header":27,"keywords":27},{"id":84,"title":85,"seo_metadata":86},"ssh","SSH",{"title":27,"description":27,"header":27,"keywords":27},{"id":88,"title":89,"seo_metadata":90},"diagnostika","Диагностика",{"title":27,"description":27,"header":27,"keywords":27},[],"990b6a3c-10fb-f492-f734-6ece33e9e4e3","fa9a1354-631a-4206-df34-291f0db8f42a",{"title":95,"description":96,"header":97,"keywords":98},"Другие вопросы. Полезные статьи – Beget","Полезные статьи о Других вопросах на сайте Beget","Другие вопросы. Полезные статьи","Beget, FAQ",{"src":27,"text":27},{"title":101,"description":102,"keywords":103},"Шпаргалка по основным командам Docker","➤ Шпаргалка по основным командам Docker⚡Список основных команд Docker для работы с платформой для контейнеризации","список основных команд для докер, команды docker compose, команды docker для работы",{"faq":105,"how_to":106,"product":106},[],null,{},[109,113,117,120,123,126,129,132,135,138,141,144,147,150,153,156,159,162,165,168,171],{"level":110,"name":111,"anchor":112},1,"Запуск, остановка и удаление контейнеров","zapusk-ostanovka-i-udalenie-konteynerov",{"level":114,"name":115,"anchor":116},2,"docker run","docker-run",{"level":114,"name":118,"anchor":119},"docker ps","docker-ps",{"level":114,"name":121,"anchor":122},"docker stop / docker start / docker restart","docker-stop-docker-start-docker-restart",{"level":114,"name":124,"anchor":125},"docker rm","docker-rm",{"level":110,"name":127,"anchor":128},"Работа с уже запущенным контейнером","rabota-s-uzhe-zapushchennym-konteynerom",{"level":114,"name":130,"anchor":131},"docker exec","docker-exec",{"level":114,"name":133,"anchor":134},"docker logs","docker-logs",{"level":114,"name":136,"anchor":137},"docker inspect","docker-inspect",{"level":114,"name":139,"anchor":140},"docker stats и docker top","docker-stats-i-docker-top",{"level":114,"name":142,"anchor":143},"docker cp","docker-cp",{"level":110,"name":145,"anchor":146},"Управление образами","upravlenie-obrazami",{"level":114,"name":148,"anchor":149},"docker pull","docker-pull",{"level":114,"name":151,"anchor":152},"docker build","docker-build",{"level":114,"name":154,"anchor":155},"docker images","docker-images",{"level":114,"name":157,"anchor":158},"docker tag и docker push","docker-tag-i-docker-push",{"level":114,"name":160,"anchor":161},"docker rmi","docker-rmi",{"level":110,"name":163,"anchor":164},"Тома и хранение данных","toma-i-hranenie-dannyh",{"level":110,"name":166,"anchor":167},"Сети Docker","seti-docker",{"level":110,"name":169,"anchor":170},"docker compose","docker-compose",{"level":110,"name":172,"anchor":173},"Обслуживание системы","obsluzhivanie-sistemy",[],[176,180],{"route":177,"title":179},{"language":6,"path":178},"/kb/how-to","Полезные статьи",{"route":181,"title":21},{"language":6,"path":20},[],[],[185,194,203],{"route":186,"uuid":188,"title":189,"excerpt":27,"content":27,"view_count":16,"published_at":27,"modified_at":27,"like":106,"category":106,"hero_image":106,"seo_metadata":106,"schema_org_metadata":106,"open_graph_metadata":106,"sections":190,"tags":191,"breadcrumbs":192,"images":193},{"language":6,"path":187},"/kb/how-to/other/komanda-cat-v-linux","e96fff10-fe20-52bc-3854-b06f6d82c31b","Команда cat в Linux – что делает, для чего нужна",[],[],[],[],{"route":195,"uuid":197,"title":198,"excerpt":27,"content":27,"view_count":16,"published_at":27,"modified_at":27,"like":106,"category":106,"hero_image":106,"seo_metadata":106,"schema_org_metadata":106,"open_graph_metadata":106,"sections":199,"tags":200,"breadcrumbs":201,"images":202},{"language":6,"path":196},"/kb/how-to/other/zashhita-sajta-ot-ddos-atak","9ee7c48c-6aa3-73f7-df91-c5e9165fe2ff","Защита сайта от DDoS-атак",[],[],[],[],{"route":204,"uuid":206,"title":207,"excerpt":27,"content":27,"view_count":16,"published_at":27,"modified_at":27,"like":106,"category":106,"hero_image":106,"seo_metadata":106,"schema_org_metadata":106,"open_graph_metadata":106,"sections":208,"tags":209,"breadcrumbs":210,"images":211},{"language":6,"path":205},"/kb/how-to/other/xdebug-debag-i-profilirovanie-koda-php-profiling","27d0ba41-9fa5-27cb-5dc9-e1441927847b","Дебаг и профилирование PHP-кода с помощью Xdebug",[],[],[],[],"popularity-desc"]