Сразу после предыдущей статьи"Про работу образов Docker достаточно прочитать эту статью! (Часть 1)", следующая статья! ! !
Как наиболее важное ключевое слово в трех основных понятиях Docker, изображение имеет множество операций, которые вы должны освоить, если хотите изучить технологию контейнеров. Эта статья проведет вас шаг за шагом, сосредоточив внимание как на изображениях, так и на тексте, и изучит их на практике.
содержание:
- 1. Docker удалить изображение
- 1.1 Удалить зеркала по тегам
- 1.2 Удалить изображение по ID
- 1.3 Снятие ограничений на изображения
- 1.4 Очистите изображение
- 2. Докер создает образ
- 2.1 Создать на основе существующего изображения
- 2.2 Создать на основе Dockerfile
- 3. Экспорт и загрузка образа Docker
- 3.1 Экспорт изображения
- 3.2 Загрузить изображение
- 4. Загрузка образа Docker
- 4.1 Получить идентификатор Docker
- 4.2 Создание зеркального склада
- 4.3 Загрузить изображение
- V. Резюме
1. Docker удалить изображение
1.1 Удалить зеркала по тегам
Зеркала можно удалить одним из следующих способов:
docker rmi [image]
или:
docker image rm [image]
Поддерживаются следующие подкоманды:
-
-f, -force
: Принудительно удалить изображение, даже если контейнер ссылается на изображение; -
-no-prune
: не удалять непомеченные родительские изображения;
Например, мы хотим удалитьallen_mysql:5.7
Зеркало, команда выглядит следующим образом:
docker rmi allen_mysql:5.7
Из предыдущих глав мы знаем, чтоallen_mysql:5.7
иdocker.io/mysql:5.7
Собственно указывая на то же зеркало, то, у вас могут быть сомнения, я удалилallen_mysql:5.7
, будет лиdocker.io/mysql:5.7
Зеркало тоже удалили?
На самом деле, когда одно и то же изображение имеет несколько тегов,docker rmi
Команда удалит только указанную вами метку среди множества меток изображения и не повлияет на исходный файл изображения.
Если вы не верите, мы можем это сделатьdocker images
команда, см.docker.io/mysql:5.7
Зеркало все еще там:
можно увидеть,docker.io/mysql:5.7
Зеркало все еще существует!
Затем, если для изображения нет нескольких тегов, если и только если есть только один тег, вам нужно быть осторожным при выполнении команды удаления, которая полностью удалит изображение.
Например, в это время мы выполняемdocker rmi docker.io/mysql:5.7
Заказ:
Как вы можете видеть на изображении выше, мы удалилиdocker.io/mysql:5.7
Отразить все слои файлов. Зеркало больше не существует локально!
1.2 Удалить изображение по ID
Помимо удаления изображения по имени тега, мы также можем удалить изображение, указав идентификатор изображения, например:
docker rmi ee7cbd482336
После того, как указано изображение для удаления по идентификатору, он сначала пытается удалить все теги, указывающие на это изображение, а затем удаляет само изображение.
1.3 Снятие ограничений на изображения
Удалить изображение легко, но мы не можем удалить его в любое время и в любом месте, и оно имеет некоторые ограничения.
Когда контейнер, созданный этим образом, не уничтожен, образ не может быть удален. Чтобы убедиться в этом, проведем эксперимент. Во-первых, мы проходимdocker pull alpine
команда вытащить последнююalpine
зеркало, затем запустите зеркало и дайте ему вывестиhello, docker!
:
Далее удалим это зеркало и попробуем:
Вы можете увидеть подсказку, изображение не может быть удалено, потому что на него ссылается контейнер! В то же время эта информация также говорит нам о том, что если только путем добавления-f
Подкоманда, то есть принудительное удаление, может удалить образ!
docker rmi -f docker.io/alpine
Однако, как правило, мы не рекомендуем такие насильственные действия.Правильный подход должен быть следующим:
- Сначала удалите контейнер, который ссылается на это изображение;
- затем удалите это изображение;
То есть согласно подсказке на рисунке выше ID контейнера (9d59e2278553
), выполните команду удаления:
docker rm 9d59e2278553
Затем выполните команду для удаления изображения:
docker rmi 5cb3aa00f899
В это время его можно удалить нормально!
1.4 Очистите изображение
После того, как мы используем Docker в течение определенного периода времени, в системе обычно остаются некоторые временные и неиспользуемые файлы изображений, которые можно очистить с помощью следующих команд:
docker image prune
Подкоманды, которые он поддерживает:
-
-a, --all
: удалить все бесполезные изображения, а не только временные файлы; -
-f, --force
: Принудительно удалить файл изображения без запроса подтверждения;
Кроме того, после выполненияdocker image prune
После команды он все еще сообщает нам, сколько места для хранения было освобождено!
2. Докер создает образ
В этом разделе вы узнаете, как Docker создает образы? Существует три основных типа образов, создаваемых Docker:
- Создается на основе существующего образа;
- Создан на основе Dockerfile;
- Импорт на основе локальных шаблонов;
В основном мы представим обычно используемые 1 и 2.
2.1 Создать на основе существующего изображения
Создайте его с помощью следующей команды:
docker container commit
Поддерживаются следующие подкоманды:
-
-a, --author
="": информация об авторе; -
-c, --change
=[]: команды Dockerfile могут выполняться при отправке, такие как CMD, ENTRYPOINT, ENV, EXPOSE, LABEL, ONBUILD, USER, VOLUME, WORIR и т. д.; -
-m, --message
="": отправить информацию; -
-p, --pause
=true: при отправке приостановить работу контейнера.
Затем создайте новый образ на основе существующего образа Ubuntu локально:
Во-первых, позвольте мне запустить его и создать в нем файл test.txt:
Команда выглядит следующим образом:
docker run -it docker.io/ubuntu:latest /bin/bash
root@a0a0c8cfec3a:/# touch test.txt
root@a0a0c8cfec3a:/# exit
После создания файла test.txt нужно запомнить отмеченный идентификатор контейнера:a0a0c8cfec3a
, используйте его, чтобы зафиксировать новый образ (PS: Вы также можете отправлять изображения по имени, здесь демонстрируется только путь по идентификатору).
Выполнение заказа:
docker container commit -m "Added test.txt file" -a "Allen" a0a0c8cfec3a test:0.1
После успешной отправки информация об идентификаторе вновь созданного изображения будет возвращена, как показано на следующем рисунке:
Снова проверьте информацию о локальном зеркале, вы можете увидеть только что созданноеtest:0.1
зеркально:
2.2 Создать на основе Dockerfile
Создание образов с помощью Dockerfile — наиболее распространенный и рекомендуемый способ. Dockerfile — это текстовый файл инструкций, в котором описывается, как создать новый образ на основе родительского образа.
Давайте напишем простой Dockerfile, описывающий образ, который устанавливает среду Python3 на основе родительского образа Ubuntu:
FROM docker.io/ubuntu:latest
LABEL version="1.0" maintainer="Allen <weiwosuo@github>"
RUN apt-get update && \
apt-get install -y python3 && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
После завершения создания используйте этот Dockerfile для создания нового образа и выполните команду:
docker image build -t python:3 .
Примечание: В конце команды стоит точка, если ее не поставить, то сборка завершится ошибкой!
После успешной компиляции снова проверьте информацию о локальном образе, и вы увидите вновь созданный образ python:3.
3. Экспорт и загрузка образа Docker
В этом разделе вы узнаете, как Docker экспортирует и загружает изображения.
Обычно у нас есть следующие требования и нам нужно поделиться изображением с другими.В настоящее время мы можем экспортировать изображение в пакет tar, а другие могут напрямую загрузить пакет tar, чтобы быстро добавить изображение в локальную библиотеку изображений.
Чтобы использовать эти две функции, в основном с помощью следующих двух команд:
docker save
docker load
3.1 Экспорт изображения
Проверьте локальное зеркало следующим образом:
Например, мы хотим экспортировать образ python:3, выполните команду:
docker save -o python_3.tar python:3
После успешного выполнения просмотрите текущий каталог:
можно увидетьpython_3.tar
Файл изображения создан. Затем вы можете поделиться им с другими, скопировав его!
3.2 Загрузить изображение
кто-то еще получил этоtar
После пакета, как его импортировать в локальную зеркальную библиотеку?
Выполнив следующую команду:
docker load -i python_3.tar
или:
docker load < python_3.tar
После успешного импорта проверьте информацию о локальном зеркале, и вы сможете получить доступ к зеркалу для других! Как же это не удобно!
4. Загрузка образа Docker
Мы будем использовать загрузку в Docker Hub в качестве примера, чтобы продемонстрировать, как Docker загружает изображения.
4.1 Получить идентификатор Docker
Чтобы загрузить изображение в Docker Hub, сначала нам нужно зарегистрироватьсяDocker HubСчет. Открыть URL-адрес концентратора Dockerhub.docker.com, начните регистрацию:
Заполните свой идентификатор Docker (т. е. учетную запись), пароль, адрес электронной почты и нажмите «Продолжить».
Затем Docker Hub отправит письмо с подтверждением на указанный вами адрес электронной почты:
Нажмите, чтобы подтвердить, затем снова вернитесь на официальный сайт Docker Hub и войдите в систему, используя только что зарегистрированный идентификатор Docker и пароль!
4.2 Создание зеркального склада
После успешного входа появится следующая страница:
Выберите создание зеркального репозитория:
заполнятьназвание склада,Описание,будет ли это обнародовано, щелкните Создать.
Мы видим, что репозиторий успешно создан, но образа в нем еще нет, далее загружаем образ в только что созданный репозиторий.
4.3 Загрузить изображение
в командную строку,Войдите в систему с помощью Docker ID и пароля, которые мы только что получили,Выполнение заказа:
docker login
После успешного входа в систему мы начинаем готовиться к загрузке локальногоpython:3
Зеркало:
Во-первых, мы наклеиваем на него новую этикетку,Префикс согласуется с нашим вновь созданным Docker ID и именем репозитория.:
docker tag python:3 weiwosuoai1991/python:3
Глядя на локальную информацию, вы можете видеть, что маркировка прошла успешно. Далее, давайте начнем загрузку! Выполнение заказа:
docker push weiwosuoai1991/python:3
Загружено успешно! Заходим на официальный сайт Docker Hub, информационную страницу только что созданного хранилища и проверяем, действительно ли оно успешное:
Отличная работа! ! !
V. Резюме
В этой статье мы сосредоточились на том, как удалять изображения в Docker, создавать изображения, экспортировать и загружать изображения, а также загружать изображения в Docker Hub. Эта статья является следующей частью изучения образа Docker, и в будущем будет больше обучающих статей, связанных с Docker.Желаю вам счастливого обучения!
Бесплатная раздача | Интервью и ресурсы для обучения
Недавно я нашел в Интернете хороший ресурс в формате PDF «Java Core Interview Knowledge.pdf», чтобы поделиться с вами не только интервью, но и изучением, вы все стоит того! ! !
Как получить: Подпишитесь на официальный аккаунт:Сяоха изучает Java, закулисный ответресурс, вы можете получить ссылку на ресурс, это каталог и несколько скриншотов:
Важные вещи говорятся дважды, как это получить: Подпишитесь на официальный аккаунт:Сяоха изучает Java, закулисный ответресурс, как за ссылки на ресурсы! ! !