Полезные команды docker

Полезные команды docker

полезные команды docker

Потихоньку изучаю docker и связанные с ним тонкости. Решил набросать небольшую шпаргалку, чтобы в дальнейшем не стёрлось из памяти.

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

docker logs -f container_name - позволяет увидеть stdout (или сообщения выводимые в лог контейнера);

docker attach container_name - приконнектиться к запущенному контейнеру;

docker run -p 3000:80 -d container_name - p пробрасывает порт с localhost в контейнер (должен быть обозначен в expose dockerfile); d deattach mode запускает контейнер в фоне, позволяет работать с терминалом;

docker start -a container_name - запускает контейнер в attach mode;

docker run -p 3000:80 -d --rm container_name - --rm когда останавливаем контейнер он автоматически удаляется;

docker images - просмотр всех образов для контейнера;

docker image inspect image_name - отобразить информацию об образе;

docker ps -a - посмотреть список контейнеров всех (а), если просто ps - всех запущенных;

docker cp new_folder/. container_name:/container_folder - копирует всё (.) содержимое папки new_folder в контейнер и папку container_folder, если папки в контейнере нет она будет создана (cp копирует как в, так и из контейнера);

dcoker cp container_name:/container_folder/1.txt localhost_folder - скопирует папку container_folder и файл 1.txt в папку localhost_folder где был запущен терминал для docker;

docker start - относится к контейнерам (существующим);

docker run - относится к впервые запускаемым контейнерам или контейнерам из образов;

docker build . -t wanted_container_name:wanted_tag - позволяет задать имя (репозиторий) и тег для билдящихся образов --name задаёт имя для контейнера;

docker rmi - удалить образы, rm контейнеры, имя/имена указываем через пробел;

docker images prune -a - удалить все образы, то же самое с контейнерами, если хотим всё и сразу - system prune -a;

docker tag old_image_name:old_tag_name new_image_name:new_tag_name - позволит переименовать и тегануть по новой образ (создаётся копия старого образа, старый образ остаётся и его можно удалить если требуется);

docker pull - вытянуть образ из репозитория (по умолчанию dockerhub);

docker push - запушить образ в репозиторий (локальный образ должен иметь имя такое же как и в репозитории! Если оно другое нужно переименовать образ), пушится только часть слоёв с кодом если использовали конструкцию FROM;

docker login/logout - залогиниться/разлогиниться в репозитории;

VOLUMES

инструкция VOLUMES позволяет объявить (примапить) volume для обмена файлами, также можно использовать ключ запуска -v;

docker volume ls - покажет список анонимных томов, используемых докером;

если хотим binded volume в ключе -v указываем в кавычках (чтобы передать как строку для исключения пробелов и других спецсимволов) абсолютный путь на машине хоста и точку куда монтровать в контейнере "/home/desktop/some_path":/app;

если в конце папки монтирования в контейнере добавить ro - "/home/desktop/some_path:/app:ro" - докер будет иметь права только readonly;

docker volume inspect volume_name - позволит увидеть информацию о томе и месте где он лежит в контейнере;

ARG - аргументы для билда ARG ARG_NAME=ARG_OPTION и далее использовать в качестве переменной $ARG_OPTION для подстановки ТОЛЬКО в dockerfile, можно также указать при docker build --build-arg ARG_NAME=ARG_OPTION;

ENV (можем указывать через =, можем через пробел, для использоваия нужно указать $env_name) - параметры окружения, которые доступны внутри контейнера (кода и dockerfile) + доступны для docker run команды (docker run --env или -e ENV_NAME=ENV_PARAMETER), можно создать .env файл и туда записать ключ=значение для всех переменных (docker run --env-file ./.env если лежит в той же папке, что и код);

СЕТИ (из контейнера в интернет, из контейнера на локальную машину, между контейнерами)

Для вызовов в www ничего не нужно делать с контейнером, запросы вовне будут проходить без проблем (GET, POST и пр.);

host.docker.internal:9800 - специальный домен, который транслируется из контейнера и биндится с localhost;

запустить контейнер с БД (монго, например), docker container inspect mongo, узнать его IP из секции NETWORK и использовать в исходном коде, либо указывать вместо ip адреса имя контейнера в нашем случае mongo;

 

Это первая часть, как продвинусь дальше - опубликую вторую. Всем удачи! Кстати, все объекты docker редактирую через Notepad ++, привык.

Автор записи: Иван

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

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