По поводу работы образа Docker достаточно прочитать эту статью!(ниже)

Docker

Docker 镜像学习(下)
Изучение образа Docker (ниже)

Сразу после предыдущей статьи"Про работу образов 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: не удалять непомеченные родительские изображения;

Docker 查看镜像信息
Информация об образе представления Docker

Например, мы хотим удалитьallen_mysql:5.7Зеркало, команда выглядит следующим образом:

docker rmi allen_mysql:5.7

Docker 删除镜像
Докер удалить изображение

Из предыдущих глав мы знаем, что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 查看镜像信息
Информация об образе представления Docker

можно увидеть,docker.io/mysql:5.7Зеркало все еще существует!

Затем, если для изображения нет нескольких тегов, если и только если есть только один тег, вам нужно быть осторожным при выполнении команды удаления, которая полностью удалит изображение.

Например, в это время мы выполняемdocker rmi docker.io/mysql:5.7Заказ:

Docker 删除镜像
Докер удалить изображение

Как вы можете видеть на изображении выше, мы удалилиdocker.io/mysql:5.7Отразить все слои файлов. Зеркало больше не существует локально!

1.2 Удалить изображение по ID

Помимо удаления изображения по имени тега, мы также можем удалить изображение, указав идентификатор изображения, например:

docker rmi ee7cbd482336

После того, как указано изображение для удаления по идентификатору, он сначала пытается удалить все теги, указывающие на это изображение, а затем удаляет само изображение.

1.3 Снятие ограничений на изображения

Удалить изображение легко, но мы не можем удалить его в любое время и в любом месте, и оно имеет некоторые ограничения.

Когда контейнер, созданный этим образом, не уничтожен, образ не может быть удален. Чтобы убедиться в этом, проведем эксперимент. Во-первых, мы проходимdocker pull alpineкоманда вытащить последнююalpineзеркало, затем запустите зеркало и дайте ему вывестиhello, docker!:

Docker run alpine
Docker run alpine

Далее удалим это зеркало и попробуем:

Docker 删除镜像
Докер удалить изображение

Вы можете увидеть подсказку, изображение не может быть удалено, потому что на него ссылается контейнер! В то же время эта информация также говорит нам о том, что если только путем добавления-fПодкоманда, то есть принудительное удаление, может удалить образ!

docker rmi -f docker.io/alpine

Однако, как правило, мы не рекомендуем такие насильственные действия.Правильный подход должен быть следующим:

  1. Сначала удалите контейнер, который ссылается на это изображение;
  2. затем удалите это изображение;

То есть согласно подсказке на рисунке выше ID контейнера (9d59e2278553), выполните команду удаления:

docker rm 9d59e2278553

Затем выполните команду для удаления изображения:

docker rmi 5cb3aa00f899

Docker 删除镜像
Докер удалить изображение

В это время его можно удалить нормально!

1.4 Очистите изображение

После того, как мы используем Docker в течение определенного периода времени, в системе обычно остаются некоторые временные и неиспользуемые файлы изображений, которые можно очистить с помощью следующих команд:

docker image prune

Подкоманды, которые он поддерживает:

  • -a, --all: удалить все бесполезные изображения, а не только временные файлы;
  • -f, --force: Принудительно удалить файл изображения без запроса подтверждения;

Кроме того, после выполненияdocker image pruneПосле команды он все еще сообщает нам, сколько места для хранения было освобождено!

2. Докер создает образ

В этом разделе вы узнаете, как Docker создает образы? Существует три основных типа образов, создаваемых Docker:

  1. Создается на основе существующего образа;
  2. Создан на основе Dockerfile;
  3. Импорт на основе локальных шаблонов;

В основном мы представим обычно используемые 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 локально:

Docker 创建镜像
Докер создает образ

Во-первых, позвольте мне запустить его и создать в нем файл test.txt:

Docker 创建镜像
Докер создает образ

Команда выглядит следующим образом:

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

После успешной отправки информация об идентификаторе вновь созданного изображения будет возвращена, как показано на следующем рисунке:

Docker 提交新创建的镜像
Docker фиксирует только что созданный образ

Снова проверьте информацию о локальном зеркале, вы можете увидеть только что созданноеtest:0.1зеркально:

Docker 查看镜像信息
Информация об образе представления Docker

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 .

Примечание: В конце команды стоит точка, если ее не поставить, то сборка завершится ошибкой!

Docker 通过 Dockerfile 构建镜像
Docker создает образы через Dockerfile

После успешной компиляции снова проверьте информацию о локальном образе, и вы увидите вновь созданный образ python:3.

Docker 查看镜像信息
Информация об образе представления Docker

3. Экспорт и загрузка образа Docker

В этом разделе вы узнаете, как Docker экспортирует и загружает изображения.

Обычно у нас есть следующие требования и нам нужно поделиться изображением с другими.В настоящее время мы можем экспортировать изображение в пакет tar, а другие могут напрямую загрузить пакет tar, чтобы быстро добавить изображение в локальную библиотеку изображений.

Чтобы использовать эти две функции, в основном с помощью следующих двух команд:

  1. docker save
  2. docker load

3.1 Экспорт изображения

Проверьте локальное зеркало следующим образом:

Docker 查看镜像信息
Информация об образе представления Docker

Например, мы хотим экспортировать образ python:3, выполните команду:

docker save -o python_3.tar python:3

После успешного выполнения просмотрите текущий каталог:

Docker 导出文件
Файл экспорта Docker

можно увидеть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 Hub 注册账号
Зарегистрированная учетная запись Docker Hub

Заполните свой идентификатор Docker (т. е. учетную запись), пароль, адрес электронной почты и нажмите «Продолжить».

Затем Docker Hub отправит письмо с подтверждением на указанный вами адрес электронной почты:

Docker Hub 验证邮件
Электронное письмо с подтверждением Docker Hub

Нажмите, чтобы подтвердить, затем снова вернитесь на официальный сайт Docker Hub и войдите в систему, используя только что зарегистрированный идентификатор Docker и пароль!

Docker Hub 登录页面
Страница входа в Docker Hub

4.2 Создание зеркального склада

После успешного входа появится следующая страница:

欢迎来到 Docker Hub
Добро пожаловать в Докер Хаб

Выберите создание зеркального репозитория:

创建 Python 仓库
Создайте репозиторий Python

заполнятьназвание склада,Описание,будет ли это обнародовано, щелкните Создать.

仓库镜像展示页
Страница отображения складского зеркала

Мы видим, что репозиторий успешно создан, но образа в нем еще нет, далее загружаем образ в только что созданный репозиторий.

4.3 Загрузить изображение

в командную строку,Войдите в систему с помощью Docker ID и пароля, которые мы только что получили,Выполнение заказа:

docker login

命令行登录 Docker ID
Вход в командную строку Docker ID

После успешного входа в систему мы начинаем готовиться к загрузке локальногоpython:3Зеркало:

python:3 镜像
питон:3 зеркалирование

Во-первых, мы наклеиваем на него новую этикетку,Префикс согласуется с нашим вновь созданным Docker ID и именем репозитория.:

docker tag python:3 weiwosuoai1991/python:3

python:3 镜像打标签
python:3 зеркальные теги

Глядя на локальную информацию, вы можете видеть, что маркировка прошла успешно. Далее, давайте начнем загрузку! Выполнение заказа:

docker push weiwosuoai1991/python:3

上传 python:3 镜像
Загрузить изображение python:3

Загружено успешно! Заходим на официальный сайт Docker Hub, информационную страницу только что созданного хранилища и проверяем, действительно ли оно успешное:

仓库镜像展示页
Страница отображения складского зеркала

Отличная работа! ! !

V. Резюме

В этой статье мы сосредоточились на том, как удалять изображения в Docker, создавать изображения, экспортировать и загружать изображения, а также загружать изображения в Docker Hub. Эта статья является следующей частью изучения образа Docker, и в будущем будет больше обучающих статей, связанных с Docker.Желаю вам счастливого обучения!

Бесплатная раздача | Интервью и ресурсы для обучения

Недавно я нашел в Интернете хороший ресурс в формате PDF «Java Core Interview Knowledge.pdf», чтобы поделиться с вами не только интервью, но и изучением, вы все стоит того! ! !

Как получить: Подпишитесь на официальный аккаунт:Сяоха изучает Java, закулисный ответресурс, вы можете получить ссылку на ресурс, это каталог и несколько скриншотов:

福利资源截图
Скриншот ресурсов социального обеспечения

福利资源截图
Скриншот ресурсов социального обеспечения

福利资源截图
Скриншот ресурсов социального обеспечения

福利资源截图
Скриншот ресурсов социального обеспечения

福利资源截图
Скриншот ресурсов социального обеспечения

福利资源截图
Скриншот ресурсов социального обеспечения

福利资源截图
Скриншот ресурсов социального обеспечения

Важные вещи говорятся дважды, как это получить: Подпишитесь на официальный аккаунт:Сяоха изучает Java, закулисный ответресурс, как за ссылки на ресурсы! ! !

Добро пожаловать, чтобы обратить внимание на личный общедоступный номер: Сяоха изучает Java

小哈学Java