Команды docker
Все команды docker надо выполнять от root пользователя или через sudo
Через символ #написан комментарий
Проверка статуса докера и контейнеров:
sudo service docker status #статус службы докера (смотрим запущен ли докер)
docker ps #покажет запущенные докер-контейнеры
docker ps -a #покажет все докер-контейнеры
Удаление контейнеров:
docker rm “Names or ID” #удаляет контейнер докера (можно вписать первые буквы и табом дописать остальные)
docker rm $(docker ps -a -q) #удаляет все контейнеры докера -q передает их ID
Просмотр и удаление образов:
docker images #показывает имеющиеся образы (скачанные)
docker rmi “Names or ID” #удаляет образ докера (можно вписать первые буквы и табом дописать остальные)
Создание/скачивание и запуск контейнеров:
sudo docker run “NameImage” #создать и запустить контейнер
sudo docker run —rm “NameImage” #создать и запустить контейнер, удалив при выходе
sudo docker run –-name NameCont “NameImage” #создать и запустить контейнер, с именем NameCont
sudo docker run –d “NameImage” #создать и запустить контейнер в фоновом режиме
sudo docker run -d —rm –-name NameCont “NameImage” #создать и запустить контейнер в фоновом режиме, с именем NameCont и удалить после остановки
Примеры на запуск контейнеров:
sudo docker run hello-world #скачать (если нет) и запустить контейнер hello-world
sudo docker run -d hello-world #скачать (если нет) и запустить контейнер hello-world в detached mode (в фоновом режиме)
Часть контейнеров после запуска запускает bash например:
sudo docker run ubuntu echo “Hello from Docker” #запускаем ubuntu и bash c echo “Hello from Docker”
Запуск и остановка контейнера:
Для создания и запуска контейнера можно использовать команду run, но при повторном запуске она создаст еще 1 контейнер (или выдаст ошибку если совпадут имена), разумнее запускать ранее созданный контейнер.
(примечание: При команде start новый контейнер не создается)
docker start “ID” #запускает ранее сформированный контейнер докера (можно вписать первые буквы id).
docker stop “Names or ID” #останавливает контейнер докера (можно вписать первые буквы id).
docker pause “Names or ID” #останавливает работу контейнера
docker unpause “Names or ID” #восстанавливает работу контейнера
docker kill “Names or ID” #убивает процесс контейнера (удобно если pause/stop очень длительные)
Скачать docker образ требуемой версии:
docker pull alpine:3.15.6 #скачать alpine версии 3.15.6
Без указания версии скачивается и/или запускается последняя.
Версии можно посмотреть на https://hub.docker.com (подменю теги) например https://hub.docker.com/_/alpine/tags
Сервисные команды Docker:
docker inspect “ID” #выводит подробную информацию о том как собирался и какие настройки у контейнера
docker inspect “ID” | grep IP #можно отфильтровать например только информацию по IP
docker stats “ID” #получает информацию о затрачиваемых ресурсах на процесс
docker stats $(docker ps -q) #получает информацию о затрачиваемых ресурсах на каждый процесс
docker logs “ID” #показывает логи контейнера
docker logs -f “ID” #показывает логи контейнера в реальном времени
Можно работать внутри docker-контейнера как-будто это обычная операционная система:
docker exec -it “Names or ID” /bin/bash #Запустить /bin/bash внутри докер-контейнера и работать в нем в интерактивном режиме (-it), можно выполнить для запущенного контейнера
Примечание: Данные НЕ сохраняются!!! т.е. при перезапуске контейнера будет потеряно все созданное – надо использовать volumes
Выйти из контейнера можно командой «exit» или «ctrl + d»
Быстро удалить все файлы, связанные с докерами и очистить место:
docker system prune -a —volumes #удалить все файлы докера (образы и остановленные контейнеры) + volumes
docker volume rm $(docker volume ls -f dangling=true -q) # удалить контейнеры (иногда они не очищаются)
Работа с портами:
docker run -p 80:80 “Names or ID” #Проброс портов внешний:внутренний
docker run -p 80:80 -p 8080:8080 “Names or ID” #Проброс портов внешний:внутренний для 2х портов
docker run -P “Names or ID” #Проброс случайных портов внешний:внутренний (если указаны в EXPOSE -см. dockerfile )
Напоминалки:
sudo netstat -tulpen – посмотреть открытые порты
ip a – узнать ip адреса
Узнать необходимые порты для докер-контейнера можно внизу страницы с описанием контейнера
Совершенно верно! Идея отличная, согласен с Вами.