- Docker посмотреть запущенные контейнеры, запустить или остановить контейнеры
- Список запущенных Docker контейнеров
- Как запустить Docker контейнер
- Список контейнеров Docker
- Синтаксис команды docker ps
- Запущенные контейнеры Docker
- Выводы
- Шпаргалка по Docker
- Удаление образа
- Загрузка репозитория в tar (из файла или стандартного ввода)
- Сохранение образа в tar-архив
- Просмотр истории образа
- Создание образа из контейнера
- Тегирование образа
- Push (загрузка в реестр) образа
- РАБОТА С ТОМАМИ
- Немного теории:
- Создание тома
- Монтируем с хоста в контейнер
- Монтируем с контейнера на хост
- Посмотреть настройки тома
- Вывести список всех томов с их названиями.
- Удаление volumes по названию
- СЕТИ
- Создание сети
- Удаление сети
- Список сетей
- Получение информации о сети
- Подключение работающего контейнера к сети
- Подключение контейнера к сети при его запуске
- Отключение контейнера от сети
- ЧИСТКА МУСОРА
- Показать образы и контейнеры
- Удаление образов (images)
- Удаление контейнеров (containers)
- Удаление томов (volumes)
- Удаление сетей (networks)
- Удаление всех неиспользуемых объектов
Docker посмотреть запущенные контейнеры, запустить или остановить контейнеры
Docker — это популярный инструмент виртуализации, который копирует конкретную операционную среду поверх основной ОС. Каждая среда называется контейнером. Управление контейнерами необходимо для работы в Docker.
Контейнер использует образ предварительно сконфигурированной операционной системы, оптимизированный для конкретной задачи. Когда образ Docker запущен, он существует в контейнере. Например, несколько контейнеров могут одновременно запускать один и тот же образ в одной операционной системе.
Список запущенных Docker контейнеров
Чтобы вывести список всех запущенных контейнеров Docker, введите в окне терминала следующее:
Как вы можете видеть, изображение выше указывает на отсутствие запущенных контейнеров.
Чтобы вывести список всех работающих и остановленных контейнеров, добавьте параметр –a :
Для вывода списка контейнеров по их идентификатору используйте параметр –aq :
Чтобы просмотреть общий размер файла каждого контейнера, используйте параметр –s :
Чтобы просмотреть список последних созданных контейнеров, используйте параметр –l :
Команда ps предоставляет несколько столбцов информации:
- Container ID — Уникальный буквенно-цифровой номер для каждого контейнера
- Image — Образ базовой операционной системы, на котором основан контейнер
- Command — команда, запустившая контейнер
- Created — Как давно был создан контейнер
- Status — Время работы или простои
- Ports — Указывает любые порты, перенаправляемые в контейнер для работы в сети.
- Name — Памятное имя, присвоенное программным обеспечением Docker
Как запустить Docker контейнер
Основная команда для запуска одного или нескольких остановленных контейнеров Docker docker start :
docker start [options] container_id
Вы можете указать контейнер, используя его имя или идентификатор (длинный или короткий).
Чтобы создать новый контейнер из образа и запустить его, используйте docker run :
docker run [options] image [command] [argument]
Если вы не определите имя для вновь созданного контейнера, он создаст случайное имя строки. Чтобы определить имя контейнера, используйте параметр ––name :
Список контейнеров Docker
Продолжение серии статей про Docker. В прошлой мы разбирали, как создать контейнер на основе образа. Сегодня же хочу более подробно рассказать, как посмотреть список контейнеров, чтобы понять, какие из них запущены, какие упали, а какие вообще следовало бы удалить, чтобы они не занимали места на диске.
Для просмотра списка контейнеров используется команда docker ps. Она позволяет смотреть как запущенные контейнеры Docker, так и все контейнеры, которые есть в системе.
Синтаксис команды docker ps
В синтаксисе команды вообще нет ничего сложного:
$ docker ps опции
- —all , -a — вывести все контейнеры, и запущенные и не запущенные;
- —filter , -f — фильтровать контейнеры при выводе;
- —format — более красивый вывод списка контейнеров;
- —last , -n — показать только N последних созданных контейнеров;
- —latest , -l — вывести только последний контейнер;
- —no-trunc — не обрезать вывод программы;
- —quiet , -q — отображать только цифровые идентификаторы контейнеров;
- —size , -s — отображать размер контейнера.
А теперь разберёмся более подробно, как посмотреть контейнеры Docker.
Запущенные контейнеры Docker
По умолчанию docker ps выводит только запущенные контейнеры и при этом обрезает слишком длинные поля:
Чтобы вывести контейнеры, не обрезая информацию, используйте параметр —no-trunc:
Для того чтобы посмотреть не только запущенные контейнеры, а все, используйте опцию -a:
Вы можете фильтровать контейнеры по имени, например, вывести только те, в имени которых содержится Ubuntu1804:
docker ps —filter name=Ubuntu1804
Есть и другие фильтры, но я не буду здесь их описывать, если они вам нужны, посмотрите официальную документацию. Для того чтобы вывести в список контейнеров Docker дополнительно размер контейнера, используйте опцию -s:
Команда показывает два размера. Первый из них — это объём, занимаемый записываемой частью контейнера. Второй размер -виртуальный, это общее пространство, занимаемое и записываемой частью контейнера, и доступными только для чтения данными образа.
Опция -l может использоваться для просмотра только последнего созданного образа. Это может быть полезно, например, чтобы узнать его идентификатор:
Если вас интересует, где хранятся контейнеры docker , то тут вам поможет команда docker inspect. Она позволяет смотреть подробную информацию про контейнер. У контейнера есть несколько папок для различных целей, давайте посмотрим MergedDir:
С тем же успехом вы можете смотреть LogPath или другие директории контейреа.
Выводы
Из этой статьи вы узнали, как выполнить просмотр контейнеров Docker. Это довольно простая задача по сравнению с созданием контейнера, но тоже не менее важная.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Шпаргалка по Docker
(файл опциями сборки образа), учитывая что мы находимся в папке где лежит этот файл. Через ключ -t назначаем имя нашему образу. Точка в конце означает что Dockerfile лежит в текущей директории.
docker build github.com/creack/docker-firefox
docker build -t eon/infinite .
docker build -f myOtherDockerfile .
curl example.com/remote/Dockerfile | docker build -f - .
Удаление образа
Загрузка репозитория в tar (из файла или стандартного ввода)
docker load --input ubuntu.tar
Сохранение образа в tar-архив
docker save busybox > ubuntu.tar
Просмотр истории образа
Создание образа из контейнера
Тегирование образа
docker tag nginx eon01/nginx
Push (загрузка в реестр) образа
РАБОТА С ТОМАМИ
Немного теории:
- Если монтируем пустой том с хоста, а в контейнере уже есть файлы, то они скопируются в том
- Если монтируем с хоста том с файлами, то они окажутся в контейнере
- Если мы монтируем не пустой том с хоста, а в контейнере по этому пути уже есть файлы, то они будут скрыты
- Можно монтировать с хоста любые файлы. В том числе и служебные. Например сокет docker. Что бы получился docker-in-docker (dind)
Создание тома
Монтируем с хоста в контейнер
docker run --mount source=,target=/path/to/folder/in/container -d
Монтируем с контейнера на хост
docker run --mount type=bind,source=/host/folder,target=/container/folder -d
Посмотреть настройки тома
Вывести список всех томов с их названиями.
Удаление volumes по названию
СЕТИ
Создание сети
docker network create -d overlay MyOverlayNetwork
docker network create -d bridge MyBridgeNetwork
docker network create -d overlay \ --subnet=192.168.0.0/16 \ --subnet=192.170.0.0/16 \ --gateway=192.168.0.100 \ --gateway=192.170.0.100 \ --ip-range=192.168.1.0/24 \ --aux-address="my-router=192.168.1.5" --aux-address="my-switch=192.168.1.6" \ --aux-address="my-printer=192.170.1.5" --aux-address="my-nas=192.170.1.6" \ MyOverlayNetwork
Удаление сети
docker network rm MyOverlayNetwork
Список сетей
Получение информации о сети
docker network inspect MyOverlayNetwork
Подключение работающего контейнера к сети
docker network connect MyOverlayNetwork nginx
Подключение контейнера к сети при его запуске
docker run -it -d --network=MyOverlayNetwork nginx
Отключение контейнера от сети
docker network disconnect MyOverlayNetwork nginx
ЧИСТКА МУСОРА
Показать образы и контейнеры
# Вывести все образы (images) docker images -a # Вывести все неиспользуемые образы docker images -f dangling=true # Выведет список запущенных контейнеров, если добавить ключ -a, выведет список всех контейнеров. docker ps
Удаление образов (images)
# Для удаления используется команда docker rmi с добавлением ИД или тега, например: # с ключом --force удалит контейнер и образ docker rmi abb461727af5 # Удаление всех образов docker rmi $(docker images -a -q) # Удаление всех неиспользуемых образов docker images prune docker rmi $(docker images -f dangling=true -q) # Удаление всех неиспользуемых (не связанных с контейнерами) образов: # Если добавить к команде ключ -a, то произойдет удаление всех остановленных контейнеров и неиспользуемых образов. docker system prune # Удаление всех образов без тегов docker rmi -f $(docker images | grep "^" | awk "") # Удаление всех образов docker rmi $(docker images -a -q)
Удаление контейнеров (containers)
# Для удаления контейнера, его необходимо сначала остановить командой ниже с указанием ID или названия контейнера. docker stop CONTAINER_ID # Для удаления контейнера используется команда docker rm с добавлением ИД или названия docker rm CONTAINER_ID # Удаление контейнера и его тома (volume) docker rm -v CONTAINER_ID # Удаление всех контейнеров со статусом exited docker rm $(docker ps -a -f status=exited -q) # Удаление всех остановленных контейнеров docker container prune docker rm `docker ps -a -q` # Удаление контейнеров, остановленных более суток назад docker container prune --filter "until=24h" # Остановка и удаление всех контейнеров docker stop $(docker ps -a -q) && docker rm $(docker ps -a -q)
Удаление томов (volumes)
#Вывести список всех томов с их названиями. docker volume ls # Удаление volumes по названию docker rm # Вывести список всех томов не связанных с контейнерами docker volume ls -f dangling=true # Удаление томов (volumes) несвязанных с контейнерами docker volume prune docker volume rm $(docker volume ls -f dangling=true -q) # Удаление неиспользуемых (dangling) томов по фильтру docker volume prune --filter "label!=keep"
Удаление сетей (networks)
# Вывести список всех сетей с их ИД и названиями. docker network ls # Для удаления используется команда с добавлением ИД или названия: docker network rm NETWORK_ID # Удалит все сети не используемые хотя бы одним контейнером. docker network prune
Удаление всех неиспользуемых объектов
docker system prune # По умолчанию для Docker 17.06.1+ тома не удаляются. Чтобы удалились и они тоже: docker system prune --volumes