В прошлой статье мы начали знакомство с командами Docker. В этой статье углубимся в манипуляции с контейнерами и образами.
- docker version - узнать версию Docker
- docker images - посмотреть все образы
- docker pull - обновить образ (или создать новый)
- docker ps -a - посмотреть список всех контейнеров (даже не запущенных)
- docker run - запустить контейнер
- docker run --help - посмотреть опции запуска
- docker ps - посмотреть список запущенных контейнеров
- docker run -it (название образа) - запуск контейнера с присвоением имени
- .exit - выйти из интерактивного режима
- node -v - узнать версию
- docker rm (id контейнера) - удалить контейнер
- docker rm (id контейнера) (id контейнера) - удалить несколько контейнеров
- docker container prune - удалить все контейнеры
- docker start (id контейнера) - стартануть контейнер
- docker stop (id контейнера) - остановить контейнер
- docker run -d (название образа) - запуск образа в детач режиме
- docker attach (id контейнера) - выйти из интерактивного режима
- docker rmi node - удалить образ
- docker build -t (название образа) . - собрать образ в текущей директории
- docker run --name (название контейнера) (название образа) - присвоить имя контейнеру
- docker logs (id/name контейнера) - посмотреть логи контейнера
- docker bild -t (название образа):version - добавить тег образу
- docker login - авторизация в DockerHub
- docker tag (старое название образа) (новое название) - смена названия образа, посредством создания нового
- docker pull tennyy/postman - скачивание своего образа с DockerHub
- docker logout - выйти из авторизованного пользователя
- docker cp (название файла) (название контейнера):(путь в контейнере) - добавить файлы в контейнер
- docker commit (название контейнера) (название комита) - зафиксировать изменения посредством создания нового образа
По мимо удаления и запуска контейнеров через команду run, мы можем явно их запускать.
docker start (id контейнера)
После использования мы можем его остановить
docker stop (id контейнера)
После запуска контейнера мы можем войти в него с помощью команды -it. Если мы просто запустим контейнер с помощью команды docker run и укажем название образа, то контейнер запустится без входа. Однако иногда нам нужно явно указать, что мы хотим войти в контейнер.
docker run -d (название образа)
Или же бывают случаи, когда у нас уже запущен контейнер и мы хотим зайти внутрь него, нам поможет в этом следующая команда
docker attach (id контейнера)
Теперь поговорим об образах. Мы можем создавать образы, и им будет автоматически присваиваться случайное имя. Или же мы можем дать образу собственное имя.
Как мы видим у нас сгенерировалось имя нашему образу
Мы можем запускать, а можем удалить образ по его имени. Но только после удаления контейнера
docker rmi node
Как видим, теперь у нас нет ни образов ни контейнеров
Мы уже умеем создавать образы с помощью команды pull. Но можно также создавать создавать свои образы. Создадим сначала простой Dockerfile с небольшим наполнением
FROM postman/newman:alpine - Это образ от которого наследуемся, он также находится на Docker Hub.
RUN npm install -g newman-reporter-htmlextra - это установка нужного отчёта для newman
RUN npm install -g newman-reporter-teamcity - это установка нужных настроек для TeamCity (Понадобиться в дальнейшем, если не планируете внедрять тесты в TeamCity, то настройка не нужна)
Этот образ нужен для запуска тестов postman, рассказывал об этом в этих статьях
Чтобы нам запустить сборку своего образа нужно использовать следующую команду
docker build .
Точка обозначает, что Dockerfile находится в текущей директории. Мы же хотим дать своё название нашему образу
docker build -t postman .
После чего ваш образ соберётся
Мы можем запускать наш образ и дать образ контейнеру, чтобы точно знать, с каким именем наш контейнер. В сокращении это выглядит так
docker run --name postmanrun postman
Да он нам выдаст ошибку, но это связанно с самим образом, в команде проблем нет
Как мы видим у нас есть образ с именем postman и контейнер с именем postmanrun
Мы можем запустить наш контейнер рабочей командой
docker run -v %cd%:/etc/newman/ --name post postman run dzen.json --environment env.json --insecure --reporters cli,htmlextra --reporter-htmlextra-export "new_report.html"
Контейнер запустился и у него теперь название которое мы указали в запросе
Мы можем посмотреть что происходило в этом контейнере
docker logs (id/name контейнера)
Вы правы, после запуска у нас каждый раз создаётся новый контейнер. В некоторых случаях нам нужен только запуск контейнера, а после его завершения мы можем удалить контейнер.
docker run --rm --name post postman
Снова запускаем нашу команду, только уже с rm и проверяем список контейнеров
Бывает так, что нам нужно отличать несколько образов, можно отличать по имени или же по тегу
docker bild -t Name:version
Как видим, теперь у нас несколько версий образов
Если у вас есть вопросы или вы просто хотите стать частью команды тестировщиков, то переходи в ТГ канал, где можем пообщаться с единомышленниками и найти много интересных и полезных знаний!Также если вам нужна индивидуальная консультация, менторство и помощь в создании проекта пишите в ТГ канал!