Docker desktop что это
Перейти к содержимому

Docker desktop что это

  • автор:

Что такое Docker

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

Время чтения: 10 мин

Открыть/закрыть навигацию по статье

  1. Кратко
  2. Как начать
  3. Как понять
    1. Важные службы
    2. Объекты Docker
    3. Инструменты
    1. Мониторинг запущенных контейнеров
    2. Запуск контейнеров
    3. Управление образами
    4. Управление контейнерами
    5. Управление томами
    1. Игорь Коровченко советует
    1. Опишите жизненный цикл контейнера Docker

    Контрибьюторы:

    Обновлено 20 декабря 2021

    Кратко

    Скопировать ссылку «Кратко» Скопировано

    Docker — это технология, которая позволяет создавать и использовать приложения в «родном» окружении. В основе Docker лежит идея: если приложение работает у вас, то оно должно работать где угодно. Способ этого добиться очень простой — нужно упаковать настройки окружения вместе с приложением.

    Docker чаще всего применяется для развёртывания серверных приложений, но может использоваться и в мире фронтенда для:

    • сборки бандлов;
    • статического анализа кода;
    • тестирования приложений;
    • подготовки ресурсов (картинок, шрифтов, иконок и пр.);
    • воспроизводимых экспериментов с новыми технологиями и демок;
    • настройки инфраструктуры разработчика (редактора кода, платформы, пакетных менеджеров, линтеров и прочего).

    Как начать

    Скопировать ссылку «Как начать» Скопировано

    • Windows — Docker Desktop for Windows
    • macOS — Docker Desktop for Mac
    • Linux — в зависимости от версии: CentOS, Debian, Fedora, Raspbian, Ubuntu.

    Запустите Docker и проверьте его работоспособность с помощью графического интерфейса Dashboard (для Mac или Windows) или команды в терминале (для всех операционных систем):

     docker --version docker --version      

    У создателей Docker есть готовая демка, которую можно запустить командой:

     docker run -d -p 80:80 docker/getting-started docker run -d -p 80:80 docker/getting-started     

    Теперь можно открыть в браузере документацию Docker по адресу http://localhost.

    Как понять

    Скопировать ссылку «Как понять» Скопировано

    Запуск готового веб-приложения — наиболее популярный сценарий использования. Демка Docker — самое простое, что можно сделать «из коробки». Вам не пришлось устанавливать и запускать веб-сервер, не пришлось разбираться с какими-либо настройками, вы не трудились устанавливать у себя Node.js и не столкнулись ни с какими сложностями. Представьте, что вы передали проект другому разработчику, и вам не приходится возиться с тем, чтобы проект запускался, не приходится говорить: «А у меня все работало ��»

    Без Docker вы, скорее всего, действовали бы так:

    1. Узнали операционную систему на компьютере разработчика.
    2. Сформировали сценарий или инструкцию настройки окружения.
    3. Протестировали, как развёртывается ваше приложение.
    4. Передали приложение разработчику, и ждали результаты.

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

    Docker упаковывает приложение так, что будет счастлив любой, кто его получит ��

    Давайте разберёмся, как это происходит. Что должен делать Docker с вашим приложением, какое окружение он должен подготовить?

    Рассмотрим пример с демкой от создателей Docker. Когда вы выполнили команду docker run , произошло следующее:

    1. Docker нашёл и загрузил приложение с именем docker / getting — started из реестра приложений Docker Hub. Приложение уже было заботливо упаковано со всеми необходимыми ему утилитами и программами. Такая упаковка называется образ (Docker Image). Образ обычно содержит в себе операционную систему на базе Linux, стартовую конфигурацию для установки служб, утилит, приложений, зависимостей проекта — все это называется окружением приложения.
    2. Docker создал контейнер (Docker Container) на основе образа. Контейнер — это конкретный экземпляр образа на вашем компьютере. Отношение «образ — контейнер» примерно такое же, как у пары «класс — объект класса» в ООП.
    3. Docker запустил контейнер с веб-сервером Nginx внутри, и веб-приложение «Справка по Docker» заработало. Для вашей операционной системы запустить контейнер — это все равно что запустить любое приложение или сервис.

    Вы просто начали использовать веб-приложение, никаких сложностей.

    Модель стандартного применения Docker

    Перед тем, как мы научимся готовить образ сами, необходимо разобраться с терминами. Лучше сделать это на берегу ��

    Важные службы

    Скопировать ссылку «Важные службы» Скопировано

    Движок Docker Engine — приложение для управления объектами Docker. Оно включает в себя три компонента:

    1. сервер (Docker Daemon);
    2. интерфейс (Docker API);
    3. консольный клиент (Docker CLI).

    Ваш компьютер называется Docker Host. Все операции, которые мы выполняем в интерфейсе или через консоль, выполняются сервером через API движка.

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

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

    Объекты Docker

    Скопировать ссылку «Объекты Docker» Скопировано

    Образ (Docker Image) — прототип будущего контейнера, содержащий операционную систему, приложение или проект для сборки приложения. Образы состоят из слоёв. Каждый новый слой — это надстройка над предыдущим. Слои должны надстраиваться поверх базового образа, формируя новый. Например, базовым образом может быть образ операционной системы.

    Слои образа описываются в специальных файлах конфигурации. Как правило, для этого используется Dockerfile. Конфигурационный файл всегда начинается с указания базового образа, имя которого прописывается после директивы FROM . Дальше могут идти разные надстройки (новые слои) образа. Вы можете задать рабочую папку проекта с помощью директивы WORKDIR , скопировать файлы в эту рабочую папку директивой COPY , запустить выполнение команды или нескольких команд в терминале директивой RUN . Пример конфигурации:

     FROM ubuntu:18.04WORKDIR /appCOPY . .RUN apt-get update && apt-get upgrade FROM ubuntu:18.04 WORKDIR /app COPY . . RUN apt-get update && apt-get upgrade      

    Контейнер (Docker Container) — уже собранное и запущенное приложение в изолированном окружении, которое формируется послойно, в соответствии с образом. Каждый новый слой расширяет функциональность предыдущего, формируя стек используемых инструментов, платформ и настроек системных служб. Файловая система контейнера тоже стековая (Union File Systems). Каталоги и файлы отдельного слоя образа накладываются друг на друга, образуя единое целое.

    Том (Docker Volume) — папка, которую можно подключить (говорят «примонтировать») к контейнерам. Папка может быть связана с конкретной папкой на вашем компьютере, а может быть как бы сетевой для контейнеров на вашем компьютере. Тома необходимы для хранения файлов конфигурации, критических с точки зрения безопасности, файлов баз данных, файлов, которые нельзя удалять после окончания работы приложения.

    Сеть (Docker Network) — виртуальная локальная сеть, которая позволяет совместно использовать несколько запущенных контейнеров и соединять запущенный контейнер с вашим компьютером. В основном вы будете использовать три режима работы сетевой инфраструктуры Docker:

    1. bridge — когда контейнеры могут взаимодействовать между собой как веб-сервер и база данных.
    2. host — для доступа к локальному сетевому окружению на вашем компьютере.
    3. none — сеть для контейнеров полностью отключена.

    Инструменты

    Скопировать ссылку «Инструменты» Скопировано

    Docker Hub (реестр) — официальный реестр образов.

    Опубликованные образы хранятся в Docker Hub. Существуют и другие публичные реестры образов:

    • Google Cloud Container Registry;
    • Azure Container Registry;
    • IBM Cloud Container Registry;
    • Oracle Cloud Infrastructure Container Registry;
    • Yandex Container Registry.

    Предпочитайте официальные образы Docker, которые обновляются самой компанией. Они относительно безопасны. Для фронтенд-разработчика могут быть интересны:

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

    Консольный клиент содержит команды для управления объектами Docker. Список основных команд:

    Как пользоваться

    Скопировать ссылку «Как пользоваться» Скопировано

    Ключи командного интерфейса Docker CLI хорошо проработаны и похожи на консольные команды в bash. Например, дополнительный ключ prune позволяет удалять неиспользуемые объекты. Ключ rm служит для удаления, а ключ ls для просмотра объектов. Объекты Docker в обязательном порядке имеют уникальное имя. Если вы не именуете объект специально, то имя объекта формируется с помощью хэш-функции. Если вы попытаетесь создать объект одного и того же типа с уже использованным именем, в этом вам будет отказано. Как же пользоваться консольным клиентом?

    Мониторинг запущенных контейнеров

    Скопировать ссылку «Мониторинг запущенных контейнеров» Скопировано

    • docker ps — просмотр запущенных контейнеров.
    • docker ps — a — ключ -a выводит и запущенные, и остановленные контейнеры.
    • docker ps — s — ключ -s выводит дисковое пространство, используемое каждым запущенным контейнером.
    • docker ps — f name = hello — ключ -f фильтрует список контейнеров по имени, например, hello .

    Полный список ключей для команды docker ps доступен в документации.

    Запуск контейнеров

    Скопировать ссылку «Запуск контейнеров» Скопировано

    Для запуска контейнера, который доступен локально или на Docker Hub, выполните команду:

     docker run --name test -i -t hello docker run --name test -i -t hello     

    Ключ — — name используется для установки имени запущенного контейнера. Ключи -i и -t указывают, что для запуска контейнера будет использоваться стандартный поток ввода и терминал TTY соответственно. Для того чтобы при запуске контейнера примонтировать том, который будет связан с папкой на вашем компьютере, а потом получить доступ к контейнеру через терминал, выполните команду:

     docker run -t -i --mount type=bind,src=/data,dst=/data hello bash docker run -t -i --mount type=bind,src=/data,dst=/data hello bash      

    Полный список ключей для команды docker run доступен в документации.

    Управление образами

    Скопировать ссылку «Управление образами» Скопировано

    Вы можете получить список всех доступных локально образов с помощью команды:

     docker image ls docker image ls      

    Ключи prune , rm действуют обычным способом, позволяя удалить неиспользуемые или конкретные образы соответственно. Для работы с реестром необходимо использовать следующие команды:

    • docker image pull hello — загрузка образа с именем hello из реестра;
    • docker image push hello — отправка образа с именем hello в реестр;
    • docker image inspect hello — полная информация о контейнере hello ;
    • docker image build — собрать контейнер из текущей папки с учётом Dockerfile.

    Полный список ключей для команды docker image доступен в документации.

    Управление контейнерами

    Скопировать ссылку «Управление контейнерами» Скопировано

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

    Команда для запуска контейнера:

     docker container start docker container start     

    Команда для перезапуска контейнера:

     docker container restart docker container restart     

    Команда для остановки контейнера:

     docker container stop docker container stop     

    Команда для постановки контейнера на паузу:

     docker container pause docker container pause     

    Полный список ключей для команды docker container доступен в документации.

    Управление томами

    Скопировать ссылку «Управление томами» Скопировано

    • docker volume ls — вывод всех томов.
    • docker volume ls — f name = hello — вывод всех томов с фильтрацией по имени, например, hello .
    • docker volume create hello — создание нового тома, например, hello .
    • docker volume inspect hello — исчерпывающая информация о томе.

    Полный список ключей для команды docker volume доступен в документации.

    На практике

    Скопировать ссылку «На практике» Скопировано

    Игорь Коровченко советует

    Скопировать ссылку «Игорь Коровченко советует» Скопировано

    Рассмотрим несколько примеров, когда Docker может пригодиться.

    Например, вы можете запустить свой сервер Minecraft одной командой:

     docker run -e EULA=TRUE -d -p 25565:25565 --name mc itzg/minecraft-server docker run -e EULA=TRUE -d -p 25565:25565 --name mc itzg/minecraft-server     

    Подобных образов достаточно много на Docker Hub. Для ежедневной работы полезнее будут образы с популярными инструментами или сервисами, например:

    1. Веб-сервер Nginx;
    2. Веб-сервер Apache;
    3. Связка базы данных MongoDB и фреймворка Express;
    4. Сервис Sentry для мониторинга ошибок в браузерах;
    5. Линтер SonarQube с поддержкой большого количества языков;
    6. Инструмент для оценки качества страниц Google Lighthouse.

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

    Скопировать ссылку «Попробовать движок сайта без установки» Скопировано

    Иногда нам нужно посмотреть, как работает та или иная CMS (Content Management System). CMS — это веб-приложение, которое позволяет управлять содержимым сайта и внешним видом через веб-интерфейс. Чтобы такое приложение заработало, нужно установить базу данных, веб-сервер и интерпретатор языка, на котором написана CMS. Но можно и ничего не устанавливать! Docker позволяет запустить CMS одной командой. После запуска вы сможете работать с CMS через веб-интерфейс в своём браузере или через терминал, если понадобится доступ к файлам и ресурсам приложения.

    Запускаем WordPress одной командой:

     docker run --name some-wordpress -p 8080:80 -d wordpress docker run --name some-wordpress -p 8080:80 -d wordpress     

    Запускаем Drupal командой:

     docker run --name some-drupal -p 8080:80 -d drupal docker run --name some-drupal -p 8080:80 -d drupal     

    Попробовать новый фреймворк

    Скопировать ссылку «Попробовать новый фреймворк» Скопировано

    Фронтенд-разработчику Docker даёт возможность попробовать разные технологии без траты времени на установку и настройку. Например, упаковать приложение на платформе Node.js в контейнер не составит большого труда. Добавьте в проект файл Dockerfile:

     FROM node:12 # Создание директории приложенияWORKDIR /app # Установка зависимостей, учитывая package.json и package-lock.jsonCOPY package*.json ./ RUN npm i # Сборка проекта, если есть необходимостьRUN npm ci --only=production # Копирование исходного кода приложенияCOPY . . EXPOSE 8080CMD [ "node", "app.js" ] FROM node:12 # Создание директории приложения WORKDIR /app # Установка зависимостей, учитывая package.json и package-lock.json COPY package*.json ./ RUN npm i # Сборка проекта, если есть необходимость RUN npm ci --only=production # Копирование исходного кода приложения COPY . . EXPOSE 8080 CMD [ "node", "app.js" ]      

    После этого выполните команду:

     docker build . docker build .      

    Точка в конце означает, что образ собирается из текущей папки. По умолчанию для сборки используется файл с именем Dockerfile. После ключа -t можно задать имя образа:

     docker build -t app . docker build -t app .      

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

    Вы можете начать проект на Angular, React или Vue, полностью переместив разработку внутрь контейнера. Популярные редакторы так или иначе поддерживают эту возможность. Такой подход позволит учитывать все особенности и тонкости настройки проекта не только вам, как автору, но и тем, кто будет работать с проектом в будущем.

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

    Готовить картинки и другие ресурсы

    Скопировать ссылку «Готовить картинки и другие ресурсы» Скопировано

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

    С помощью утилиты ImageMagick можно работать с картинками в консоли. Вы можете установить её на свой компьютер или использовать готовый образ. Например, чтобы изменить размеры картинки, выполните команду:

     docker run -v /your/images:/imgs dpokidov/imagemagick /imgs/sample.png -resize 100x100 /imgs/resized-sample.png docker run -v /your/images:/imgs dpokidov/imagemagick /imgs/sample.png -resize 100x100 /imgs/resized-sample.png     

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

     docker container run --rm -v $(pwd):/hwd wopolow/glyphhanger glyphhanger docker container run --rm -v $(pwd):/hwd wopolow/glyphhanger glyphhanger     

    Можно также заменить эту длинную команду алиасом в файле настроек терминала:

     alias glyphy='~/.docker-glyphhanger/docker-glyphhanger.sh' alias glyphy='~/.docker-glyphhanger/docker-glyphhanger.sh'      

    Предварительно надо написать соответствующий скрипт в файле ~ / . docker — glyphhanger / docker — glyphhanger . sh :

     #!/bin/bash # Проверка работающей службы Dockerif ! (command -v docker >> /dev/null)then echo "docker command not found!"; exit 1;fi # Проверка нужного образа в локальном хранилищеif !(docker image ls | grep wopolow/glyphhanger >> /dev/null)then docker pull wopolow/glyphhangerfi # Запуск утилиты glyphhangerif ! [ -z "$1" ] && [ $1 != "install" ]then docker container run --rm -v $(pwd):/hwd wopolow/glyphhanger glyphhanger $@else echo "docker-glyphhanger: internal installation complete";fi #!/bin/bash # Проверка работающей службы Docker if ! (command -v docker >> /dev/null) then echo "docker command not found!"; exit 1; fi # Проверка нужного образа в локальном хранилище if !(docker image ls | grep wopolow/glyphhanger >> /dev/null) then docker pull wopolow/glyphhanger fi # Запуск утилиты glyphhanger if ! [ -z "$1" ] && [ $1 != "install" ] then docker container run --rm -v $(pwd):/hwd wopolow/glyphhanger glyphhanger $@ else echo "docker-glyphhanger: internal installation complete"; fi      

    После этого вы сможете производить всякие манипуляции со шрифтами простой командой, используя параметры утилиты glyphhanger :

     glyphy glyphy параметры>      

    + Развернуть

    На собеседовании

    Скопировать ссылку «На собеседовании» Скопировано

    Docker Desktop — самый простой способ запустить контейнер приложения

    Docker Desktop - самый простой способ запустить контейнер приложения

    Эта статья даст вам полное представление о Docker Desktop для пользователей Windows и MAC. Мы изучим установку Docker Desktop на компьютерах с Windows и Mac. После установки мы также попытаемся выполнить некоторые операции Docker.

    Что такое Docker Desktop?

    Docker Desktop — это собственное настольное приложение, разработанное Docker для пользователей Windows и MAC. Это самый простой способ запуска, сборки, отладки и тестирования приложений Dockerized.

    Docker Desktop предлагает важные и наиболее полезные функции, такие как быстрые циклы редактирования, уведомления об изменениях файлов, встроенная поддержка корпоративной сети и гибкость для работы с собственным выбором прокси и VPN.

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

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

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

    Версии Docker

    Docker в основном поставляется в двух версиях, в Community и ENterprise.

    Community версия поставляется с бесплатным набором продуктов Docker. ENterprise корпоративная версия представляет собой сертифицированную контейнерную платформу, которая предоставляет коммерческим пользователям дополнительные функции, такие как безопасность образов, управление образами, оркестровка и управление средой выполнения контейнеров, но по разумной цене.

    Мы начнем наше обучение с Community Edition. Контейнеры Docker, работающие в конкретной операционной системе, совместно используют ядро ​​ОС. Это означает, что мы не можем использовать ядро ​​Windows (хост) для запуска контейнеров Linux или наоборот. Чтобы проделать это, у нас есть Docker Desktop для Windows и MAC.

    Выпуски Docker Desktop

    Docker Desktop выпускается в двух вариантах.

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

    Docker на Windows

    Есть два варианта Docker на Windows.

    1. Использование Docker Toolbox

    Docker Toolbox предоставляет набор легких инструментов.

    • Oracle virtual box
    • Docker Engine
    • Docker Machine
    • Docker compose
    • Kitematic GUI

    Вышеуказанные инструменты устраняют необходимость развертывания отдельной виртуальной машины для запуска Docker. Просто установите исполняемый файл панели инструментов Docker непосредственно в Windows и начните разработку приложений. Требуется 64-битная ОС и Windows 7 или выше с включенным режимом виртуализации.

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

    2. Использование Docker Desktop

    Docker Desktop — это новейшая технология, используемая для Docker в Windows. Он заменяет виртуальную машину Oracle собственной технологией виртуализации, доступной в Windows, то есть Microsoft Hyper-V.

    Он по-прежнему будет запускать Docker на Linux-машине, созданной под ним. Но на этот раз вместо виртуальной машины Oracle мы использовали нативный Microsoft Hyper-V.

    DOCKER DESKTOP доступен для Linux

    Сегодня стало известно об общей доступности Docker Desktop для Linux, разработчикам, использующим среду рабочего стола Linux, точно такие же возможности Docker Desktop, которые в настоящее время доступны в macOS и Windows.

    Во-первых, что такое Docker Desktop?

    Некоторые разработчики Linux, которые использовали только Docker Engine, могут не знать о Docker Desktop, поэтому давайте дадим краткий обзор. Docker Desktop — это простое в установке приложение, которое позволяет создавать и совместно использовать контейнерные приложения и микросервисы. Оно поставляется в комплекте с контейнерными инструментами, такими как Kubernetes, Docker Compose, BuildKit и сканером уязвимостей.

    Разработчики могут использовать Docker Dashboard для визуального управления всеми ресурсами своего контейнера — и спокойно отдыхать, зная, что Desktop установил разумные и безопасные значения по умолчанию для потребления ресурсов. Кроме того, Docker Desktop теперь включает в себя расширения Docker, позволяющие разработчикам повысить свою продуктивность за счет интеграции дополнительных инструментов разработки, созданных партнерами Docker, сообществом или их товарищами по команде!

    Почему создали Docker Desktop для Linux?

    Docker Desktop для Linux был вторым по популярности в общедоступной дорожной карте Docker . Разработчики Linux, которые голосовали за выпуск дорожной карты, хотят:

    1. Унифицированный интерфейс Docker для всех основных ОС
    2. Мгновенный доступ к новым функциям (например, расширениям Docker ), которые исторически были доступны только на настольных компьютерах для Windows и Mac.
    3. Полная интеграция с Kubernetes, которую обеспечивает Docker Desktop
    4. Пользовательский интерфейс Docker Desktop, который значительно упрощает управление томами, контейнерами и образами, а также предоставляет информацию о процессах Docker, запущенных локально на вашем компьютере.

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

    Где получить?

    Чтобы начать работу с Desktop для Linux, посетите документацию Docker , чтобы найти соответствующие инструкции для выбранного вами дистрибутива. При запуске предоставляются пакеты и пакеты с конкретной поддержкой Ubuntu, Debian и Fedora. Также есть экспериментальный пакет для ArchLinux, в ближайшие недели будет добавлена поддержка 64-битных вариантов ОС Raspberry Pi. deb rpm

    Что дальше?

    Docker Desktop постоянно развивается. В ближайшие планы относительно Docker Desktop для Linux входит максимальное упрощение процессов установки и обновления, например, установка одной командой, например apt-get install docker-desktop .

    Похожие статьи:

    1. Docker Container ping: Operation not permitted
    2. Visual Studio Team Services создание образа в Docker Hub
    3. Установка Docker
    4. Решение проблем с безопасностью Docker

    Установка и использование Docker в Ubuntu 20.04

    Установка и использование Docker в Ubuntu 20.04

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

    Подробное описание различных компонентов контейнера Docker см. в статье Экосистема Docker: знакомство с базовыми компонентами.

    В этом обучающем модуле мы установим и начнем использовать Docker Community Edition (CE) на сервере Ubuntu 20.04. Вы самостоятельно установите Docker, поработаете с контейнерами и образами и разместите образ в репозитории Docker.

    Предварительные требования

    Для выполнения этого руководства вам потребуется следующее:

    • Один сервер Ubuntu 20.04, настроенный в соответствии с руководством по начальной настройке сервера Ubuntu 20.04, включая пользователя non-root user с привилегиями sudo и брандмауэр.
    • Учетная запись на Docker Hub, если вы хотите создавать собственные образы и загружать их на Docker Hub, как показано в шагах 7 и 8.

    Шаг 1 — Установка Docker

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

    Первым делом обновите существующий список пакетов:

    Затем установите несколько необходимых пакетов, которые позволяют apt использовать пакеты через HTTPS:

    Добавьте ключ GPG для официального репозитория Docker в вашу систему:

    Добавьте репозиторий Docker в источники APT:

      sudo add-apt-repository «deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable»

    Потом обновите базу данных пакетов и добавьте в нее пакеты Docker из недавно добавленного репозитория:

    Убедитесь, что установка будет выполняться из репозитория Docker, а не из репозитория Ubuntu по умолчанию:

    Вы должны получить следующий вывод, хотя номер версии Docker может отличаться:

    Output of apt-cache policy docker-ce

    docker-ce: Installed: (none) Candidate: 5:19.03.9~3-0~ubuntu-focal Version table: 5:19.03.9~3-0~ubuntu-focal 500 500 https://download.docker.com/linux/ubuntu focal/stable amd64 Packages 

    Обратите внимание, что docker-ce не установлен, но является кандидатом на установку из репозитория Docker для Ubuntu 20.04 (версия focal ).

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

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

    Output
    ● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2020-05-19 17:00:41 UTC; 17s ago TriggeredBy: ● docker.socket Docs: https://docs.docker.com Main PID: 24321 (dockerd) Tasks: 8 Memory: 46.4M CGroup: /system.slice/docker.service └─24321 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

    После установки Docker у вас будет доступ не только к службе Docker (демон-процесс), но и к утилите командной строки docker или клиенту Docker. Мы узнаем, как использовать команду docker позже в этом обучающем руководстве.

    Шаг 2 — Настройка команды Docker без sudo (необязательно)

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

    Output
    docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?. See 'docker run --help'.

    Если вы не хотите каждый раз вводить sudo при запуске команды docker , добавьте свое имя пользователя в группу docker :

    Чтобы применить добавление нового члена группы, выйдите и войдите на сервер или введите следующее:

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

    Проверьте, что ваш пользователь добавлен в группу docker, введя следующее:

    Output
    sammy sudo docker

    Если вам нужно добавить пользователя в группу docker , для которой вы не выполнили вход, объявите имя пользователя явно, используя следующую команду:

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

    Давайте перейдем к знакомству с командой docker .

    Шаг 3 — Использование команды Docker

    Использование docker подразумевает передачу ему цепочки опций и команд, за которыми следуют аргументы. Синтаксис имеет следующую форму:

    Чтобы просмотреть все доступные субкоманды, введите:

    Для 19-й версии Docker полный список субкоманд выглядит следующим образом:

    Output
    attach Attach local standard input, output, and error streams to a running container build Build an image from a Dockerfile commit Create a new image from a container's changes cp Copy files/folders between a container and the local filesystem create Create a new container diff Inspect changes to files or directories on a container's filesystem events Get real time events from the server exec Run a command in a running container export Export a container's filesystem as a tar archive history Show the history of an image images List images import Import the contents from a tarball to create a filesystem image info Display system-wide information inspect Return low-level information on Docker objects kill Kill one or more running containers load Load an image from a tar archive or STDIN login Log in to a Docker registry logout Log out from a Docker registry logs Fetch the logs of a container pause Pause all processes within one or more containers port List port mappings or a specific mapping for the container ps List containers pull Pull an image or a repository from a registry push Push an image or a repository to a registry rename Rename a container restart Restart one or more containers rm Remove one or more containers rmi Remove one or more images run Run a command in a new container save Save one or more images to a tar archive (streamed to STDOUT by default) search Search the Docker Hub for images start Start one or more stopped containers stats Display a live stream of container(s) resource usage statistics stop Stop one or more running containers tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE top Display the running processes of a container unpause Unpause all processes within one or more containers update Update configuration of one or more containers version Show the Docker version information wait Block until one or more containers stop, then print their exit codes

    Чтобы просмотреть параметры, доступные для конкретной команды, введите:

    Чтобы просмотреть общесистемную информацию о Docker, введите следующее:

    Давайте изучим некоторые из этих команд. Сейчас мы начнем работать с образами.

    Шаг 4 — Работа с образами Docker

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

    Чтобы проверить, можно ли получить доступ к образам из Docker Hub и загрузить их, введите следующую команду:

    Данный вывод говорит о том, что Docker работает корректно:

    Output
    Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 0e03bdcc26d7: Pull complete Digest: sha256:6a65f928fb91fcfbc963f7aa6d57c8eeb426ad9a20c7ee045538ef34847f44f1 Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. .

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

    Вы можете выполнять поиск доступных на Docker Hub с помощью команды docker с субкомандой search . Например, чтобы найти образ Ubuntu, введите:

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

    Output
    NAME DESCRIPTION STARS OFFICIAL AUTOMATED ubuntu Ubuntu is a Debian-based Linux operating sys… 10908 [OK] dorowu/ubuntu-desktop-lxde-vnc Docker image to provide HTML5 VNC interface … 428 [OK] rastasheep/ubuntu-sshd Dockerized SSH service, built on top of offi… 244 [OK] consol/ubuntu-xfce-vnc Ubuntu container with "headless" VNC session… 218 [OK] ubuntu-upstart Upstart is an event-based replacement for th… 108 [OK] ansible/ubuntu14.04-ansible Ubuntu 14.04 LTS with .

    В столбце OFFICIAL OK указывает на образ, созданный и поддерживаемый компанией, реализующей проект. После того как вы определили образ, который хотели бы использовать, вы можете загрузить его на свой компьютер с помощью субкоманды pull .

    Запустите следующую команду, чтобы загрузить официальный образ ubuntu на свой компьютер:

    Вывод должен выглядеть следующим образом:

    Output
    Using default tag: latest latest: Pulling from library/ubuntu d51af753c3d3: Pull complete fc878cd0a91c: Pull complete 6154df8ff988: Pull complete fee5db0ff82f: Pull complete Digest: sha256:747d2dbbaaee995098c9792d99bd333c6783ce56150d1b11e333bbceed5c54d7 Status: Downloaded newer image for ubuntu:latest docker.io/library/ubuntu:latest

    После того как образ будет загружен, вы сможете запустить контейнер с помощью загруженного образа с помощью субкоманды run . Как вы уже видели на примере hello-world , если образ не был загружен, когда docker выполняется с субкомандой run , клиент Docker сначала загружает образ, а затем запускает контейнер с этим образом.

    Чтобы просмотреть образы, которые были загружены на ваш компьютер, введите:

    Вывод команды должен выглядеть примерно следующим образом:

    Output
    REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu latest 1d622ef86b13 3 weeks ago 73.9MB hello-world latest bf756fb1ae65 4 months ago 13.3kB

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

    Давайте более подробно рассмотрим, как запускаются контейнеры.

    Шаг 5 — Запуск контейнеров Docker

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

    В качестве примера мы запустим контейнер с самым последним образом образ Ubuntu. Сочетание переключателей -i и -t предоставляет вам доступ к интерактивной командной оболочке внутри контейнера:

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

    Output
    root@d9b100f2f636:/#

    Обратите внимание на идентификатор контейнер в запросе команды. В данном примере это d9b100f2f636 . Вам потребуется этот идентификатор для определения контейнера, когда вы захотите его удалить.

    Теперь вы можете запустить любую команду внутри контейнера. Например, сейчас мы обновим базу данных пакетов внутри контейнера. Вам не потребуется начинать любую команду с sudo , потому что вы работаете внутри контейнера как root-пользователь:

    После этого вы можете установите любое приложение внутри контейнера. Давайте установим Node.js:

    Эта команда устанавливает Node.js внутри контейнера из официального репозитория Ubuntu. После завершения установки проверьте, что Node.js был установлен успешно:

    Вы увидите номер версии, отображаемый в терминале:

    Output
    v10.19.0

    Любые изменения, которые вы вносите внутри контейнера, применяются только к контейнеру.

    Чтобы выйти из контейнера, введите exit .

    Далее мы рассмотрим управление контейнерами в нашей системе.

    Шаг 6 — Управление контейнерами Docker

    После использования Docker в течение определенного времени, у вас будет много активных (запущенных) и неактивных контейнеров на компьютере. Чтобы просмотреть активные, используйте следующую команду:

    Вывод будет выглядеть примерно следующим образом:

    Output
    CONTAINER ID IMAGE COMMAND CREATED

    В этом обучающем руководстве вы запустили два контейнера: один из образа hello-world и другой из образа ubuntu . Оба контейнера больше не запущены, но все еще существуют в вашей системе.

    Чтобы просмотреть все контейнеры — активные и неактивные, воспользуйтесь командой docker ps с переключателем -a :

    Вывод будет выглядеть следующим образом:

    1c08a7a0d0e4 ubuntu "/bin/bash" 2 minutes ago Exited (0) 8 seconds ago quizzical_mcnulty a707221a5f6c hello-world "/hello" 6 minutes ago Exited (0) 6 minutes ago youthful_curie 

    Чтобы просмотреть последний созданный вами контейнер, передайте переключатель -l :

    Чтобы запустить остановленный контейнер, воспользуйтесь docker start с идентификатором контейнера или именем контейнера. Давайте запустим контейнер на базе Ubuntu с идентификатором 1c08a7a0d0e4 :

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

    Output
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1c08a7a0d0e4 ubuntu "/bin/bash" 3 minutes ago Up 5 seconds quizzical_mcnulty

    Чтобы остановить запущенный контейнер, используйте docker stop с идентификатором или именем контейнера. На этот раз мы будем использовать имя, которое Docker присвоил контейнеру, т.е. quizzical_mcnulty :

    После того как вы решили, что вам больше не потребуется контейнер, удалите его с помощью команды docker rm , снова добавив идентификатор контейнера или его имя. Используйте команду docker ps -a , чтобы найти идентификатор или имя контейнера, связанного с образом hello-world , и удалить его.

    Вы можете запустить новый контейнер и присвоить ему имя с помощью переключателя —name . Вы также можете использовать переключатель ​—rm , чтобы создать контейнер, который удаляется после остановки. Изучите команду docker run help , чтобы получить больше информации об этих и прочих опциях.

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

    Шаг 7 — Внесение изменений в контейнер для образа Docker

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

    Данный раздел показывает, как сохранить состояние контейнера в виде нового образа Docker.

    После установки Node.js внутри контейнера Ubuntu у вас появился контейнер, запускающий образ, но этот контейнер отличается от образа, который вы использовали для его создания. Но позже вам может снова потребоваться этот контейнер Node.js в качестве основы для новых образов.

    Затем внесите изменения в новый экземпляр образа Docker с помощью следующей команды.

    Переключатель -m используется в качестве сообщения о внесении изменений, которое помогает вам и остальным узнать, какие изменения вы внесли, в то время как -a используется для указания автора. container_id — это тот самый идентификатор, который вы отмечали ранее в этом руководстве, когда запускали интерактивную сессию Docker. Если вы не создавали дополнительные репозитории на Docker Hub, repository , как правило, является вашим именем пользователя на Docker Hub.

    Например, для пользователя sammy с идентификатором контейнера d9b100f2f2f6 команда будет выглядеть следующим образом:

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

    Список образов Docker теперь будет содержать новый образ, а также старый образ, из которого он будет получен:

    Вывод будет выглядеть следующим образом:

    Output
    REPOSITORY TAG IMAGE ID CREATED SIZE sammy/ubuntu-nodejs latest 7c1f35226ca6 7 seconds ago 179MB .

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

    Вы также можете создавать образы из Dockerfile , что позволяет автоматизировать установку программного обеспечения в новом образе. Однако это не относится к предмету данного обучающего руководства.

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

    Шаг 8 — Загрузка образов Docker в репозиторий Docker

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

    Данный раздел посвящен добавлению образа Docker на Docker Hub. Чтобы узнать, как создать свой собственный частный реестр Docker, ознакомьтесь со статьей Настройка частного реестра Docker на Ubuntu 14.04.

    Чтобы загрузить свой образ, выполните вход в Docker Hub.

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

    Примечание. Если ваше имя пользователя в реестре Docker отличается от локального имени пользователя, которое вы использовали при создании образа, вам потребуется пометить ваш образ именем пользователя в реестре. Для примера, приведенного на последнем шаге, вам необходимо ввести следующую команду:

    Затем вы можете загрузить свой образ с помощью следующей команды:

    Чтобы загрузить образ ubuntu-nodejs в репозиторий sammy, необходимо использовать следующую команду:

    Данный процесс может занять некоторое время, необходимое на загрузку образов, но после завершения вывод будет выглядеть следующим образом:

    Output
    The push refers to a repository [docker.io/sammy/ubuntu-nodejs] e3fbbfb44187: Pushed 5f70bf18a086: Pushed a3b5c80a4eba: Pushed 7f18b442972b: Pushed 3ce512daaf78: Pushed 7aae4540b42d: Pushed .

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

    Новый образ Docker в Docker Hub

    Если при попытке добавления возникает подобная ошибка, вы, скорее всего, не выполнили вход:

    Output
    The push refers to a repository [docker.io/sammy/ubuntu-nodejs] e3fbbfb44187: Preparing 5f70bf18a086: Preparing a3b5c80a4eba: Preparing 7f18b442972b: Preparing 3ce512daaf78: Preparing 7aae4540b42d: Waiting unauthorized: authentication required

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

    Теперь вы можете использовать docker pull sammy / ubuntu-nodejs , чтобы загрузить образ на новый компьютер и использовать его для запуска нового контейнера.

    Заключение

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

    Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *