Docker
Управление изображениями
Поиск…
Синтаксис
- docker images [OPTIONS] [REPOSITORY [: TAG]]
- докер проверяет [ОПЦИИ] КОНТЕЙНЕР | ИЗОБРАЖЕНИЕ [КОНТЕЙНЕР | ИЗОБРАЖЕНИЕ ...]
- docker pull [ОПЦИИ] ИМЯ [: TAG | @DIGEST]
- docker rmi [ОПЦИИ] ИЗОБРАЖЕНИЕ [ИЗОБРАЖЕНИЕ ...]
- тег докера [OPTIONS] ИЗОБРАЖЕНИЕ [: TAG] [REGISTRYHOST /] [USERNAME /] NAME [: TAG]
Получение изображения из Docker Hub
Обычно изображения автоматически извлекаются из Docker Hub . Docker попытается вытащить любое изображение из Docker Hub, который еще не существует на хосте Docker. Например, использование docker run ubuntu
когда изображение ubuntu
еще не находится на хосте Docker, заставит Docker инициировать вытягивание последнего изображения ubuntu
. Можно потянуть изображение отдельно, используя приведение docker pull
чтобы вручную извлечь или обновить изображение с Docker Hub.
docker pull ubuntu
docker pull ubuntu:14.04
Возможны дополнительные варианты вытягивания из другого реестра изображений или вытаскивания определенной версии изображения. Указание альтернативного реестра выполняется с использованием полного имени изображения и дополнительной версии. Например, следующая команда попытается вытащить изображение ubuntu:14.04
из registry.example.com
registry.example.com:
docker pull registry.example.com/username/ubuntu:14.04
Отображение локально загруженных изображений
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest 693bce725149 6 days ago 967 B
postgres 9.5 0f3af79d8673 10 weeks ago 265.7 MB
postgres latest 0f3af79d8673 10 weeks ago 265.7 MB
Ссылка на изображения
Команды докеров, которые принимают имя изображения, принимают четыре разных формы:
Тип | пример |
---|---|
Короткий идентификатор | 693bce725149 |
название | hello-world (по умолчанию :latest тег) |
Имя + тег | hello-world:latest |
дайджест | hello-world@sha256:e52be8ffeeb1f374f440893189cd32f44cb166650e7ab185fa7735b7dc48d619 |
Примечание. Вы можете ссылаться только на изображение по его дайджесту, если это изображение было первоначально вытащено с помощью этого дайджеста. Чтобы увидеть дайджест для изображения (если он доступен), запустите docker images --digests
.
Удаление изображений
Команда docker rmi
используется для удаления изображений:
docker rmi <image name>
Для удаления изображения необходимо использовать полное имя изображения. Если изображение не было помечено для удаления имени реестра, его необходимо указать. Например:
docker rmi registry.example.com/username/myAppImage:1.3.5
Также можно удалить изображения по их идентификатору:
docker rmi 693bce725149
В качестве удобства можно удалить изображения по их идентификатору изображения, указав только первые несколько символов идентификатора изображения, если указанная подстрока недвусмысленная:
docker rmi 693
Примечание. Изображения могут быть удалены, даже если существуют существующие контейнеры, которые используют это изображение; docker rmi просто «разворачивает» изображение.
Если никакие контейнеры не используют изображение, это сбор мусора. Если контейнер использует изображение, изображение будет собираться с мусором, как только все контейнеры, использующие его, будут удалены. Например:
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5483657ee07b hello-world "/hello" Less than a second ago Exited (0) 2 seconds ago small_elion
$ docker rmi hello-world
Untagged: hello-world:latest
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5483657ee07b 693bce725149 "/hello" Less than a second ago Exited (0) 12 seconds ago small_elion
Удалить все изображения без начальных контейнеров
Чтобы удалить все локальные изображения без начальных контейнеров, вы можете предоставить список изображений в качестве параметра:
docker rmi $(docker images -qa)
Удалить все изображения
Если вы хотите удалить изображения, независимо от того, есть ли у них запущенный контейнер, используйте флаг силы ( -f
):
docker rmi -f $(docker images -qa)
Удаление оборванных изображений
Если изображение не помечено и не используется каким-либо контейнером, оно «оборвано» и может быть удалено следующим образом:
docker images -q --no-trunc -f dangling=true | xargs -r docker rmi
Поиск в Docker Hub для изображений
Вы можете найти Docker Hub для изображений с помощью команды поиска :
docker search <term>
Например:
$ docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 3565 [OK]
jwilder/nginx-proxy Automated Nginx reverse proxy for docker c... 717 [OK]
richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable ... 232 [OK]
...
Проверка изображений
docker inspect <image>
Выходной сигнал находится в формате JSON. Вы можете использовать jq
командной строки jq
для анализа и печати только нужных ключей.
docker inspect <image> | jq -r '.[0].Author'
В приведенной выше команде будет отображаться имя автора изображений.
Маркировка изображений
Пометка изображения полезна для отслеживания различных версий изображений:
docker tag ubuntu:latest registry.example.com/username/ubuntu:latest
Другой пример тегирования:
docker tag myApp:1.4.2 myApp:latest
docker tag myApp:1.4.2 registry.example.com/company/myApp:1.4.2
Сохранение и загрузка изображений докеров
docker save -o ubuntu.latest.tar ubuntu:latest
Эта команда сохранит ubuntu:latest
изображение в архиве tarball в текущем каталоге с именем ubuntu.latest.tar
. Затем этот архив tarball можно перенести на другой хост, например, с помощью rsync
или архивировать в хранилище.
После перемещения tarball следующая команда создаст изображение из файла:
docker load -i /tmp/ubuntu.latest.tar
Теперь можно создать контейнеры из ubuntu:latest
изображение, как обычно.