Использование образов Docker | Семейство Docker

контейнер Docker

Предыдущий обзор:

Сегодня поговорим о зеркалировании. Зеркальное отображение — это особенно важная концепция в Docker, и оно является основой для работы контейнера. Без зеркалирования все последующее не будет держаться.

Типичный метод представления изображения делится на три части, с/Разделение:

remote image hub/namespace/name:tag
  • удаленный концентратор изображений: адрес веб-сервера, на котором хранится изображение;
  • пространство имен: пространство имен, представляющее все изображения пользователя или организации;
  • имя: имя изображения;
  • тег: тег изображения.

На самом деле зеркало, которое мы часто видим, выглядит вот такname:tag, потому что в образе, извлеченном из официального репозитория Docker, могут отсутствовать первые две части.

получить зеркало

использоватьdocker pull name[:tag]команда для загрузки изображения, если тег не указан явно, по умолчанию будет выбран последний тег.

$ docker pull busybox
Using default tag: latest
latest: Pulling from library/busybox
76df9210b28c: Pull complete
Digest: sha256:95cf004f559831017cdf4628aaf1bb30133677be8702a8c5f2994629f637a209
Status: Downloaded newer image for busybox:latest
docker.io/library/busybox:latest

Посмотреть информацию о зеркале

использоватьdocker imagesКоманда для отображения исходных изображений.

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             latest              1c35c4412082        6 days ago          1.22MB

Идентификатор изображения очень важен, он однозначно идентифицирует изображение.

использоватьdocker tagКоманда для добавления новой метки к локальному образу.

$ docker tag busybox:latest mybusybox:latest

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             latest              1c35c4412082        6 days ago          1.22MB
mybusybox           latest              1c35c4412082        6 days ago          1.22MB

Видно, что идентификаторы двух локальных зеркал теперь одинаковы, что означает, что они указывают на одно и то же зеркало, но метки разные.

использоватьdocker inspectкоманда, чтобы получить детали изображения.

использоватьdocker historyКоманда выводит информацию о создании каждого слоя образа.

поисковое зеркало

использоватьdocker searchкоманда для поиска зеркал.

$ docker search centos
NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
centos                             The official build of CentOS.                   6039                [OK]
ansible/centos7-ansible            Ansible on Centos7                              130                                     [OK]
consol/centos-xfce-vnc             Centos container with "headless" VNC session…   116                                     [OK]
jdeathe/centos-ssh                 OpenSSH / Supervisor / EPEL/IUS/SCL Repos - …   114                                     [OK]
centos/mysql-57-centos7            MySQL 5.7 SQL database server                   76
imagine10255/centos6-lnmp-php56    centos6-lnmp-php56                              58                                      [OK]

Удалить и очистить изображения

использоватьdocker rmiЕсть два способа удалить изображение с помощью команды: один — удалить по имени и метке изображения, другой — удалить по идентификатору изображения. При обычном использовании большинство из них удаляются через ID зеркала.

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             latest              1c35c4412082        8 days ago          1.22MB
mybusybox           latest              1c35c4412082        8 days ago          1.22MB

$ docker rmi mybusybox:latest
# 或者
$ docker rmi 1c35c4412082

Если на образ ссылается контейнер, его нельзя удалить.Сначала необходимо удалить контейнер, который зависит от образа, а затем уже сам образ. Или, если это более жестоко, используйте его напрямую-fПараметры удалить, тоже можно добиться эффекта, но все же не рекомендуется.

использоватьdocker image pruneКоманда для очистки некоторых временных образов, оставшихся в системе, а также некоторых неиспользуемых образов.

Создать образ

Существует три способа создания образа:

  • Создан из существующего контейнера
  • Импорт на основе локального шаблона
  • Создан на основе Dockerfile

1. Создан на основе существующего контейнера

# 运行一个容器
$ docker run -it centos /bin/bash

# 在容器中创建一个文件,然后退出
[root@f0767e2e8964 /]# touch text.txt
[root@f0767e2e8964 /]# exit
exit

# 查看容器
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
f0767e2e8964        centos              "/bin/bash"         17 seconds ago      Exited (0) 4 seconds ago                       stupefied_ptolemy

# 基于容器创建镜像
$ docker commit -a 'add file' f0767e2e8964 centos:1.0
sha256:a651491d9bfe6d00eef7a23bd290be839d59efafa31183ef2038399271dee459

# 查看除了原有镜像,还有新生成的镜像,标签不同
$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              1.0                 a651491d9bfe        4 seconds ago       237MB
centos              latest              470671670cac        4 months ago        237MB

2. Импорт на основе локального шаблона

использоватьdocker importкоманда для импорта шаблона в виде изображения.

3. Создать на основе Dockerfile

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

Сохранение и загрузка изображений

использоватьdocker saveКоманда для сохранения изображения в файл.

$ docker save -o busybox.tar busybox

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

После получения файла используйтеdocker loadкоманда для загрузки изображения.

$ docker load < busybox.tar

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

использоватьdocker pushКоманда загружает образ на зеркальный склад, так что если вы хотите использовать этот образ на других серверах, вы можете напрямуюdocker pullМожно сделать сразу, очень удобно.

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

Эта статья здесь, в следующей статье будет рассказ о контейнерах.

Справочная литература:

  • «Введение и практика технологии Docker»
  • «Докер продвинутый и настоящий бой»

Прошлые основные моменты:

Введение в Docker и его установку | Серия Docker

Технический блог:

GitHub.com/Делайте это с душой/Особые…

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