2021 — инженеры по серверной части Java должны иметь знания — (Docker)

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

предисловие

Текст был включен в мой репозиторий GitHub, добро пожаловать, звезда:GitHub.com/bin39232820…
Лучшее время посадить дерево было десять лет назад, затем сейчас

Tips

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

woohoo.process on.com/view/lincoln/6…

Выше указан адрес карты мозга.

слухи

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

Затем следует краткое изложение предыдущих статей.

Привет всем, меня зовут Сяо Люлю. В настоящее время я отвечаю за проект мидл-офиса с годовым доходом более 10 миллиардов долларов в интернет-компании первого уровня. Спасибо за вашу поддержку. Давайте взглянем на Docker. сегодня.

image.png

Введение в Докер

image.png

Почему Докер

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

Причина, по которой Docker так быстро растет, заключается еще и в том, что для него есть стандартизированное решение. Конфигурация среды настолько хлопотна, а смена машины занимает много времени и сил. Многие думают, а можно ли решить проблему принципиально, и ПО можно установить вместе с окружением? То есть при установке копируйте исходную среду точно так же. Разработчики используют Docker, чтобы устранить проблему «просто работает на моей машине» при совместном кодировании.

Философия Докера

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

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

Зачем использовать Докер

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

  • Более эффективное использование системных ресурсов
  • Более быстрое время запуска
  • Согласованная операционная среда
  • Непрерывная доставка и развертывание
  • упрощенная миграция
  • Сравнение традиционных виртуальных машин

Загрузка докера

Установка докера (centos7)

1. Docker требует, чтобы версия ядра системы CentOS была выше 3.10.Проверьте предварительные требования на этой странице, чтобы убедиться, что ваша версия CentOS поддерживает Docker.

Проверьте текущую версию ядра с помощью команды uname -r

 $ uname -r

2. Войдите в Centos с привилегиями root. Убедитесь, что пакет yum обновлен до последней версии.

$ sudo yum update

3. Удалите старую версию (если старая версия установлена)

$ sudo yum remove docker  docker-common docker-selinux docker-engine

4. Установите необходимые программные пакеты, yum-util предоставляет функцию yum-config-manager, а два других зависят от драйвера devicemapper.

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

5. Установите источник ням

$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

6. Вы можете просмотреть все версии докеров на всех складах и выбрать конкретную версию для установки

$ yum list docker-ce --showduplicates | sort -r

7. Установите докер

$ sudo yum install docker-ce  #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版17.12.0
$ sudo yum install <FQPN>  # 例如:sudo yum install docker-ce-17.12.0.ce

8. Запускайте и присоединяйтесь к стартапу

$ sudo systemctl start docker
$ sudo systemctl enable docker

9. Убедитесь, что установка прошла успешно (имеются клиент и служба, свидетельствующие об успешном запуске установки Docker).

$ docker version

10. Ускоритель образов Docker Для систем, использующих systemd, напишите следующее в /etc/docker/daemon.json (если файл не существует, создайте новый файл)

{
  "registry-mirrors": [
    "https://registry.docker-cn.com"
  ]
}

После этого перезапустите службу.

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

Докер-образ

Все мы знаем, что операционная система разделена на ядро ​​и пространство пользователя. Для Linux после запуска ядра корневая файловая система монтируется, чтобы обеспечить для нее поддержку пользовательского пространства. Образ Docker (Image) эквивалентен корневой файловой системе. Например, официальный образ ubuntu:16.04 содержит полный набор корневых файловых систем минимальной системы Ubuntu 16.04.

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

Многоуровневое хранилище

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

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

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

image.png

Докер-команды

команда справки

  • docker version
  • docker info
  • docker --help

зеркальная команда

  • изображения докеров (список изображений на локальном хосте)
  • docker ищет имя изображения XXX (найти изображение)
  • docker вытащить имя изображения XXX (скачать изображение)
  • docker rmi идентификатор имени изображения XXX (удаление определенного изображения)

команда контейнера

  • docker run [ОПЦИИ] IMAGE [КОМАНДА] (создать и запустить контейнер)
  • docker ps [ВАРИАНТЫ] (перечислите все запущенные в данный момент контейнеры)
  • идентификатор стартового контейнера docker или имя контейнера (стартовый контейнер)
  • docker перезапускает контейнер или имя идентификатора контейнеров (перезапускает контейнер)
  • идентификатор контейнера остановки докера или имя контейнера (контейнер остановки)
  • docker kill container ID или имя контейнера (принудительно остановить контейнер)
  • идентификатор контейнера docker rm (для удаления остановленных контейнеров)
  • docker run -d имя контейнера (запустить контейнер демона)
  • docker logs -f -t --tail ID контейнера (просмотреть журнал контейнера)
  • docker exec -it идентификатор контейнера bashShell (введите запущенный контейнер и взаимодействуйте с командной строкой)
  • docker cp container ID: путь в пути к хосту назначения контейнера (копировать файлы из контейнера на хост)

docker pull извлекает образ

image.png

  • Клиент Docker принимает команду docker pull, после анализа запроса и сбора параметров запроса отправляет HTTP-запрос на сервер Docker, метод HTTP-запроса — POST, а URL-адрес запроса — «/images/create?» «+»xxx» ;
  • Docker Server принимает вышеуказанный HTTP-запрос и передает его mux.Router, который определяет конкретный обработчик для выполнения запроса через URL-адрес и метод запроса;
  • mux.Router распределяет маршрут запроса к соответствующему обработчику, а именно к PostImagesCreate;
  • В обработчике PostImageCreate создается и выполняется задание с именем «pull»;
  • Во время выполнения задания с именем «pull» выполняется операция pullRepository, то есть из Docker Registry загружаются соответствующие один или несколько образов;
  • Задание под названием «pull» доставляет загруженный образ в graphdriver;
  • Графдрайвер отвечает за хранение изображений, создание объектов графа, с одной стороны, и запись отношений между изображениями в GraphDB, с другой стороны.

Как работает docker run hello-world

image.png

Объем данных докера

что

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

Одним словом: немного похоже на файлы rdb и aof в нашем Redis, что мы называем постоянством.

Характеристики томов данных

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

Функции:

  • Объемы данных для обмена или повторного использования данных между контейнерами
  • Изменения громкости могут вступить в силу напрямую
  • Изменения томов данных не будут включены в зеркальные обновления.
  • Жизненный цикл тома данных длится до тех пор, пока его не использует ни один контейнер.

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

  • прямая команда добавить

docker run -it -v /host абсолютный путь к каталогу: /directory в имени образа контейнера

  • DockerFile добавить

Вы можете использовать команду VOLUME в Dockerfile, чтобы добавить в образ один или несколько томов данных.

Dockerfile

что

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

Строительство трехступенчатой

  • Написать Dockerfile
  • docker build
  • docker run

Анализ процесса сборки DockerFile

Основы содержимого Dockerfile

  • Каждая инструкция зарезервированного слова должна быть в верхнем регистре и сопровождаться хотя бы одним параметром.
  • Инструкции выполняются в порядке сверху вниз
  • # указывает на комментарий
  • Каждая директива создает новый зеркальный слой и отправляет изображение.

Docker выполняет по существу потоку Dockerfile

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

Файловая архитектура Docker

  • FROM (базовый образ, на основе которого создается текущий новый образ)
  • MAINTAINER (имя и адрес электронной почты сопровождающего зеркала)
  • RUN (команда, которую нужно запустить при сборке контейнера)
  • EXPOSE (порт, открытый текущим контейнером)
  • WORKDIR (указать, что после создания контейнера терминал будет логиниться в рабочую директорию по умолчанию, плацдарм)
  • ENV (используется для установки переменных среды во время создания образа)
  • ДОБАВИТЬ (скопируйте файлы из каталога хоста в образ, и команда ДОБАВИТЬ автоматически обработает URL-адрес и распакует tar-архив)
  • COPY (аналогично ADD, копирует файлы и каталоги в образ. Копирует файлы/каталоги из в каталоге контекста сборки в в новом слое образа)
  • VOLUME (объем данных контейнера для хранения и сохранения данных)
  • CMD (укажите команду для запуска при запуске контейнера)
  • ENTRYPOINT (Цель ENTRYPOINT такая же, как у CMD, это указать программу и параметры запуска контейнера)
  • ONBUILD (команда запуска при сборке унаследованного Dockerfile, сборка родительского образа запускается после того, как родительский образ унаследован дочерним)

Опубликуйте локальный образ в облаке Alibaba.

Метод генерации зеркала

  • предыдущий DockerFile
  • Создайте новый образ из контейнера docker commit [OPTIONS] ID контейнера [REPOSITORY[:TAG]]

Отправьте локальный образ в облако Alibaba.

Платформа облачных разработчиков AlibabaAdult.console.aliyun.com/talent-Шанхай…

Вставьте образ в реестр

  • docker login --username=danielyoungchina registry.cn-shanghai.aliyuncs.com
  • тег докера [ImageId]Registry.cn-shanghai.aliyuncs.com/daniel-hub/nginx-docker:[номер версии образа]
  • docker pushRegistry.cn-shanghai.aliyuncs.com/daniel-hub/nginx-docker:[номер версии изображения]

Вытягивать образы из реестра

  • docker pullRegistry.cn-shanghai.aliyuncs.com/daniel-hub/nginx-docker:[номер версии образа]

конец

Сяо Люлю разобрала для вас базовые знания о Docker, потому что зачем вам готовиться к этому интервью? Мы знаем, что сейчас это в основном управление услугами k8s, а выпуск услуг в основном основан на контейнерах.Может быть, когда мы используем его в компании, это очень просто, просто нажмите кнопку обновления, например, следующее

image.png

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

ежедневные комплименты

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

Творить нелегко. Ваша поддержка и признание — самая большая мотивация для моего творчества. Увидимся в следующей статье.

Поиск в WeChat "Жизнь программы шестиимпульсного Excalibur" Ответить 888 Я нашел для вас много информации