English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Когда запускается контейнер, если зеркало, используемое при этом, не существует на локальном уровне, 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