1. При работе с docker часто возникает ситуация когда необходимо проверить какие порты открыты внутри контейнера. Это легко реализовать с помощью nsenter (в debian входит в пакет util-linux). Для использования nsenter нам необходимо узнать PID контейнера:
docker inspect -f '{{.State.Pid}}' container_name_or_id
# docker inspect -f '{{.State.Pid}}' 51f30d86a938
392240
После используя полученное значение мы можем просмотреть установленные соединения
nsenter -t 392240 -n netstat -n
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 10.0.0.1:43489 10.0.0.2:981 ESTABLISHED
tcp 79816 0 10.0.0.1:43489 10.0.0.2:981 ESTABLISHED
tcp 0 0 10.0.0.1:43489 10.0.0.2:981 ESTABLISHED
tcp 52368 0 10.0.0.1:43489 10.0.0.2:981 ESTABLISHED
tcp 0 4320 10.0.0.1:43489 10.0.0.2:981 ESTABLISHED
я предпочитаю использовать lsof, ниже пример его использования и сведение вышеперечисленных команд в одну строку:
watch nsenter -t `docker inspect -f '{{.State.Pid}}' container_name_or_id` -n lsof -i -n -P
2. Получение таблицы запущенных контейнеров в виде ID, Names, Ports:
docker ps -a --format "table {{.ID}}\t{{.Names}}\t{{.Ports}}"
усложним таблицу, добавим IP контейнеров:
docker ps -q | xargs -n 1 docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}} {{ .Name }}' | sed 's/ \// /'
3. удаление контейнеров, образов, томов
Остановка всех контейнеров:
docker stop $(docker ps -a -q)
Удаление контейнеров:
docker rm $(docker ps -a -q)
Удаление всех образов:
docker rmi $(docker images)
Удаление всех неиспользуемых образов:
docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
Удаление контейнеров в статусе “exited”
docker rm $(docker ps -qa --no-trunc --filter "status=exited")
Удаление неиспользуемых томов
docker volume ls -qf "dangling=true" | xargs docker volume rm
4. Часто несправедливо забывают про полезную команду docker update, она позволяет изменять следующие параметры контейнера --blkio-weight
--cpu-period
--cpu-quota
--cpu-rt-period
--cpu-rt-runtime --cpu-shares --cpus
--cpuset-cpus
--cpuset-mems
--kernel-memory
--memory --memory-reservation
--memory-swap
--pids-limit
--restart без пересоздания контейнера
пример использования
изменим параметр --restart, сперва смотрим текущее значение параметра:
docker inspect 51f30d86a938|grep -A 1 RestartPolicy
"RestartPolicy": {
"Name": "always",
меняем значение
docker update --restart=no 51f30d86a938
проверяем
docker inspect 51f30d86a938|grep -A 1 RestartPolicy
"RestartPolicy": {
"Name": "no",
- Войдите или зарегистрируйтесь, чтобы оставлять комментарии