Быстро освоить базовые знания Docker за 10 минут

задняя часть Docker

Оригинальный автор, публичный аккаунт [программист чтение], прошу обратить внимание на паблик аккаунт, просьба указывать источник перепечатываемой статьи.

DockerВ настоящее время это популярная контейнерная технология. Я считаю, что как разработчик вы, должно быть, слышали о ней или использовали ее.DockerПонимайте это как легковесную виртуальную машину, но на самом делеDockerс виртуальной машиной (VM) — это две разные технологии виртуализации компьютеров, и многие люди подумают, что если у вас есть виртуальная машина, зачем вам ее использовать?DockerШерстяная ткань?

С небольшим сомнением в уме, давайте учиться вместеDockerБар.

Примитивные годы без технологии виртуализации

Давайте подумаем об этом, в «древние» дни без технологии виртуализации вычислений, если бы мы развернули приложение (Application), каковы общие шаги?

Первым шагом должна быть подготовка физического сервера, а затем установка операционной системы на физическом сервере (Operating System), после того, как у нас установлена ​​операционная система, мы устанавливаем и запускаем наше приложение в операционной системе.Этот процесс можно представить следующим рисунком:

Схематическая диаграмма развертывания и применения физического сервера

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

  • Развертывание очень медленное: Поскольку нам нужно сначала подготовить аппаратный сервер, затем установить операционную систему, а затем развернуть приложение, а приложение имеет много зависимого программного обеспечения, поэтому этот процесс является относительно медленным.

  • очень высокая стоимость: Основная причина в том, что стоимость физических серверов слишком высока, а сервер нужен даже простому приложению.

  • растрата ресурсов: Если приложение слишком простое, легко растратить аппаратные ресурсы, такие какCPUи память

  • Миграция и масштабирование слишком медленные: Если вам нужно перенести приложение или расширить приложение, вам нужно подготовить другие физические серверы, что очень хлопотно и медленно.

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

Эпоха развертывания приложений с использованием виртуальных машин

Что такое технология виртуализации

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

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

Преимущества виртуальных машин

  • Ресурсы могут быть распределены между различными виртуальными машинами для максимального использования аппаратных ресурсов.

  • По сравнению с развертыванием приложений непосредственно на физических машинах виртуальные машины упрощают масштабирование приложений.

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

Недостатки виртуальных машин

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

Что такое Докер?

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

DockerОн очень популярен в наше времяGolangразвитие языка, а его техническое ядроLinuxядроCgroup,NamespaceиAUFSКатегорияUnion FSи другие технологии, эти технологииLinuxтехнология, существующая в ядре уже много лет, так что строго говоряDockerНе совсем инновационная технология,Dockerчерез эти лежащие в основеLinuxтехнология, даLinuxПроцесс инкапсулирован и изолирован, а изолированный процесс также называется контейнером, который полностью независим от хост-процесса.

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

Схематическая диаграмма взаимосвязи между докер-контейнером и системой

Сравнение Docker и виртуальных машин

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

Сравнение контейнеров и виртуальных машин [из «Docker — от начала до практики»]

Из приведенного выше сравнения контейнеров и виртуальных машин мы понимаем преимущества технологии контейнеров.

Контейнеры решают проблемы разработки и производства

Среда разработки и производственная среда отражают противоречие между разработчиками и эксплуатационным и обслуживающим персоналом.Может быть, мы часто слышим слова, которые разработчики говорят эксплуатационному и обслуживающему персоналу: «На моем компьютере все работает нормально, как он попал в вы? Если что-то пошло не так, это должна быть ваша проблема», в то время как оперативный персонал думал, что это проблема разработчика.

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

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

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

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

Докер-версия

DockerРазделено на общественное издание (CE) и корпоративная версия (EE) две версии, версию для сообщества можно использовать бесплатно, а версию для предприятий нужно платить.Для наших индивидуальных разработчиков или малых предприятий обычно используется версия для сообщества.

Docker CEСуществует три канала обновления, а именноstable,test,nightly,stableстабильная версия,testявляется предварительной версией после тестирования, в то время какnightlyЭто версия, которая находится в разработке и будет официально выпущена в следующей версии Мы можем загрузить и установить ее в соответствии с нашими потребностями.

Как установить Докер?

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

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

DockerИздание сообщества предоставляетMac OS,Microsoft WindowsиLinux(Centos,Ubuntu,Fedora,Debian) и другие установочные пакеты операционной системы, а также поддерживает установку на облачных серверах, таких какAWS Cloud.

Установить в системах Windows

Docker Desktop for Windows

DockerзаWindowsПредоставляет установочный пакет для управления настольными приложениями (Docker Desktop for Windows), но к системе предъявляются следующие требования:

  1. должно быть64немногоWindows10Professional Edition, Enterprise Edition, Education Edition, основанные на15063или позже,
  2. существуетBIOSВиртуализация включена в . Обычно виртуализация включена по умолчанию.
  3. Как минимум4GBОЗУ.
  4. CPUслужба поддержкиSLAT.

Если операционная система соответствует вышеуказанным требованиям, вы можете напрямую загрузить установочный пакет и установить его напрямую.После успешной установкиDockerОн не запустится автоматически, нам нужно запустить его самостоятельно, мы можем запустить его вНачинатьнашел в менюDocker, Как показано ниже, нажмите Start, чтобы начать.

Docker Toolbox

Если система не соответствует вышеуказанным требованиям, например, вы используетеWindows 7операционной системы, если вы хотите использоватьDocker, вам нужно использоватьDocker Toolbox,Docker ToolboxдаDockerпредоставлено в более старыхMac OS,Windowsустановлен в операционной системеDockerНабор инструментов для окружающей среды.

Docker Toolboxвключаютdocker-cli(就是我们在终端使用的docker命令行工具),docker-compose(多容器管理工具),docker-mecahine,VirtualBox(虚拟机),Kitematic(docker的GUI管理工具).

по существу использоватьDocker ToolboxУстановитьDockerсреда, на самом делеVirtualBoxсоздатьLinuxвиртуальную машину и установить на виртуальную машинуDocker.

Кроме того, в процессе установки будет включенWindowsизHyper-Vмодуль (WindowsТехнология виртуализации операционной системы), здесь стоит отметить, что если она включенаHyper-V,ноVirtualBoxБолее не действителен.

Установить на Mac OS

в видеWindowsКак и операционная система,DockerзаMac OSТакже как настольное приложение (Docker Desktop for Mac), что относительно просто, начиная сdockerСкачать с официального сайтаDokcer.dmgустановить, открытьDocker.dmg,Как показано ниже:

перетащите напрямуюDockerзначок для завершения установки.

для старшегоMac OSоперационная система, также может быть какWindowsто же самое, используйтеDocker Toolbox, вы можете обратиться к приведенному выше введению.

существуетMac OSПосле завершения установки вApplicationнайти вDockerзначок, дважды щелкните, чтобы открыть, чтобы начатьDocker, следующее:

Установить в Linux

существуетLinuxУстановка в операционной системе в основном начинается сCentos7Например, другиеLinuxРелизная версия системы, напримерUbuntu,Debian,Fedoraд., вы можете запросить самостоятельноDockerизофициальная документация.

удалить старую версию докера

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

$ sudo dnf remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine
Укажите версию установки
$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
Установить докер с помощью yum
$ sudo yum install docker-ce docker-ce-cli containerd.io
запустить докер-сервер
# 启动docker守护进程
$ sudo systemctl start docker

Проверьте, прошла ли установка успешно

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

распечатать версию докера
# 打印docker版本
$ docker version 
Извлеките образ и запустите контейнер
# 拉取hello-world镜像
docker pull hello-world

# 使用hello-world运行一个容器
docker run hello-world

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

Основные концепции Docker

зеркало (Image),контейнер(Container) и склад (Repository), эти триdockerСамые основные и основные понятия вdockerключ.

Изображение

чтоDockerзеркало?

DockerПо сути пробегLinuxприложений в операционной системе, в то время какLinuxОперационная система разделена на ядро ​​и пользовательское пространство.Centosвсе ещеUbuntu, все после запуска ядра, путем монтированияRootфайловая система для предоставления пользовательского пространства,Образ Docker — это корневая файловая система..

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

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

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

Посмотреть список зеркал
# 列出所有镜像
docker image ls

Так как мы уже вытащилиhello-worldзеркало, поэтому он выведет следующее:

REPOSITORY                                      TAG                 IMAGE ID            CREATED             SIZE
hello-world                                     latest              fce289e99eb9        7 months ago        1.84kB

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

# 列表所有镜像
docker images
Вытащите образ из репозитория

Мы уже продемонстрировали использованиеdocker pullкоманда вытащилаhello-worldЗеркальный, конечно использоватьdocker image pullКоманда та же.

Обычно значение по умолчанию отDocker HubПотяните зеркало вверх,Docker HubдаDockerОфициально предоставленный сервис зеркального репозитория (Docker Registry), существует большое количество официальных или сторонних зеркал, которые мы можем использовать, например, мы можем ввести следующую команду в командной строке, чтобы напрямую получить одноCentosЗеркало:

docker pull centos

docker pullПолное написание команды выглядит следующим образом:

docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]

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

Затем мы используем вышеcentos, потому что имя автора опущено, имя автораlibrary,ВыражатьDockerОфициальное зеркало, поэтому приведенная выше команда эквивалентна:

docker pull library/centos:latest

Поэтому, если вы качаете неофициальный сторонний образ, вам необходимо указать полное имя репозитория следующим образом:

docker pull mysql/mysql-server:latest
запустить изображение

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

docker run -it centos /bin/bash
удалить зеркало

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

# image_name表示镜像名,image_id表示镜像id
dockere image rm image_name/image_id

Быстрая команда для удаления зеркала:

docker rmi image_name/image_id

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

Контейнер

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

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

Существует два способа запуска контейнера.Один из них мы представили ранее, используяdocker runКоманда создает совершенно новый контейнер из образа следующим образом:

docker run hello-world

Другой способ запустить контейнер — запустить остановленный контейнер:

# container_id表示容器的id
docker start container_id

Чтобы остановить работающий контейнер, вы можете использоватьdocker container stopилиdocker stopкоманда, как показано ниже:

# container_id表示容器的id
docker stop container_id
просмотреть все контейнеры

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

# 查看所有容器
docker container ls

Просмотр всех контейнеров также имеет краткий способ написания, а именно:

# 查看所有容器
docker ps
удалить контейнер

Мы также можем использоватьdocker container rmкоманда или сокращениеdocker rmкоманда для удаления контейнера, но нельзя удалить работающий контейнер, поэтому, если вы хотите удалить, вы должны сначала остановить контейнер,

# container_id表示容器id,通过docker ps可以看到容器id
$ docker rm container_id

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

# 删除所有容器
docker rm $(docker ps -q)
# 删除所有退出的容器
docker container prune
в контейнер
# 进入容器,container_id表示容器的id,command表示linux命令,如/bin/bash
docker exec -it container_id command

Репозиторий

В предыдущем примере мы использовали два способа сборки образа: после завершения сборки вы можете запустить образ локально для создания контейнера, но что, если вы запустите образ на большем количестве серверов? Очевидно, что в настоящее время нам нужен сервис, который позволит нам централизованно хранить и распространять изображения, точно так же, как Github позволяет нам самим хранить и распространять код.

Docker HubЭто официальный веб-сайт, предоставляемый Docker для хранения и распространения изображений.Docker Registry, также по умолчаниюRegistry, URL-адрес которогоhttps://hub.docker.com, ранее мы использовалиdocker pullкоманда отDocker HubПоднимите изображение.

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

Состав и архитектура Docker

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

docker verion

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

На картинке выше мы видим, что набираются две части информации:ClientиServer.

Это потому чтоDockerКак и большинство серверного программного обеспечения (например,MySQL), оба используютC/SМодель архитектуры , то есть вызов сервера через клиент, но мы просто находимся на одной машине и сервер и клиент.

Таким образом, мы можем использовать следующую схему для представленияDockerструктура,DOCKER_HOSTдаDocker server, а Clinet — это то, что мы используем в командеdockerЗаказ.

Docker Engine

docker serverПредоставляет клиенту такие функции, как контейнеры, образы, тома данных и управление сетью.Фактически эти функции предоставляютсяDocker Engineбыть реализованным.

  1. dockerd: Демон сервера.
  2. Client docker Cli: Интерфейс командной строки
  3. REST API: В дополнение к интерфейсу командной строки cli вы также можете использоватьREST APIперечислитьdocker

НижеDocker Engineпример графика:

резюме

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

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


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