Докер от входа до сервиса, достаточно прочитать эту статью

Java Docker
Докер от входа до сервиса, достаточно прочитать эту статью

Это 3-й день моего участия в ноябрьском испытании обновлений, узнайте подробности события:Вызов последнего обновления 2021 г.

какОпять же, сделайте это привычкой. Поиск в WeChat【код] Обратите внимание на этого программиста, который борется в Интернете.

ПолучатьУчебные маршруты, серия статей, интервью Вопрос Банк, Самоучащиеся материалы, 100 электронных книгЖдать.


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

предисловие

Всем привет, я а.

Колонка «Нападение на интервью в Дачане» опубликовала три резюме из 40 слов, и урожай500+подпишись, спасибо за поддержку.

Резюме 4D после опроса более 10 крупных и средних фабрик - ❤️ Коллекция ❤️

Резюме 4D после опроса более 10 крупных и средних заводов - ❤️JavaWeb ❤️

Резюме 4D после интервью с более чем 10 крупными и средними фабриками - ❤️Основы Java ❤️

Приведение вас сегодняdockerРезюме 4D, хотя мы разрабатываем, ноdockerНет, здесь отражается широта технологий.

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

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

не рекомендуется вwindowsУстановить

mac

установка из командной строки

Сначала нужно установить доморощенный

домашнее домашнее зеркало

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"

После выполнения выберите зеркальное отображение Университета науки и технологий Китая, то есть номер1

cloneслишком долго, о5-10минута.

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

brew install --cask --appdir=/Applications docker

Installing cask dockerПожалуйста, наберитесь терпения, это займет много времени

установка дмг

Щелкните ссылку для загрузки и установки с визуальным интерфейсом. Но я лично не считаю это полезным.

download.docker.com/Mac/edge/do…

запустить докер-сервис

Щелкните значок или

open /Applications/Docker.app

windows

Не рекомендуется устанавливать его на Windows, если у вас его нет, то можете установить.

Ссылка на учебник:Уууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууууу.com/docker/wind…

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

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

Поэтому Docker необходимо развернуть в системе с ядром Linux. Если другие системы хотят развернуть Docker, они должны установить виртуальную среду Linux.

img

Чтобы развернуть Docker в Windows, сначала установите виртуальную машину, а затем запустите Docker на виртуальной машине, установленной вместе с системой Linux.

Docker Desktop — это официальный метод установки Docker в операционных системах Windows 10 и macOS, который по-прежнему относится к методу сначала установить Linux на виртуальную машину, а затем установить Docker.

Официальный адрес загрузки Docker Desktop:Хубэй.docker.com/editions/co…

**ПРИМЕЧАНИЕ.** Этот метод работает только в ОС Windows 10 Professional, Enterprise, Education и некоторых домашних версиях!

Установите Hyper-V

Hyper-V — это виртуальная машина, разработанная Microsoft, похожая на VMWare или VirtualBox и доступная только для Windows 10. Это виртуальная машина, используемая Docker Desktop для Windows.

Однако после включения этой виртуальной машины QEMU, VirtualBox или VMWare Workstation 15 и ниже работать не будут! Если вам нужно использовать другую виртуальную машину на вашем компьютере (например, эмулятор, который вы должны использовать для разработки приложений для Android), не используйте Hyper-V!

Включить Hyper-V

Щелкните правой кнопкой мыши меню «Пуск» и запустите PowerShell от имени администратора, выполните следующие команды:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All

Установите рабочий стол Docker для Windows

нажмитеGet started with Docker Desktop, и загрузите версию для Windows, если вы не вошли в систему, вам будет предложено зарегистрироваться для входа:

img

запустить установочный файл

Дважды щелкните загруженный установочный файл Docker for Windows Installer, перейдите к пункту «Далее» и нажмите «Готово», чтобы завершить установку.

img

После завершения установки Docker запустится автоматически. На панели уведомлений появится маленький значок кита.img, что указывает на то, что Docker запущен.

Мы можем выполнить в командной строкеdocker versionчтобы увидеть номер версии.

Облако Alibaba (линукс)

В зависимости от метода установки облачного сервера Alibaba рекомендуется!

Просмотр конфигурации

# 内核版本查看
uname -r

Версия системы: CentOS7

Версия ядра: 3.10.0-514.26.2.el7.x86_64

Установить

Есть два способа установки:

1. Официальная установка скрипта (описано в этой статье)

2. Ручная установка

Установка: Это домашнее зеркало. Если вы хотите использовать его в качестве пользователя без полномочий root, вам необходимо добавить имя в группу и перезапустить.

curl -fsSL https://get.docker.com/ | sh

⚠️ Если в ошибке отсутствует deltarpm, выполните следующую команду

yum provides '*/applydeltarpm'    #查看依赖包的位置
yum -y  install deltarpm             #安装命令

запустить докер-сервис

service docker start

❤️ Все следующие объяснения в этой статье основаны наLinuxСистема ❤️

работающий экземпляр

На всех языках отhello-worldДля начала давайте запустим официальный экземпляр, чтобы испытать его.

Предоставляется официальный экземпляр hello-world. Перед запуском нужно зарегистрировать docker id на официальном сайте и создать склад.

Адрес официального сайта:hub.docker.com

При регистрации обращайте внимание на сложность id, который легко повторить.

запустить докер-сервис

systemctl start docker

вытащить изображение

docker pull hello-world

запустить изображение

docker run hello-world

Посмотреть контейнеры

# -a 查看所有
docker ps -a

Зеркальное ускорение

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

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

Адрес зеркала NetEase:hub-mirror.c.163.com.

Нажмите на панель задачDocker for macзначок приложения

Perferences... -> Daemon -> Registry mirrors

Просто заполните адрес акселератора в списке.

После завершения модификации нажмитеApply & RestartКнопка Docker перезапустится и применит настроенный адрес образа.

Популярное понимание того, что такое докер?

Идея Docker исходит из контейнера.Какую проблему решает контейнер?

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

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

  • Различные приложения могут иметь разные среды приложений.Например, веб-сайты, разработанные на .net, и веб-сайты, разработанные на php, зависят от разного программного обеспечения.Если программное обеспечение, от которого они зависят, установлено на одном сервере, отладка займет много времени, и это очень хлопотно. , и вызовет некоторые конфликты. Например, конфликт портов доступа IIS и Apache. В настоящее время вам необходимо изолировать веб-сайт, разработанный .net, от веб-сайта, разработанного php. Вообще говоря, мы можем создавать разные виртуальные машины на сервере и размещать разные приложения на разных виртуальных машинах, но накладные расходы виртуальных машин относительно высоки. Docker может реализовать функцию среды приложения изоляции виртуальной машины, а накладные расходы меньше, чем у виртуальной машины, а небольшие средства позволяют сэкономить деньги.

  • Когда вы разрабатываете программное обеспечение, вы используете Ubuntu, но управление эксплуатацией и обслуживанием — это все Centos.Когда эксплуатация и обслуживание переносят ваше программное обеспечение из среды разработки в производственную среду, вы столкнетесь с некоторыми проблемами Ubuntu в Centos, например: это Специальная версия базы данных поддерживается только Ubuntu, но не Centos.В процессе переноса эксплуатация и обслуживание должны найти способ решить такую ​​проблему. В это время, если есть докер, вы можете напрямую упаковать среду разработки и передать ее в эксплуатацию и обслуживание, а эксплуатация и обслуживание могут напрямую развернуть докер, который вы ему дали. И развертывание быстрое.

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

Короче говоря, докер — это принцип контейнера.

Сравнение докера и виртуальной машины

Физическая машина: Вилла

Виртуальная машина: здание

докер: обслуживаемая квартира

Три концепции докера

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

Зеркало: приложение, извлеченное из библиотеки, например mysql.

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

докер рабочий процесс

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

Основное использование команды docker:

docker 命令关键字 -参数

Основная операция

# 查看docker信息
docker info

# docker版本
docker version

# 查找镜像
docker search nginx

#拉取镜像
docker pull nginx

Начиная

Быстро создать блог на WordPress

Найти зеркала

docker search name
## wordpress
## mariadb

вытащить изображение

docker pull wordpress
# mariadb就是mysql
docker pull mariadb

запустить изображение

docker run --name db -p 3306:3306 --env MYSQL_ROOT_PASSWORD=root -d mariadb
docker run --name mywordpress --link db:mysql -p 8080:80 -d wordpress

Запустить успешно, получить доступ к wordpress

http://libiao:8080

Настройте информацию базы данных в соответствии с подсказками, и личный веб-сайт блога настроен

Посмотреть сопоставление портов

docker ps

docker port CONTAINER_ID

Пример: порт 8080 xxjob сопоставлен с портом 8089 хоста.

Linux настроил докер на автоматический запуск

systemctl enable docker

Посмотреть зеркало

docker images

#因为docker是分层,所以显示的文件大小要大于实际占用磁盘的大小

запустить изображение

docker run --name db -p 3306:3306 --env MYSQL_ROOT_PASSWORD=root -d mariadb

# --name 别名

# --env 环境变量

#-d 后台执行

docker run --name mywordpress --link db:mysql -p 8080:80 -d wordpress

# --link ip映射

# -p 端口映射

docker logs -f 7a38a1ad55c6

# 像tail -f一样查看容器内日志

docker top name

#查看容器内的进程

удалить зеркало

docker rmi hello-world:latest

docker rmi id

# 4位即可

составная команда

docker rm -f $(docker ps -a -q)

#删除全部容器

Просмотр запущенных контейнеров

docker ps

docker compose

Файл yaml, который удобен для поддержки нескольких контейнеров. Docker считает, что контейнер соответствует процессу, но приложение будет иметь несколько процессов, таких как mysql и wordpress выше.

Лично я думаю, что docker compose похож на сценарий оболочки, но на самом деле он реализован на python и обращается к некоторым API-интерфейсам докера.

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

docker version

docker-compose --version

Используйте up -d для запуска после указания имени, версии и порта зеркала в файле yaml

docker-compose.yaml up -d

Просмотр журналов

docker-compose logs

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

в контейнер

docker exec -it name /bin/sh

Просмотр сведений о контейнере

Детали контейнера возвращаются в виде json.

# docker inspect name
[root@lib mysh]# docker inspect mywordpress

[
    {
       "Id": "6253e66959047c6f8de891abe1c661f7766fdef7407f00e07d1788310e0ea6a9",

        "Created": "2021-08-04T20:11:43.649001354Z",

        "Path": "docker-entrypoint.sh",

        "Args": [

            "apache2-foreground"

        ],

        "State": {

            "Status": "running",

            "Running": true,

            "Paused": false,

            "Restarting": false,

            "OOMKilled": false,

            "Dead": false,

            "Pid": 28041,

            "ExitCode": 0,

            "Error": "",

            "StartedAt": "2021-08-04T20:11:43.947511209Z",

            "FinishedAt": "0001-01-01T00:00:00Z"

        }

        "Name": "/mywordpress",

......

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

docker start name

docker stop name

docker restart name

удалить контейнер

# 删除时容器需要处于停止状态

docker rm name

Просмотр журналов

# docker ps -a
docker logs container_Id

Занимайте ресурсы

docker stats name

функция зеркала

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

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

Принцип наслоения

Образ Docker объединяет слои файловых систем вместе, объединяя файловые системы.

направляющий путь

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

  • rootfs: расположен поверх bootfs, ведет себя как корневая файловая система контейнера докеров.
    • В традиционном режиме при запуске системы ядро ​​сначала монтируется в режиме «только для чтения», а затем после завершения всех самопроверок монтируется в режиме «чтение-запись».
    • В докере rootfs монтируется ядром в режиме «только для чтения», а затем с помощью технологии UFS монтируется «доступный для записи» слой.

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

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

Например, если из базового образа создается несколько образов, хосту нужно только сохранить базовый образ на диске и загрузить только базовый образ в память, чтобы можно было обслуживать все контейнеры, а образ Каждый слой может быть общим. Чтобы просмотреть слои изображения, вы можете использовать команду docker image inspect.

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

UFS (объединенная файловая система)

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

Он поддерживает модификацию файловой системы как фиксацию для наложения слоя за слоем и может монтировать разные каталоги в одну и ту же виртуальную файловую систему.

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

Принцип загрузки

При первом запуске Linux загружается файловая система bootfs, и bootfs находится внизу образа Docker.

При загрузке бут все ядро ​​находится в памяти.В это время права на использование памяти переданы от bootfs к ядру, и система также выгрузит bootfs. rootfs находится поверх bootfs, rootfs содержит то, что есть в типичной системе Linux./dev、/proc、/bin、/etcи другие каталоги и файлы. rootfs — это просто набор различных дистрибутивов операционных систем.

Docker File

Что делать с зеркалами, которых нет на складе?

Могу ли я создать зеркало самостоятельно?

Контейнер -> Изображение

docker commit CID -t xx.xx.xx

⚠️⚠️⚠️⚠️ По крайней мере один демон работает на переднем плане

NetEase Honeycomb: хранилище зеркал с открытым исходным кодом

написать файл докера

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

Объяснение инструкции

FROM

Укажите базовый образ, это должна быть первая команда, там только одна

# FROM <image>
# FROM <image>:<tag>
# FROM <image>@<digest>
FROM mysql:5.6

MAINTAINER

информация о создателе

# MAINTAINER <name>
MAINTAINER yitiao

RUN

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

#shell执行
#    RUN <command>
#exec执行
#    RUN ["executable", "param1", "param2"]
RUN apk update
RUN ["/etc/execfile", "arg1", "arg1"]

ADD

Добавьте локальные файлы в контейнер, файлы типа tar будут автоматически распакованы (сетевые сжатые ресурсы не будут распакованы), вы можете получить доступ к сетевым ресурсам, аналогично wget

# ADD <src>... <dest>
ADD hom?.txt /mydir/      # ? 替代一个单字符,例如:"home.txt"

COPY

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

CMD

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

# CMD command param1 param2 (执行shell内部命令)
CMD echo "This is a test." | wc -
#CMD不同于RUN,CMD用于指定在容器启动时所要执行的命令,而RUN用于指定镜像构建时所要执行的命令

ENTRYPOINT

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

# ENTRYPOINT ["executable", "param1", "param2"] (可执行文件, 优先)
# ENTRYPOINT command param1 param2 (shell内部命令)FROM ubuntu
ENTRYPOINT ["top", "-b"]
CMD ["-c"]

LABEL

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

# LABEL <key>=<value> <key>=<value> <key>=<value> ...
LABEL version="1.0" description="一条coding" by="一条"

ENV

Установить переменные среды

# ENV <key> <value>  
# <key>之后的所有内容均会被视为其<value>的组成部分,因此,一次只能设置一个变量
# ENV <key>=<value> ...  
# 可以设置多个变量,每个变量为一个"<key>=<value>"的键值对
ENV myName John Doe
ENV myDog Rex The Dog
ENV myCat=fluffy

EXPOSE

Порт предназначен для внешнего взаимодействия

格式:
    EXPOSE <port> [<port>...]
示例:
    EXPOSE 80 443
    EXPOSE 8080
    EXPOSE 11211/tcp 11211/udp
注:
  EXPOSE并不会让容器的端口访问到主机。要使其可访问,需要在docker run运行容器时通过-p来发布这些端口,或通过-P参数来发布EXPOSE导出的所有端口

VOLUME

Используется для указания постоянного каталога

格式:
    VOLUME ["/path/to/dir"]
示例:
    VOLUME ["/data"]
    VOLUME ["/var/www", "/var/log/apache2", "/etc/apache2"
注:
  一个卷可以存在于一个或多个容器的指定目录,该目录可以绕过联合文件系统,并具有以下功能:
1 卷可以容器间共享和重用
2 容器并不一定要和其它容器共享卷
3 修改卷后会立即生效
4 对卷的修改不会对镜像产生影响
5 卷会一直存在,直到没有任何容器在使用它

WORKDIR

Рабочий каталог, аналогичный команде cd

# WORKDIR /path/to/workdir
WORKDIR /a  #(这时工作目录为/a)
WORKDIR b  #(这时工作目录为/a/b)
WORKDIR c  #(这时工作目录为/a/b/c)
#通过WORKDIR设置工作目录后,Dockerfile中其后的命令RUN、CMD、ENTRYPOINT、ADD、COPY等命令都会在#该目录下执行。在使用docker run运行容器时,可以通过-w参数覆盖构建时所设置的工作目录。

USER

Укажите имя пользователя или UID при запуске контейнера. Последующие запуски также будут использовать указанного пользователя. При указании пользователя с помощью USER вы можете использовать имя пользователя, UID или GID или их комбинацию. Если службе не требуются права администратора, вы можете указать работающего пользователя с помощью этой команды. А нужного пользователя можно создать раньше.

После указания пользователя с USER последующие команды RUN, CMD и ENTRYPOINT в Dockerfile будут использовать этого пользователя. После создания образа перейдитеdocker runПри запуске контейнера вы можете переопределить указанного пользователя с помощью параметра -u.

# USER user
# USER user:group
# USER uid
# USER uid:gid
USER www

ARG

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

# ARG <name>[=<default value>]
ARG site
ARG build_user=www

ПОСТРОЙКА

Используется для установки триггера зеркала

# ONBUILD [INSTRUCTION]
ONBUILD ADD . /app/src
ONBUILD RUN /usr/local/bin/python-build --dir /app/src
#当所构建的镜像被用做其它镜像的基础镜像,该镜像中的触发器将会被钥触发

Картинка для понимания, yyds

Картинки из интернета

docker file demo

# 一条coding
# Version 1.0

# Base images 基础镜像
FROM centos

#MAINTAINER 维护者信息
MAINTAINER tianfeiyu 

#ENV 设置环境变量
ENV PATH /usr/local/nginx/sbin:$PATH

#ADD  文件放在当前目录下,拷过去会自动解压
ADD nginx-1.8.0.tar.gz /usr/local/  
ADD epel-release-latest-7.noarch.rpm /usr/local/  

#RUN 执行以下命令 
RUN rpm -ivh /usr/local/epel-release-latest-7.noarch.rpm
RUN yum install -y wget lftp gcc gcc-c++ make openssl-devel pcre-devel pcre && yum clean all
RUN useradd -s /sbin/nologin -M www

#WORKDIR 相当于cd
WORKDIR /usr/local/nginx-1.8.0 

RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-pcre && make && make install

RUN echo "daemon off;" >> /etc/nginx.conf

#EXPOSE 映射端口
EXPOSE 80

#CMD 运行以下命令
CMD ["nginx"]

Телекоммуникации

Как докер обменивается данными внутри и снаружи?

  • внутри контейнера
  • внутренний доступ внешний
  • внешний доступ внутренний

Дополнение к сетевым знаниям

eth0

Физический сетевой адаптер eth0 относится к фактическому устройству сетевого интерфейса на сервере. Устройство используется для получения интерфейса данных Ethernet, а пакеты данных пересылаются и маршрутизируются между различными узлами.

veth

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

Один конец подключен к стеку протоколов, а другой конец соединен друг с другом. После того, как одно устройство считывает данные из стека протоколов, оно отправляет данные на другое устройство.

Из-за этой функции он часто действует как мост для подключения различных виртуальных сетевых устройств, типичными примерами являются «соединение между двумя пространствами имен», «соединение между мостом и OVS», соединение «между контейнерами Docker» и т. д., чтобы построить очень сложная виртуальная сетевая структура, такая как OpenStack Neutron.

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

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

сетевая модель

Когда мы используем docker run для создания контейнера Docker, мы можем использовать--netПараметр указывает сетевой режим контейнера. Docker имеет следующие 4 сетевых режима:

  • режим хоста, указанный с помощью --net=host.

  • режим контейнера, указанный с --net=container:NAME_or_ID.

  • режим none, указанный параметром --net=none.

  • режим моста, указанный параметром --net=bridge, настройка по умолчанию.

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

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

Обычно докер использует мост + NAT для связи. Режим моста создаст независимое сетевое пространство имен для контейнера с независимыми сетевыми картами и другими грид-стеками.

NAT: можно понимать как сетевую карту

Docker0: это мост, коммутатор,ifconfigвидимый

На том же хосте контейнеры, созданные в режиме моста, будут связаны с docker0 через DHCP, а сетевое взаимодействие будет осуществляться через docker0. «Контейнеры подключены к мосту docker0, который действует как виртуальный коммутатор, чтобы контейнеры могли взаимодействовать друг с другом».

Внутренняя и внешняя связь

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


Хорошо, пока все знания о докере были обобщены.Как Java-разработке, освоения этого достаточно, чтобы вы почувствовали себя уткой в ​​​​воде.

Вам может понравиться!

Наконец

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