Docker: работа с контейнерами
Mar 20, 2017 13:54 · 525 words · 3 minute read
Ранее мы рассматривали процесс установки Docker в операционной системе Ubuntu 16.04 и для проверки работоспособности запускали тестовый контейнер hello-world — это был очень простой пример контейнера, который запускался, выводил сообщение на экран и завершал работу.
Как правило, контейнеры выполняют более полезные действия, ведь они очень похожи на виртуальные машины (но менее требовательны к ресурсам). Давайте разберемся с запуском контейнеров и рассмотрим полезные команды для работы с ними!
Проверить сколько места на жестком диске занимает Docker:
docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 22 8 2.73 GB 691.5 MB (25%)
Containers 14 6 41.55 kB 41.55 kB (100%)
Local Volumes 37 10 349.6 kB 230.5 kB (65%)
Очистить неиспользуемые данные (будьте внимательны с использованием данной команды):
docker system prune
Для поиска образов в реестрах используется команда search
, например:
docker search debian
Загрузить образ можно с помощью команды pull
:
docker pull itscaro/debian-ssh
Просмотреть список уже загруженных образов можно так:
docker images
или так:
docker image ls -a
Для удаления образа используется команда rmi
с указанием имени и версии образа:
docker rmi itscaro/debian-ssh:latest
Для удаления всех неиспользуемых образов введите:
docker image prune
Для запуска контейнера и выполнения внутри него команды используется:
docker container run -it itscaro/debian-ssh /bin/bash
или
docker run -it itscaro/debian-ssh bash
Примечание. В данном примере для запуска контейнера используется образ itscaro/debian-ssh.
Подключиться к уже запущенному контейнеру и запустить shell
:
docker container exec -it [CONTAINER ID] /bin/bash
или
docker exec -it [CONTAINER ID] bash
Список запущенных контейнеров можно увидеть так:
docker ps
или так:
docker container ls
Примечание. Следует обратить внимание на первую колонку (CONTAINER ID
), в которой указаны идентификаторы контейнеров — они часто используются для управления Docker-контейнерами.
Список запущенных процессов внутри контейнера смотрим так:
docker top [CONTAINER ID]
или так:
docker container top [CONTAINER ID]
Просмотреть логи контейнера можно так:
docker logs [CONTAINER ID]
или так:
docker container logs [CONTAINER ID]
или использовать ключ -f
(аналог tail -f
в linux):
docker container logs -f [CONTAINER ID]
Для остановки контейнера используется команда stop
, например:
docker stop [CONTAINER ID]
или
docker container stop [CONTAINER ID]
Для остановки всех запущенных контейнеров используйте такую команду:
docker container stop $(docker container ls -q)
Удалить остановленный контейнер можно так:
docker rm [CONTAINER ID]
Удалить все остановленные контейнеры можно командой:
docker container prune
Просмотреть историю образа, который использует контейнер:
docker image history --no-trunc=true $(docker container inspect -f '{{.Image}}' [CONTAINER ID])
Просмотреть изменения файловой системы контейнера по сравнению с оригинальным образом:
docker container diff [CONTAINER ID]
Выполнить резервное копирование каталога с данными из контейнера в хост-машину:
docker container run --rm --volumes-from [SOURCE_CONTAINER]:ro -v $(pwd):/backup alpine \
tar cvf /backup/backup_$(date +%Y-%m-%d_%H-%M).tar /data
Восстановить данные из резервной копии на хост-машине внутрь контейнера:
docker container run --rm --volumes-from [TARGET_CONTAINER]:ro -v $(pwd):/backup alpine \
tar xvf /backup/backup.tar
Вывод имени хранилища (volume
), которое использует контейнер:
docker container inspect -f '{{ range .Mounts }}{{ .Name }} {{ end }}' [CONTAINER ID]
Вывод имени хранилища (volume
), которое использует контейнер и точек монтирования:
docker container inspect -f '{{ range .Mounts }}{{ .Name }}:{{ .Destination }} {{ end }}' [CONTAINER ID]
Получить IP-адрес контейнера:
docker container inspect -f '{{ .NetworkSettings.IPAddress }}' [CONTAINER ID]
Еще больше полезных команд и примеров работы с docker-контейнерами можно найти на StackOverflow или в официальной документации Docker.