English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Использование镜像 Docker

Когда запускается контейнер, если зеркало, используемое при этом, не существует на локальном уровне, Docker автоматически загружает его из репозитория镜像 Docker, по умолчанию из общедоступного репозитория镜像 Docker Hub.

Ниже我们来学习:

  • 1、Управление и использование местных镜像 Docker хоста

  • 2、Создание зеркала

Перечислить список镜像

мы можем использовать docker images чтобы перечислить зеркала на локальном хосте.

w3codebox@w3codebox:~$ docker images           
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              14.04               90d5884b1ee0        5 days ago          188 MB
php                 5.6                 f40e9e0f10c8        9 days ago          444.8 MB
nginx               latest              6f8d099c3adc        12 days ago         182.7 MB
mysql               5.6                 f2e8d6c772c0        3 weeks ago         324.6 MB
httpd               последняя              02ef73cf1bc0        3 недель назад       194.4 MB
ubuntu              15.10               4e3b13c8a266        4 weeks ago         136.3 MB
hello-world         последняя              690ed74de00f        6 месяцев назад       960 B
training/webapp     latest              6fae60ef3446        11 months ago       348.8 MB

Описание各个选项:

  • REPOSITORY:Представляет репозиторий зеркала

  • TAG:Тег зеркала

  • IMAGE ID:ID зеркала

  • CREATED:Время создания зеркала

  • SIZE:Размер зеркала

В одном репозитории может быть несколько TAG, представляющих различные версии этого репозитория, например, в репозитории ubuntu есть несколько версий, таких как 15.10, 14.04 и т.д., мы используем REPOSITORY:TAG для определения различных镜像.

Таким образом, если мы хотим использовать систему зеркало ubuntu версии 15.10 для запуска контейнера, команда будет такая:

w3codebox@w3codebox:~$ docker run -t -i ubuntu:15.10 /bin/bash 
root@d77ccb2e5cca:/#

Объяснение параметра:

  • -i: Интерактивные операции.

  • -t: Терминал.

  • ubuntu:15.10: Это означает, что контейнер запускается на основе зеркала ubuntu версии 15.10.

  • /bin/bash: Команда,放在镜像ного имени после, здесь мы хотим иметь интерактивную Shell, поэтому используем /bin/bash.

Если вы хотите использовать систему镜像 ubuntu версии 14.04 для запуска контейнера, команда будет такая:

w3codebox@w3codebox:~$ docker run -t -i ubuntu:14.04 /bin/bash 
root@39e968165990:/#

Если вы не указываете версию тега зеркала, например, вы используете только ubuntu, Docker по умолчанию использует зеркало ubuntu:latest.

Получение нового зеркала

Когда мы используем на локальном хосте зеркало, которое не существует, Docker автоматически загружает это зеркало. Если мы хотим предварительно загрузить это зеркало, мы можем использовать команду docker pull, чтобы загрузить его.

Cw3codebox@w3codebox:~$ docker pull ubuntu:13.10
13.10: Извлечение из библиотеки/ubuntu
6599cadaf950: Загрузка завершена 
23eda618d451: Загрузка завершена 
f0be3084efe9: Загрузка завершена 
52de432f084b: Загрузка завершена 
a3ed95caeb02: Загрузка завершена 
Контрольная сумма: sha256:15b79a6654811c8d992ebacdfbd5152fcf3d165e374e264076aa435214a947a3
Статус: Загружена новая версия образа для ubuntu:13.10

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

Поиск образов

Мы можем искать образы на сайте Docker Hub, URL Docker Hub:https://hub.docker.com/

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

w3codebox@w3codebox:~$  docker search httpd

НАЗВАНИЕ: Название источника образа

ОПИСАНИЕ: Описание образа

ОФИЦИАЛЬНО: Является ли это официальным выпуском docker

stars: Подобно star в Github, означает лайк, нравится.

АВТОМАТИЗИРОВАННОЕ: Автоматическое строительство.

Извлечение образа

Мы решили использовать официальную версию образа httpd из上图, для загрузки образа используется команда docker pull.

w3codebox@w3codebox:~$ docker pull httpd
Используется mặc định тег: latest
latest: Извлечение из библиотеки/httpd
8b87079b7a06: Извлечение файла fs 
a3ed95caeb02: Загрузка завершена 
0d62ec9c6a76: Загрузка завершена 
a329d50397b9: Загрузка завершена 
ea7c1f032b5c: Waiting 
be44112b72c7: Waiting

После завершения загрузки мы можем использовать этот образ.

w3codebox@w3codebox:~$ docker run httpd

удаление образов

удаление образов docker rmi команда, например, если мы удаляем образ hello-world:

$ docker rmi hello-world

Создание образа

Когда образ, скачанный из репозитория docker, не satisfies our needs, we can change the image in two ways.

  • 1、Обновить образ из уже созданного контейнера и отправить этот образ

  • 2、Использование инструкций Dockerfile для создания нового образа

Обновление образа

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

w3codebox@w3codebox:~$ docker run -t -i ubuntu:15.10 /bin/bash
root@e218edb10161:/#

в运行的 контейнере apt-get update команда для обновления

После завершения операции введите команду exit, чтобы выйти из этого контейнера.

В этот момент контейнер с ID e218edb10161 изменен по нашему запросу. Мы можем использовать команду docker commit для отправки копии контейнера.

w3codebox@w3codebox:~$ docker commit -m="has update" -a="w3codebox" e218edb10161 w3codebox/ubuntu:v2
sha256:70bf1840fd7c0d2d8ef0a42a817eb29f854c1af8f7c59fc03ac7bdee9545aff8

описание параметров:

  • -m: сообщение о внесенных изменениях

  • -a: указать автора образа

  • e218edb10161:ID контейнера

  • w3codebox/ubuntu:v2: указать имя создаваемого целевого образа

мы можем использовать docker images команда для просмотра наших новых образов w3codebox/ubuntu:v2:

w3codebox@w3codebox:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
w3codebox/ubuntu       v2                  70bf1840fd7c        15 seconds ago      158.5 MB
ubuntu              14.04               90d5884b1ee0        5 days ago          188 MB
php                 5.6                 f40e9e0f10c8        9 days ago          444.8 MB
nginx               latest              6f8d099c3adc        12 days ago         182.7 MB
mysql               5.6                 f2e8d6c772c0        3 weeks ago         324.6 MB
httpd               последняя              02ef73cf1bc0        3 недель назад       194.4 MB
ubuntu              15.10               4e3b13c8a266        4 weeks ago         136.3 MB
hello-world         последняя              690ed74de00f        6 месяцев назад       960 B
training/webapp     последняя              6fae60ef3446        12 месяцев назад       348.8 MB

Используя наш новый образ w3codebox/ubuntu Чтобы запустить контейнер

w3codebox@w3codebox:~$ docker run -t -i w3codebox/ubuntu:v2 /bin/bash                            
root@1a9fbdeb5da3:/#

Создание образа

Мы используем команду docker build , С нуля начинаем создавать новый образ. Для этого нам нужно создать файл Dockerfile, который содержит набор инструкций,告知 Docker, как создавать наш образ.

w3codebox@w3codebox:~$ cat Dockerfile 
FROM    centos:6.7
ОСНОВАТЕЛЬ     Fisher "[email protected]"
РAN     /bin/echo 'root:123456' |chpasswd
РAN     useradd w3codebox
РAN     /bin/echo 'w3codebox:123456' |chpasswd
РAN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
ЭКСПОЗИРОВАТЬ 22
ЭКСПОЗИРОВАТЬ 80
CMD     /usr/sbin/sshd -D

Каждая инструкция создает новый слой на образе, каждый префикс инструкции должен быть заглавной

Первый FROM указывает использовать哪个 источник образов

Инструкция RUN указывает Docker выполнять команду в образе, устанавливается что-то...

Затем мы используем файл Dockerfile, чтобы скомпилировать образ с помощью команды docker build.

w3codebox@w3codebox:~$ docker build -t w3codebox/centos:6.7 .
Отправка контекста сборки к демону Docker 17.92 kB
Шаг 1: FROM centos:6.7
 ---> d95b5ca17cc3
Шаг 2: MAINTAINER Fisher "[email protected]"
 ---> Используется кэш
 ---> 0c92299c6f03
Шаг 3: RUN /bin/echo 'root:123456' |chpasswd
 ---> Используется кэш
 ---> 0397ce2fbd0a
Шаг 4: RUN useradd w3codebox
......

Объяснение параметра:

  • -t :Указать имя целевого образа

  • . :Каталог файла Dockerfile, можно указать абсолютный путь к Dockerfile

Использование docker images показывает, что созданный образ уже существует в списке, идентификатор образа 860c279d2fec

w3codebox@w3codebox:~$ docker images 
РЕПОЗИТОРИЙ          ТЭГ                 ИДЕНТИФИКАТОР ОБРАЗА            Создан              РАЗМЕР
w3codebox/centos       6.7                 860c279d2fec        About a minute ago   190.6 MB
w3codebox/ubuntu       v2                  70bf1840fd7c        17 hours ago         158.5 MB
ubuntu              14.04               90d5884b1ee0        6 days ago           188 MB
php                 5.6                 f40e9e0f10c8        10 дней назад          444.8 MB
nginx               последняя версия              6f8d099c3adc        12 дней назад          182.7 MB
mysql               5.6                 f2e8d6c772c0        3 недели назад          324.6 MB
httpd               последняя версия              02ef73cf1bc0        3 недели назад          194.4 MB
ubuntu              15.10               4e3b13c8a266        5 недель назад          136.3 MB
hello-world         последняя версия              690ed74de00f        6 месяцев назад         960 B
centos              6.7                 d95b5ca17cc3        6 месяцев назад         190.6 MB
training/webapp     последняя версия              6fae60ef3446        12 месяцев назад        348.8 MB

Мы можем использовать новый образ для создания контейнера

w3codebox@w3codebox:~$ docker run -t -i w3codebox/centos:6.7  /bin/bash
[root@41c28d18b5fb /]# id w3codebox
uid=500(w3codebox) gid=500(w3codebox) groups=500(w3codebox)

С上看,новый образ уже содержит пользователя, который мы создали, w3codebox.

Установка тега образа

Мы можем использовать команду docker tag для добавления нового тега к образу.

w3codebox@w3codebox:~$ docker tag 860c279d2fec w3codebox/centos:dev

Команда docker tag используется для изменения тега образа, здесь это 860c279d2fec, имя пользователя, имя репозитория (repository name) и новый тег.

Использование команды docker images можно увидеть, что у образа с ID 860c279d2fec есть дополнительный тег.

w3codebox@w3codebox:~$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
w3codebox/centos       6.7                    860c279d2fec        5 hours ago         190.6 MB
w3codebox/centos       dev                    860c279d2fec        5 hours ago         190.6 MB
w3codebox/ubuntu       v2                    70bf1840fd7c        22 hours ago        158.5 MB
ubuntu              14.04                90d5884b1ee0        6 days ago          188 MB
php                 5.6                 f40e9e0f10c8        10 days ago         444.8 MB
nginx               latest                6f8d099c3adc        13 days ago         182.7 MB
mysql               5.6                 f2e8d6c772c0        3 weeks ago         324.6 MB
httpd               последняя              02ef73cf1bc0        3 недель назад       194.4 MB
ubuntu              15.10               4e3b13c8a266        5 недель назад       136.3 MB
hello-world         последняя              690ed74de00f        6 месяцев назад       960 B
centos              6.7                 d95b5ca17cc3        6 месяцев назад       190.6 MB
training/webapp     последняя              6fae60ef3446        12 месяцев назад       348.8 MB