Предыдущий обзор:
Сегодня поговорим о зеркалировании. Зеркальное отображение — это особенно важная концепция в 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, вас ждет еще больше захватывающего контента.