Вводного руководства по Docker достаточно

Docker

20191028091820.png
Как разработчик программного обеспечения, вы обычно больше всего ненавидите проблему конфигурации среды. Например, я хочу установить tomcat на новый компьютер (новую среду) для запуска веб-приложения Java, поскольку tomcat написан в коде Java, поэтому сначала мне нужно установить среду выполнения Java (JRE), настроить JAVA_HOME, а затем установить tomcat Запустить javaweb. Кроме того, если я собираюсь изучать новый язык или новое промежуточное программное обеспечение RabbitMQ, время, которое может потребоваться для установки этих сред, заставляет вас отказаться.
Как специалисту по эксплуатации и техническому обслуживанию, у меня должно быть много проблем с развертыванием новой среды: мне приходится настраивать операционную среду для нескольких новых машин одновременно и выполнять одни и те же операции на каждой машине, что очень механизировано.
Зная болевые точки в обычной разработке, есть ли инструмент, который позволит мне быстро установить tomcat, не беспокоясь об экологических проблемах? Это позволяет мне загружать всю среду go и RabbitMQ, и я могу запускать код go непосредственно в этой среде без какой-либо настройки. После того, как я настрою машину, я могу сделать копию как есть и отправить ее на другие машины для прямого запуска, чтобы я мог получить ту же среду без дополнительной настройки? Такой инструмент есть, это контейнерная технология виртуализации, и докер — лидер в этой технологии.

1. Что такое докер

Docker — это технология виртуализированных контейнеров. Его концепция дизайна — «создать один раз, запустить где угодно» (создать один раз, запустить где угодно). Это звучит как «создать один раз, запустить где угодно» (написать один раз, запустить где угодно) с java. Очень похоже? Итак, что такое технология виртуализированных контейнеров? Docker упаковывает приложение и зависимости программы в файл. Запуск этого файла создаст виртуальный контейнер, и программа будет работать в этом виртуальном контейнере, как если бы она работала на реальной физической машине. С Docker вам не нужно беспокоиться об окружающей среде. Так же, как логотип докера на первой картинке в начале, докер — это кит, а контейнеры на нем — изолированные контейнеры, вы можете добавлять контейнеры в любое время, не затрагивая содержимое исходного контейнера.

2. Разница между докером и виртуальной машиной

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

20191028100057.png

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

Docker можно установить на различные операционные системы, процесс очень прост, см. туториал по установке:Уууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууу.com/docker/wind…На виндовс ставить докер хлопотно, а на линуксе в вм виртуалку ставить не хочу так как лень открывать, поэтому все таки устанавливаю на виндовс, есть два способа установки на виндовс :

  • docker toolbox: Этот установочный пакет подходит для всех версий Windows (Windows XP, когда я не говорил), включая Win7, Win8, Win10 Home Edition. Я установил эту версию
  • docker для windows: эта версия подходит для профессиональной версии win10, поскольку профессиональная версия win10 имеет функцию виртуализации Hyper-v, вам необходимо включить эту функцию перед установкой, подробности см. по ссылке для установки выше.

3.1 Проблемы, возникающие при установке docker toolbox

Это проблема зависания загрузки boot2docker.iso при установке docker toolbox.Этот раздел по установке других версий docker можно игнорировать. После установки панели инструментов докера появятся следующие три значка:

20191028102613.png
Чтобы запустить Docker, вам нужно нажать Docker Quickstart, который найдет файл boot2docker.iso (облегченная виртуальная машина Linux) в указанном каталоге и создаст виртуальную машину Linux с именем по умолчанию в соответствии с файлом. с первого раза найти не получается, файл скачается с гитхаба, но скорость скачивания в докере довольно низкая, и через час ожидания его не завершить. Советы следующие:

Running pre-create checks...
(default) No default Boot2Docker ISO found locally, downloading the latest release...
(default) Latest release for github.com/boot2docker/boot2docker is v1.12.1
(default) Downloading C:\Users\huang\machine\cache\boot2docker.iso from https://github.com/boot2docker/boot2docker/releases/download/v1.12.1/boot2docker.iso...

Решение: используйте браузер (или Thunder), чтобы загрузить последнюю версию boot2docker.iso с домашней страницы boot2docker, адрес: (GitHub.com/boot2docker…),Как показано ниже:

20191028104542.png
После завершения загрузки отключите сеть и поместите загруженный boot2docker.iso в указанное место, вот я:C:\Users\huang\machine\cache\содержание. Не забудьте отключиться от сети, снова щелкните значок Docker Quickstart, чтобы запустить docker, а после завершения запуска вы сможете подключиться к сети и начать изучение docker.

3.2. boot2docker

Если вы заинтересованы в boot2docker, вы можете взглянуть на введение его github.Boot2docker — это легкая система Linux для запуска контейнеров Docker.Он полностью работает в памяти, имеет размер всего около 45 м и быстро запускается. Итак, запуская docker в windows, принцип заключается в том, чтобы запустить виртуальную машину linux с установленным docker в виртуальной машине, после нажатия Docker Quickstart мы можем увидеть вывод консоли, имя виртуального хоста по умолчанию, ip по умолчанию 192.168.1.1. 99.100. Из введения в github мы видим, что у виртуальной машины есть пользователь docker и пароль tcuser. Таким образом, мы можем подключиться к этой машине по ssh из secureCRT или git bash и использовать на ней команду docker. Конечно, вы можете установить такие инструменты, как vim, на виртуальную машину по умолчанию, но, поскольку это операционная система с памятью, эти недавно установленные инструменты исчезнут после перезапуска.

20191028111854.png
Команда удаленного входа:

ssh docker@192.168.99.100
# 密码
tcuser

3.3 Ускорение облачного образа Docker Alibaba

Вы можете пока пропустить этот раздел.Если вы чувствуете, что загрузка докера слишком медленная, вы можете прочитать другую мою статью о настройке ускорения изображения.Адрес:woo woo Краткое описание.com/afraid/ah выпуск 1 ah 4 ah 47…

4. докерная архитектура

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

20191028114150.png
Как показано выше, докер использует архитектуру C/S. Клиенты отправляют запросы на серверы, которые отвечают за сборку, запуск и распространение контейнеров. Клиент и сервер могут работать на одном хосте, и клиент также может взаимодействовать с удаленным сервером через сокет или REST API. По сравнению с приведенным выше рисунком, задействованные концепции выглядят следующим образом:

  • Клиент: клиент docker, наиболее распространенным клиентом являются команды docker, такие как docker build, docker pull, docker run и т. д. С помощью этих команд мы можем легко создавать и запускать контейнеры на хосте.
  • Демон: демон докеров — это серверный компонент, работающий как фоновая служба Linux. Демон docker запускается на хосте docker host и отвечает за создание, запуск, мониторинг контейнеров, сборку и хранение образов.
  • image: изображение, которое можно рассматривать как шаблон только для чтения, с помощью которого можно создавать контейнеры докеров. Как и файл .class в Java, экземпляр класса можно создать с помощью .class. Зеркала складываются, а нижний слой — это ядро ​​Linux.Каждый раз, когда вы добавляете файл или операцию, она будет накладываться на исходную.Например, среда JDK накладывается на ядро ​​Linux, а tomcat накладывается на среда JDK. В настоящее время, если у вас уже есть образ JDK в докере, вам нужно только загрузить слой tomcat. Потому что изображения доступны только для чтения и общего доступа.
  • контейнер: Контейнер, контейнер докера — это работающий экземпляр образа докера.
  • реестр: реестр — это репозиторий для хранения образов докеров.Мы можем передавать наши собственные образы в удаленное место или загружать образы из удаленного места для локального запуска, как github. У Docker официально есть docker hub, с которого мы можем скачать официальный образ. Например, загрузите официальный образ tomcat и запустите образ напрямую, чтобы запустить tomcat без какой-либо настройки.

Таким образом, в сочетании с приведенным выше рисунком весь процесс взаимодействия с архитектурой докера выглядит следующим образом: запускаем докер, докер запускается на хосте linux как процесс демона (linux, виртуализированный boot2docker под docker toolbox), мы отправляем команду docker в докер daemon для выполнения, docker может вытащить требуемый образ из docker hub, а затем создать контейнер на основе образа.

5. Настоящий бой

Зная процесс взаимодействия вышеупомянутой архитектуры докера, я возьму в качестве примера запуск контейнера tomcat, чтобы шаг за шагом представить часто используемые команды:

  • docker images: Перечислите, какие зеркала в данный момент находятся в докере.Если это первое выполнение, конечно, зеркал не будет.
  • docker search tomcat: Поиск изображений tomcat в Docker Hub. Конечно, вы можете получить доступ к Docker Hub в своем браузере по адресу :(hub.docker.com/), точно так же, как при доступе к удаленному репозиторию maven, вы можете искать то, что вам нужно.
    20191028120959.png
  • docker pull tomcat: загрузите последнюю версию образа tomcat на локальный компьютер, а затем используйте образы Docker, чтобы просмотреть загруженный образ после завершения загрузки.
  • docker run --name mytomcat -p 8080:8080 -d tomcat: запустить экземпляр tomcat в соответствии с образом tomcat, будет два экземпляра, если выполнить дважды (обратите внимание на изменение порта), --name означает имя экземпляра, -p 8080:8080 означает привязать локальный порт 8080 к контейнеру. 8080, вы можете использовать localhost:8080 (панель инструментов docker — 192.168.99.100:8080) для доступа к порту tomcat. -d означает запуск в фоновом режиме.
  • docker run --name mytomcat03 -p 8082:8080 -it tomcat /bin/bash:-он запускается в интерактивном и дополнительном режиме и выполняет команду /bin/bash после входа в контейнер.Он не работает в фоновом режиме.После входа в контейнер и выполнения команды выхода он выйдет из контейнера.В это время, используйте команду docker ps -a, чтобы просмотреть его, и он будет отображаться как состояние выхода.
  • ctrl+p+q: Выйти, но работать в фоновом режиме. Как и в предыдущей команде, контейнер завершится после выполнения выхода. Если вы не хотите, чтобы контейнер закрывался в это время, вы можете нажать этот набор сочетаний клавиш.
  • docker ps -a: показать статус всех контейнеров, docker ps показывает только запущенные контейнеры, -a означает показать все контейнеры, включая закрытые контейнеры. В этот момент вы можете увидеть только что запущенного кота.
  • docker logs -f mytomcat: Просмотр журнала, напечатанного только что запущенным котом, -f означает отслеживание непрерывной печати журнала.
  • docker exec -it mytomcat /bin/bash:exec означает выполнение команды, и команда должна содержать команду для выполнения в конце, например, /bin/bash, -это означает запуск в интерактивном и дополнительном режиме и возврат к терминалу, /bin/bash означает первую команду, которая будет выполнена после входа в контейнер. После выполнения этой команды она входит в контейнер, который является приложением tomcat. Это похоже на использование ssh для входа внутрь контейнера. В это время вы можете модифицировать конфигурационный файл внутри контейнера, конечно, в производственной среде это делать не рекомендуется, вместо этого используйте метод внешнего монтирования конфигурационного файла.
  • docker stop mytomcat: останавливает экземпляр mytomcat, не удаляя содержимое внутри контейнера.
  • docker start -i mytomcat: Запуск остановленного экземпляра mytomcat. Если файл конфигурации в контейнере изменен перед запуском, конфигурация будет перезагружена при перезапуске. Если файл конфигурации находится на уровне хоста Linux, например файл /etc/profile, он не будет Загружается, потому что контейнер использует конфигурацию хоста. -i означает запуск и вход в интерактивный командный интерфейс.
  • docker rm mytomcat: удалить остановленный экземпляр mytomcat
  • docker run --name mytomcat02 -p8081:8080 -e JAVA_HOME=/path/to/java/home -v /host/path/file:/container/path/file -d tomcat:-e означает установить переменную среды JAVA_HOME, войти в контейнер и использовать команду echo $JAVA_HOME, чтобы увидеть значение переменной среды. -v означает монтирование /host/path/file хоста в /container/path/file контейнера При изменении файла хоста файл контейнера также будет изменен. Если вы используете docker toolbox, файл, на котором висит хост, должен находиться в текущем пользовательском каталоге, то есть c:\user\yourname, в противном случае сообщения об ошибке не будет, но монтирование не будет успешным. в тот раз я был в ловушке этой проблемы на полдня.
  • docker cp /host/path/file mytomcat02:/container/path/file: Скопируйте файл хоста в контейнер. Его можно использовать для копирования файла конфигурации на хост, чтобы изменить конфигурацию, а затем скопировать его обратно в контейнер, если файл конфигурации контейнера изменен и файл конфигурации не запускается.
  • docker inspect mytomcat: просмотр информации о контейнере, включая IP-адрес контейнера и другую информацию.

6. Создайте образ докера

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

  • коммит докера: сборка через контейнер
  • сборка докера: сборка из файла dockerfile

Создание файла Dockerfile требует написания dockerfile, а команд всего несколько, это не сложно, проверьте информацию самостоятельно. Вот команда фиксации докера.docker commit mytomcat huangzb/tomcat: Отправьте текущий контейнер mytomcat в виде изображения, имя изображения — huangzb/tomcat.

7. Структура контейнерной сети

Очень важно знать сетевую структуру докера, потому что тогда мы сможем выполнять кластеризацию. Без лишних слов, давайте сразу к делу.
Сеть докеров использует виртуальные устройства bridge (мост) и veth (виртуальный ethernet, виртуальный ethernet) в сети linux.

  • мост: сетевой мост, называемый мостом, обычный мост имеет только два интерфейса, соединяет две сети, работает на втором уровне (уровень канала передачи данных) и может пересылать пакеты данных, пока есть MAC-адрес. Виртуальный мост linux имеет несколько интерфейсов и может настраивать IP, как маршрутизатор. После установки docker используйте команду ifconfig на хосте, и вы увидите, что сеть docker0 появляется в конфигурации сети. docker0 — это виртуальный мост Linux, установленный докером.
  • veth: виртуальный ethernet — это виртуальное сетевое устройство в linux, похожее на линию с сетевыми картами на обоих концах, оно может соединять два устройства и соответственно настраивать IP-адреса.
    20191028161708.png
    Поэтому сеть в docker toolbox под моими окнами такая, как показано ниже.
    20191028172336.png

7.1 Взаимосвязь между контейнерами

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

выше. Заинтересованные студенты могут изучить следующие ссылки.

использованная литература

  1. учебник по докеру:Есть easy.git books.IO/docker_PR AC…
  2. Видеоуроки Geek Academy:воооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооооо
  3. докер мост мост:Woohoo. IBM.com/developer Я…
  4. Углубленное исследование сети Docker:у-у-у. Краткое описание.com/fear/19's 6 раундов 55, а не 9…