Удаление образов, контейнеров, томов и сети Docker
Docker — инструмент для создания приложений с использованием контейнеров. При инициализации Docker появляются расходные файлы и объекты, которые необходимо очищать.
Вы можете удалять появившиеся структуры руками, но лучше оптимизировать эту задачу через командную строку.
Удаление контейнеров
Перейдите во вкладку «Containers/Apps» (веб Docker Desktop). Укажите, что нужно сделать с элементами и примените:
Также, способ, использую консоль. Команда для удаления — docker container rm. Синтаксис:
Параметры — (—force/-f — удаление контейнера в принудительном порядке), (—link/-l — удалить связь между элементами), (—volume/-v — удалить неопределенные тома, которые связаны с контейнером). ID получите с помощью команды — docker ps.
Параметры:
—-all или -a: выводим все работающие контейнеры
—filter или -f: фильтрация флагов
—format: формат вывода
—last или -n: вывод информации о последних n контейнерах
—latest или -l: вывод информации о последнем контейнере
—no-trunc: полный вывод
—quiet или -q: отдельный вывод идентификационного номера
—size или -s: вывод размера
С этими параметрами можно гибко взаимодействовать с группой контейнеров или отдельными единицами. Например, чтобы создать списки контейнеров на удаление — docker ps -a -f status=created -f status=exited, чтобы удалить — docker container rm $(docker ps -a -f status=created -f status=exited -q). Перед удалением лучше остановить предполагаемые контейнеры. Чтобы удалить все контейнеры:
docker stop $(docker ps -a -q)
docker container rm $(docker ps -a -q)
Удаление образов
Перейдите во вкладку «Images».
Чтобы удалить, найдите «Clean up…», выберите образы для удаления. Если образ в работе, просто удалить его не получится.
—force или -f: удалить образ в принудительном порядке
—no-prune: не удалять непомеченные
Узнать ID образа:
docker images [параметры] [REPOSITORY:[TAG]]
Параметры:
—all или -a: выводим все образы. По умолчанию промежуточные будут скрыты;
—digests: выводим дайджесты;
—filter или -f: фильтр по флагам;
—format: формат вывода;
—no-trunc: не обрезать вывод;
—quiet или -q: выводим только идентификаторы;
Запросите нужный список образов и используйте его как параметр для команды docker rmi. В качестве примера избавимся от образов, не привязанных к контейнерам. Для этого воспользуемся флагом dangling=true — docker images –filter dangling=true. Чтобы удалить список — docker rmi $(docker images –filter dangling=true -q). Чтобы удалить неработающие образы — команда docker image prune.
Удаление томов
Том — это файловая система, которая находится вне контейнеров, размещенная на хост-машине. Если вы хотите освободить пространство на диске от них, перейдите в раздел «Volumes», в правом верхнем углу выберите:
Чтобы удалить тома: docker volume rm [параметры] [имена томов]
Параметров у этой команды довольно мало, возможно принудительное удаление тома. Удалить можно только те тома, что не связаны с работающими контейнерами.
docker volume ls [параметры] — команда для определения имени тома. Параметры:
—filter или -f: фильтр по флагам
—format: формат вывода
—quiet или -q: выводим только имена
Чтобы стереть тома, несвязанные с контейнерами — docker volume ls -f dangling=true. Команда для запуска удаления — docker volume rm $(docker volume ls -f dangling=true -q). Но можно обойтись и другой командой для удаления таких томов: docker volume prune.
Удалить сети
Чтобы удалить сети в Docker, используйте команду «docker network rm» со следующим синтаксисом:
docker network rm [Сетевые имена/идентификаторы]
Эта команда не имеет параметров. Вы можете передавать как имена, так и идентификаторы. Чтобы узнать имена и идентификаторы сетей, используйте «docker network ls»:
docker network ls [параметры]
Есть 4 параметра:
—filter или -f: фильтровать по флагам
—format: выходной формат
—no-trunc: не обрезать вывод
—quiet или -q: показать только идентификаторы
Перед удалением сети необходимо удалить объекты, которые ее используют. Чтобы узнать, какие контейнеры используют конкретную сеть, используйте следующую команду:
docker ps -f network=[ID сети]
После этого можно приступать к удалению сети. Например, чтобы удалить сети со значением driver=bridge:
docker network ls -f driver=bridge
docker network rm $(docker network ls -f driver=bridge -q)
Очистка Docker от всех объектов
Сначала остановить и удалить все контейнеры:
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
Удалить все образы:
docker rmi $(docker images -a -q)
Удалить все тома:
docker volume rm $(docker volume ls -a -q)
Удалить все сети:
docker network rm $(docker network ls -a -q)
Как установить Docker на Ubuntu 22.04
Docker — программное обеспечение с открытым исходным кодом. Docker используют для создания контейнеров (виртуализация). Контейнеры меньше расходуют вычислительные ресурсы, в отличии виртуальных машин.
Системные требования
Docker может быть запущен совместно с большим количеством системных архитектур. Требования к аппаратной оболочке зависят от задач, которые будут выполнятся. Поэтому, настоятельно рекомендуем перед использованием Docker провести анализ, чтобы выявить необходимость развертки контейнеров.
Установка Docker на Ubuntu 22.04
Обновите пакеты
sudo apt update
Установите специальные пакеты
curl
software-properties-common
ca-certificates
apt-transport-https
Команда для установки — sudo apt install curl software-properties-common ca-certificates apt-transport-https -y
Команда автоматически примет все необходимые соглашения
Проконтролируйте, установка зависимостей должна происходить в подготовленной среде (репозитории).
Установите Docker
sudo apt install docker-ce -y
Проверьте успешность установки:
sudo systemctl status docker
Если успешно — статус Active(Running)
Docker Compose — Ubuntu 22.04
Docker Compose — инструмент Docker. С помощью него возможно управлять множеством контейнеров. Оркестрация позволяет образовать большое количество контейнеров в единую инфраструктуру. Диспетчеризация (управление) производится через YAML-файл, содержащий параметры для контейнеров и программных оболочек.
Установка через Git
sudo apt-get install git
Узнать версию Git
git —version
Чтобы перенести репозиторий, перейдите на веб-страницу Docker Compose на GitHub и скопируйте выделенную на картинке ссылку:
Как только файлы загрузятся, установите права на использование:
sudo chmod +x /usr/local/bin/docker-compose
Apt-get установка
Используя встроенный пакетный менеджер, установить Docker Compose можете через команду:
sudo apt-get install docker-compose
Docker — установка и использование
Введение
Docker — инструмент управления процессами приложений в контейнерах. Контейнеры позволяют запускать приложения в изолированной среде и схожи с виртуальными машинами, но изолированные среды контейнеров более мобильные. Также, контейнеры более зависимые от действий оператора хоста.
Для установки и использования Docker вам понадобятся:
Настроенный сервер Ubuntu 20.04
Учетная запись в Docker Hub, если вы хотите передавать созданные образы
Шаг 1
Установите Docker из официального репозитория Ubuntu. Чтобы установить последнюю версию, добавьте ключ GPG из Docker, потом установите пакет.
По умолчанию команда docker может быть запущена только пользователем root или пользователем в группе docker, которая автоматически создается в процессе установки Docker.Если вы попытаетесь запустить команду docker без префикса sudo или не находясь в группе docker, вы получите такой вывод:
Output
docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?.
See 'docker run --help'.
Если вы не хотите вводить sudo при каждом запуске команды docker, добавьте свое имя пользователя в группу docker:
sudo usermod -aG docker ${USER}
Чтобы применить новую конфигурацию в группе, выйдите из сервера и снова войдите или введите следующее:
su - ${USER}
Вам будет предложено ввести пароль пользователя, чтобы продолжить.
Подтвердите, что ваш пользователь теперь добавлен в группу докеров, набрав:
groups
Если вам нужно добавить пользователя в группу docker, под которым вы не вошли в систему, объявите это имя пользователя самостоятельно, используя:
sudo usermod -aG docker username
В оставшейся части этой статьи предполагается, что вы запускаете команду docker от имени пользователя в группе docker. Если вы решите этого не делать, добавьте к командам sudo.
Далее давайте рассмотрим команду docker.
Шаг 3
Использование докера заключается в передаче ему цепочки параметров и команд, за которыми следуют аргументы. Синтаксис принимает такую форму:
docker [option] [command] [arguments]
Чтобы увидеть весь список команд:
docker
Output
attach Attach local standard input, output, and error streams to a running container
build Build an image from a Dockerfile
commit Create a new image from a container's changes
cp Copy files/folders between a container and the local filesystem
create Create a new container
diff Inspect changes to files or directories on a container's filesystem
events Get real time events from the server
exec Run a command in a running container
export Export a container's filesystem as a tar archive
history Show the history of an image
images List images
import Import the contents from a tarball to create a filesystem image
info Display system-wide information
inspect Return low-level information on Docker objects
kill Kill one or more running containers
load Load an image from a tar archive or STDIN
login Log in to a Docker registry
logout Log out from a Docker registry
logs Fetch the logs of a container
pause Pause all processes within one or more containers
port List port mappings or a specific mapping for the container
ps List containers
pull Pull an image or a repository from a registry
push Push an image or a repository to a registry
rename Rename a container
restart Restart one or more containers
rm Remove one or more containers
rmi Remove one or more images
run Run a command in a new container
save Save one or more images to a tar archive (streamed to STDOUT by default)
search Search the Docker Hub for images
start Start one or more stopped containers
stats Display a live stream of container(s) resource usage statistics
stop Stop one or more running containers
tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
top Display the running processes of a container
unpause Unpause all processes within one or more containers
update Update configuration of one or more containers
version Show the Docker version information
wait Block until one or more containers stop, then print their exit codes
Шаг 4
Контейнеры Docker создаются из образов Docker. По умолчанию Docker извлекает эти образы из Docker Hub, реестра Docker, которым управляет Docker, компания, стоящая за проектом Docker. Любой может разместить свои образы Docker на Docker Hub, поэтому образы большинства приложений и дистрибутивов Linux, которые вам понадобятся, будут размещены там.
Чтобы проверить, можете ли вы получить доступ и загрузить образы из Docker Hub, введите:
docker run hello-world
Output
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:6a65f928fb91fcfbc963f7aa6d57c8eeb426ad9a20c7ee045538ef34847f44f1
Status: Downloaded newer image for hello-world:latestHello from Docker!
This message shows that your installation appears to be working correctly.
Первоначально Docker не смог найти образ hello-world локально, поэтому он загрузил образ из Docker Hub, который является репозиторием по умолчанию. После загрузки образа Docker создал контейнер из образа, и приложение внутри контейнера запустилось, отобразив сообщение. В официальном столбце OK указывает на образ, созданный и поддерживаемый компанией, стоящей за проектом. После того, как вы определили образ, который хотите использовать, вы можете загрузить его на свой компьютер с помощью подкоманды pull.
Выполните следующую команду, чтобы загрузить официальный образ Ubuntu на свой компьютер:
docker pull ubuntu
После загрузки образа вы можете запустить контейнер, используя загруженный образ с помощью подкоманды run. Как вы видели в примере с hello-world, если образ не был загружен, когда docker выполняется с командой run, клиент Docker сначала загружает образ, а затем запускает контейнер, используя его.
Шаг 5
Контейнер hello-world, который вы запустили на предыдущем шаге, является примером контейнера, который запускается и завершает работу после отправки тестового сообщения. Контейнеры могут быть гораздо полезнее, и они могут быть интерактивными. Ведь они похожи на виртуальные машины, только более ресурсоемкие.
В качестве примера давайте запустим контейнер, используя последний образ Ubuntu. Комбинация ключей -i и -t обеспечивает интерактивный доступ оболочки к контейнеру:
docker run -it ubuntu
Обратите внимание на идентификатор контейнера в командной строке. В данном примере это d9b100f2f636. Этот идентификатор контейнера понадобится вам позже, чтобы идентифицировать контейнер, когда вы захотите его удалить.
Теперь вы можете запустить любую команду внутри контейнера. Например, давайте обновим базу данных пакетов внутри контейнера. Вам не нужно ставить перед какой-либо командой префикс sudo, потому что вы работаете внутри контейнера как пользователь root:
apt update
apt install nodejs
node -v
Шаг 6
После некоторого использования Docker у вас будет много активных (работающих) и неактивных контейнеров на вашем компьютере. Для просмотра активных используйте:
docker ps
В этом руководстве вы запустили два контейнера; один из образа hello-world, а другой из образа ubuntu. Оба контейнера больше не работают, но они все еще существуют в вашей системе.
Чтобы просмотреть все контейнеры — активные и неактивные, запустите docker ps с ключом -a:
docker ps -a
Вы увидите вывод, похожий на этот:
1c08a7a0d0e4 ubuntu "/bin/bash" 2 minutes ago Exited (0) 8 seconds ago quizzical_mcnulty
a707221a5f6c hello-world "/hello" 6 minutes ago Exited (0) 6 minutes ago youthful_curie
Чтобы просмотреть последний созданный вами контейнер, передайте ему ключ -l:
docker ps -l
Вывод:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1c08a7a0d0e4 ubuntu "/bin/bash" 2 minutes ago Exited (0) 40 seconds ago quizzical_mcnulty
Чтобы запустить остановленный контейнер, используйте docker start, за которым следует идентификатор контейнера или имя контейнера. Запустим контейнер на основе Ubuntu с идентификатором 1c08a7a0d0e4:
docker start 1c08a7a0d0e4
Output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1c08a7a0d0e4 ubuntu "/bin/bash" 3 minutes ago Up 5 seconds
Чтобы остановить работающий контейнер, используйте docker stop, а затем идентификатор или имя контейнера. На этот раз мы будем использовать имя, которое Docker присвоил контейнеру, — quizzical_mcnulty:
docker stop quizzical_mcnulty
Как только вы решили, что вам больше не нужен контейнер, удалите его с помощью команды docker rm, снова используя либо идентификатор контейнера, либо имя. Используйте команду docker ps -a, чтобы найти идентификатор или имя контейнера, связанного с образом hello-world, и удалить его.
docker rm youthful_curie
Вы можете запустить новый контейнер и дать ему имя с помощью переключателя —name. Вы также можете использовать параметр —rm для создания контейнера, который удаляет себя при остановке. Дополнительные сведения об этих и других параметрах см. в справочной команде docker run.
Шаг 7
Когда вы запускаете образ Docker, вы можете создавать, изменять и удалять файлы так же, как на виртуальной машине. Вносимые вами изменения будут применяться только к этому контейнеру. Вы можете запускать и останавливать его, но как только вы уничтожите его с помощью команды docker rm, изменения будут потеряны навсегда. После установки Node.js внутри контейнера Ubuntu у вас теперь есть контейнер, работающий на основе образа, но контейнер отличается от образа, который вы использовали для его создания. Но вы, возможно, захотите повторно использовать этот контейнер Node.js в качестве основы для новых образов позже.
Затем зафиксируйте изменения в новом экземпляре образа Docker с помощью следующей команды:
docker commit -m "What you did to the image" -a "Author Name" container_id repository/new_image_name
Переключатель -m предназначен для сообщения фиксации, которое помогает вам и другим узнать, какие изменения вы внесли, а -a используется для указания автора. container_id — это тот, который вы отметили ранее в руководстве, когда запускали интерактивный сеанс Docker. Если вы не создали дополнительные репозитории в Docker Hub, репозиторий обычно является вашим именем пользователя Docker Hub.
Например, для пользователя sammy с идентификатором контейнера d9b100f2f636 команда будет выглядеть так:
docker commit -m "added Node.js" -a "sammy" d9b100f2f636 sammy/ubuntu-nodejs
Когда вы фиксируете изображение, новое изображение сохраняется локально на вашем компьютере. Позже в этом руководстве вы узнаете, как отправить образ в реестр Docker, например Docker Hub, чтобы другие могли получить к нему доступ.
Повторный просмотр образов Docker покажет новый образ, а также старый, из которого он был получен:
docker images
Output
REPOSITORY TAG IMAGE ID CREATED SIZE
sammy/ubuntu-nodejs latest 7c1f35226ca6 7 seconds ago 179MB
...
В этом примере ubuntu-nodejs — это новый образ, созданный на основе существующего образа ubuntu из Docker Hub. Разница в размерах отражает внесенные изменения. И в этом примере изменение заключалось в том, что был установлен NodeJS. Поэтому в следующий раз, когда вам понадобится запустить контейнер с помощью Ubuntu с предустановленным NodeJS, вы можете просто использовать новый образ.
Вы также можете создавать образы из Dockerfile, что позволяет автоматизировать установку программного обеспечения в новом образе. Однако это выходит за рамки данного руководства.
Шаг 8
Следующий логический шаг после создания нового образа из существующего — поделиться им с несколькими избранными друзьями, со всем миром в Docker Hub или в другом реестре Docker, к которому у вас есть доступ. Чтобы отправить образ в Docker Hub или любой другой реестр Docker, у вас должна быть там учетная запись.
В этом разделе показано, как отправить образ Docker в Docker Hub. Чтобы узнать, как создать собственный частный реестр Docker, ознакомьтесь со статьей Как настроить частный реестр Docker в Ubuntu 18.04.
Чтобы отправить образ, сначала войдите в Docker Hub:
docker login -u docker-registry-username
Затем вы можете отправить свой собственный образ, используя:
Чтобы отправить образ ubuntu-nodejs в репозиторий sammy, команда будет выглядеть так:
docker push sammy/ubuntu-nodejs
После отправки образа в реестр он должен быть указан на панели управления вашей учетной записи, как показано на изображении ниже:
Войдите в систему Docker. Затем убедитесь, что образ существует на странице репозитория Docker Hub. Теперь вы можете использовать docker pull sammy/ubuntu-nodejs, чтобы перетащить образ на новую машину и использовать его для запуска нового контейнера.