Поиск по сайту:

Начало работы с готовыми образами Docker


На этой странице

  1. Предпосылки
  2. Что следует знать?
  3. Управление изображениями с помощью интерфейса командной строки
  4. Проверка образов Docker
  5. Использование тегов Docker
  6. Работа с реестрами Docker
    1. Развертывание частного реестра Docker
    2. Отправка, получение и подписание изображений

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

    Давайте начнем.

    Предпосылки

    • Прежде чем вы начнете использовать образы Docker, вам необходимо установить Docker в вашей системе.
    • В этом руководстве используется Ubuntu, но шаги должны быть аналогичны для других дистрибутивов.
    • Учетная запись пользователя с привилегиями root.

    Что вы должны знать?

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

    Образы Docker — это основные компоненты Docker. Docker использует образы для создания контейнеров. Образы — это, по сути, шаблоны, которые содержат всю информацию, необходимую для создания контейнера, например код, библиотеки и среду выполнения.

    Docker-контейнер — это экземпляр образа во время выполнения. Он содержит все, что содержит образ, а также любые изменения и дополнения, которые вы делаете во время работы контейнера. Например, если вы устанавливаете новое приложение в своей системе, новое приложение будет установлено в вашем контейнере.

    Управление изображениями с помощью CLI

    Администраторы Docker должны управлять образами с помощью интерфейса командной строки Docker. Docker CLI — это мощный инструмент, который дает вам полный контроль над вашими образами и контейнерами. В этом разделе вы узнаете, как использовать Docker CLI для управления вашими образами.

    1. Запустите приведенную ниже команду, чтобы убедиться, что Docker запущен.

    sudo systemctl status docker

    2. Если Docker не запущен, запустите его с помощью приведенной ниже команды.

    sudo systemctl start docker

    3. Добавьте свою учетную запись пользователя в группу Docker. Выйдите из системы и войдите снова, чтобы изменения вступили в силу.

    sudo usermod -aG docker $(whoami)

    4. Если вы запустите команду docker image, вы увидите список всех параметров, доступных для команды docker image.

    docker image

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

    • ls: список изображений в вашей системе.
    • pull: извлечение образа из реестра.
    • push: отправка образа в реестр.
    • create: создание нового образа из Dockerfile.
    • rm: удалить образ из вашей системы.
    • tag: тег изображения с именем.

    Для начала давайте посмотрим, как составить список образов в вашей системе.

    5. Запустите команду docker image ls, чтобы получить список образов на вашем хосте. Команда docker image ls выводит список всех образов на вашем хосте, включая репозитории, из которых они были извлечены. Идентификатор, репозиторий, тег и размер изображения.

    docker image ls

    Предположим, вы хотите удалить изображение с вашего хоста. Вы можете использовать команду rm. Вы можете использовать имя изображения или идентификатор изображения, чтобы удалить изображение.

    docker image rm <image-name>
    docker image rm <image-id>

    Если вы используете идентификатор, убедитесь, что первые несколько символов в идентификаторе уникальны для изображений в списке. Другими словами, первые несколько букв идентификатора не должны использоваться никакими другими изображениями.

    6. Например, чтобы удалить образ ubuntu:12.04, вы можете использовать любую из следующих команд. Обратите внимание, что мы можем просто использовать только первые несколько символов идентификатора (5b1) для удаления изображения, поскольку других изображений с этими первыми несколькими символами нет.

    docker image rm ubuntu:12.04
    docker image rm 5b1

    Образ ubuntu:12.04 будет удален с вашего хоста вместе со всеми слоями, которые использовались для создания образа, как показано ниже.

    7. Снова перечислите образы в вашей системе, чтобы убедиться, что образ ubuntu:12.04 больше не указан.

    docker image ls

    Обратите внимание, что команда docker image ls и команда docker images делают то же самое. Однако второй теперь устарел, поскольку Docker предпочитает, чтобы разработчики использовали команду docker с ее правильными подкомандами. У нас то же самое с командой docker rmi. Эта команда используется для удаления образа и всех его слоев точно так же, как и для образа Docker rm. Docker рекомендует использовать docker rm с правильными подкомандами.

    docker image ls
    docker images

    У нас такой же выход.

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

    Здесь пригодится команда prune. Команду prune можно использовать для удаления всех неиспользуемых образов с вашего хоста за один раз. Вы можете использовать команду prune, чтобы удалить все висящие изображения, все неиспользуемые изображения или их комбинацию. Висячие изображения — это изображения, с которыми не связан хотя бы один контейнер.

    8. Запустите команду docker image prune, чтобы удалить все неиспользуемые/висячие образы из вашей системы.

    docker image prune

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

    9. Снова перечислите изображения на своем хосте, чтобы убедиться, что изображения действительно исчезли. Теперь, когда вы знаете, как просматривать, удалять и обрезать изображения с хоста. Эти основные команды помогут вам содержать вашу систему в чистоте и порядке.

    docker image ls

    Проверка образов Docker

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

    1. Docker предлагает способ проверки содержимого образа. Команда docker inspect находит путь к изображению и выводит на экран обширную информацию о нем, как показано в следующем примере.

    docker inspect ubuntu

    Как показано ниже, вывод приведенной выше команды содержит много информации. Вы видите всю информацию здесь в формате, называемом массивом JSON.

    Информация в выходных данных отображается как хранилище пар ключ-значение. Вы можете использовать инструмент Linux, такой как конвейер (|), чтобы собрать вывод для определенного ключевого слова. Затем вы можете использовать конвейерный вывод для любых целей. В следующих примерах показано, как можно использовать do this.

    2. Запустите приведенную ниже команду, чтобы сохранить вывод команды docker inspect в файл с именем image-inspect.txt.

    docker image inspect ubuntu > image-inspect.txt

    3. Затем откройте файл в любом редакторе и проверьте его содержимое.

    sudo nano image-inspect.txt

    Вывод команды docker inspect содержит много информации об изображении, как показано ниже. Внутри редактора вы можете легко перемещаться, например, прокручивать редактор вверх/вниз, чтобы просматривать различную информацию. Вы можете отредактировать информацию, если хотите.

    Вы также можете использовать аргумент --format для форматирования вывода определенным образом.

    4. Например, чтобы распечатать идентификатор образа Ubuntu, вы можете использовать следующую команду.

    docker image inspect ubuntu --format='{{.ID}}'

    5. Перечислите изображение, чтобы проверить идентификатор изображения.

    docker image ls

    6. Запустите приведенную ниже команду, чтобы направить вывод команды docker inspect в команду more. Это позволит вам разбить вывод на страницы, чтобы вы могли видеть всю информацию, содержащуюся в нем.

    docker image inspect ubuntu | more

    На этот раз вы увидите имя хоста (b32714f341a6) в разделе ContainerConfig, как показано ниже.

    7. Что делать, если вам нужно только значение имени хоста (b32714f341a6)? Вы можете добиться этого, выполнив приведенную ниже команду.

    docker image inspect ubuntu --format='{{.ContainerConfig.Hostname}}'

    Как видите, вы можете использовать команду docker inspect с инструментами Linux для дополнительной фильтрации. Как диапазон. Например, чтобы вывести список всех IP-адресов в диапазоне 192.168.0.0/16. И вы даже можете комбинировать его с другими инструментами для создания сценариев, чтобы делать еще больше интересных вещей.

    Использование тегов Docker

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

    Синтаксис добавления тега к изображению следующий:

    docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

    Ваш тег может быть любой допустимой строкой ASCII и может содержать строчные и прописные буквы, цифры, символы подчеркивания, точки и тире. Он не может начинаться с точки или тире и не должен превышать 128 символов в длину. Давайте посмотрим на пример.

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

    docker image ls

    2. Теперь запустите приведенную ниже команду, чтобы добавить тег «myubuntu» к изображению.

    docker tag ubuntu:latest ubuntu:myubuntu

    3. Теперь, если мы повторно запустим команду ls образа докера, мы увидим, что наше изображение было помечено \myubuntu\.

    Обратите внимание, что теги — это просто псевдонимы. Это означает, что изображение может иметь несколько тегов, но все они ссылаются на одно и то же исходное изображение. Таким образом, вы можете использовать любой тег, который вам нужен, если он имеет для вас смысл. И хорошей идеей будет добавлять теги при создании изображений, чтобы вы могли легко отслеживать их позже.

    4. Давайте рассмотрим еще один пример. Предположим, мы хотим создать образ Ubuntu с тегом «оригинал». Мы можем сделать это, выполнив следующую команду:

    docker tag myubuntu:latest myubuntu:original

    Приведенная выше команда создаст изображение с тегом «оригинал», основанное на изображении с тегом «самый последний». Теперь у нас есть два образа myubuntu: один с тегом «последний» и один с тегом «оригинал», но они указывают на один и тот же идентификатор исходного изображения (2b4cba85892a).

    Работа с реестрами Docker

    Теперь, когда у нас есть общее представление о том, что такое образы Docker, давайте рассмотрим работу с реестрами. Docker Hub — самый популярный публичный реестр, но есть и другие доступные варианты.

    Docker Hub — это общедоступный реестр, который можно бесплатно использовать как в личных, так и в коммерческих целях. Он имеет широкий спектр доступных изображений, и вы также можете создавать свои собственные изображения и делиться ими с другими. Чтобы использовать Docker Hub, вам просто нужно создать учетную запись, а затем установить клиент Docker. Затем вы можете использовать команду docker search для поиска изображений и команду docker pull для их загрузки.

    До сих пор мы работали с образом Ubuntu, который доступен в Docker Hub, общедоступном реестре Docker. Однако вы также можете создать частный реестр для хранения ваших изображений.

    Развертывание частного реестра Docker

    Есть несколько причин, по которым вы можете захотеть использовать частный реестр:

    • Для хранения изображений, предназначенных только для внутреннего использования. Возможно, у вас есть изображения, содержащие конфиденциальную информацию, и вы не хотите, чтобы они были общедоступными. Или, может быть, вы хотите отслеживать, какие изображения использовались в вашей среде, и не хотите, чтобы другие могли загружать их без вашего разрешения.
    • Чтобы ускорить загрузку образов в конвейере распространения CI/CD за счет их локального кэширования. Запуск собственного реестра и его самостоятельное хранение — отличный способ связать его с вашей системой CI/CD и улучшить ее.

    1. Проверьте, готов ли ваш хост докеров к созданию локального реестра.

    docker version

    2. Запустите приведенную ниже команду docker run, чтобы запустить локальный и частный реестр. Где:

    • -p 5000:5000=сопоставить порт 5000 на хосте докера с портом 5000 на контейнере
    • --restart=always=гарантирует, что контейнер всегда будет перезапущен в случае сбоя
    • --name register=имя вашего частного реестра
    • registry:2=образ, который будет использоваться для создания контейнера реестра.

    docker run -d -p 5000:5000 --restart=always --name registry registry:2

    3. Запустите приведенную ниже команду, чтобы вывести список всех запущенных контейнеров на вашем хосте докеров.

    docker ps 

    Вы увидите следующий вывод. Этот вывод указывает на то, что контейнер реестра запущен и работает на вашем хосте Docker. Нотация :::5000->5000/tcp — это ярлык, который сопоставляет порт на хосте докера с портом в контейнере реестра.

    Теперь, когда наш частный реестр запущен и работает, давайте посмотрим, как добавить в него образы. В следующем примере показано, как добавить образ Ubuntu в реестр. Во-первых, вам нужно будет загрузить образ из Docker Hub на ваш локальный хост и присвоить ему определенный тег. Затем вы переместите образ с новым тегом в свой частный реестр. Наконец, удалите образ ubuntu с локального хоста и извлеките образ из личного реестра, чтобы протестировать его.

    4. Выполните приведенную ниже команду, чтобы загрузить образ Ubuntu с тегом 20.04 из Docker Hub на локальный хост.

     docker image pull ubuntu:20.04

    5. Затем выполните приведенную ниже команду, чтобы пометить загруженный образ Ubuntu как \my-ubuntu\. Вы можете использовать любой тег, какой хотите, но хорошей идеей будет использование того, что имеет смысл для вашей организации.

    docker tag ubuntu:20.04 localhost:5000/my-ubuntu 

    6. Запустите приведенную ниже команду, чтобы отправить образ с новым тегом в ваш частный реестр, работающий на порту localhost:5000.

    docker push localhost:5000/my-ubuntu

    7. Запустите приведенную ниже команду, чтобы удалить локально кэшированные образы Ubuntu с вашего локального хоста, чтобы проверить свой частный реестр.

    docker image remove ubuntu:20.04 && docker image remove localhost:5000/my-ubuntu

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

    docker pull localhost:5000/my-ubuntu

    9. Запустите приведенную ниже команду, чтобы вывести список всех образов на вашем хосте докеров.

    docker image ls

    Вы увидите образ my-ubuntu, указанный как извлеченный из вашего частного реестра, как показано ниже. Эти выходные данные подтверждают, что образ был успешно извлечен из вашего личного реестра и ваш личный реестр работает правильно.

    Отправка, получение и подписание изображений

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

    1. Запустите команду docker login, чтобы войти в реестр Docker Hub. Укажите свое имя пользователя и пароль, когда будет предложено. Если у вас нет учетной записи Docker Hub, вы можете создать ее бесплатно на странице https://hub.docker.com/.

    docker login

    2. После входа в систему вы готовы отправлять свои изображения. Предположим, вы хотите отправить последний образ Ubuntu в Docker Hub. Вы также должны пометить изображение осмысленным именем, чтобы вы могли легко ссылаться на него в будущем. В этом примере вы пометите образ как howtoforge/ubuntu:latest. Не стесняйтесь использовать желаемое имя тега.

    docker tag ubuntu:latest howtoforge/ubuntu:latest
    docker push howtoforge/ubuntu:latest

    3. Откройте веб-браузер и перейдите в Docker Hub. Там вы увидите свое изображение. Этот репозиторий был создан на основе вашего имени пользователя и тега, который вы использовали. В этом примере репозиторий — howtoforge/ubuntu. Перейдите на вкладку тега, и вы увидите, что ваш тег был успешно применен (последний).

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

    docker image rm howtoforge/ubuntu

    Перечислите образы в вашей системе, чтобы убедиться, что образ Ubuntu был удален.

    docker image ls

    5. Выполните приведенную ниже команду, чтобы загрузить образ my-ubuntu из Docker Hub.

    docker pull howtoforge/ubuntu

    6. Снова перечислите образы на вашем хосте, чтобы убедиться, что образ ubuntu был загружен. Вы должны увидеть образ my-ubuntu в своей системе.

    docker image ls

    Пока вы работаете с образами, вы можете искать определенные образы в реестрах Docker. Вы можете использовать команду docker search для поиска образов в реестрах Docker.

    7. Запустите команду docker search, чтобы увидеть все доступные опции и параметры.

    man docker search

    Вы должны увидеть следующий вывод. Вы можете увидеть полезную опцию фильтрации, например:

    • stars=: фильтрация результатов поиска по количеству звездочек, которые изображение имеет в Docker Hub. Вы можете использовать это, чтобы найти самые популярные изображения.
    • is-automated=(true|false): отфильтруйте результаты поиска, чтобы включить или исключить автоматические сборки. Вы можете использовать это, чтобы найти изображения, которые являются или не являются автоматическими сборками.
    • is-official=(true|false): отфильтруйте результаты поиска, чтобы включить или исключить официальные изображения. Вы можете использовать это, чтобы найти изображения, которые официально поддерживаются компанией, стоящей за изображением. Например, Ubuntu является официальной компанией, создавшей образ Ubuntu. Nginx — официальная компания, создавшая образ Nginx. Вы всегда должны использовать официальные образы, где это возможно, так как они были протестированы компанией и, скорее всего, будут стабильными. При возникновении проблем с официальным образом вы можете обратиться за помощью к компании, которая предоставляет образ.

    8. Например, запустите команду docker search --filter=stars=4 ubuntu, чтобы найти образ ubuntu с 4 или более звездами в Docker Hub.

    docker search --filter=stars=4 ubuntu

    9. Запустите приведенную ниже команду, чтобы найти образ Ubuntu, который является официальным образом Ubuntu.

    docker search --filter=is-official=true ubuntu

    Результатом должен быть список репозиториев, содержащих образ Ubuntu, и указание на то, что это официальный образ Ubuntu (ОК), как показано ниже.

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

    docker search --filter="stars=100" --filter=is-official=true ubuntu

    Образы Docker — отличный способ хранить код и конфигурацию вашего приложения. Но в то же время легко накопить много неиспользуемых образов, особенно если вы тестируете разные приложения или пробуете разные конфигурации. Вы можете обнаружить, что вам больше не нужны некоторые изображения в ваших реестрах.

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

    11. Например, в Docker Hub перейдите в репозиторий howtoforge/ubuntu. Нажмите «Настройка»> «Удалить репозиторий». Подтвердите, что хотите удалить репозиторий, введя имя репозитория. Нажмите Удалить.

    Вернитесь к панели инструментов, и вы увидите, что репозиторий howtoforge/ubuntu теперь удален вместе с образом ubuntu.

    Заключение

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

    • Файлы Docker
    • Сеть
    • Тома
    • Услуги
    • Режим роя