Ендпойнти контейнера Докер | Mutagen підтримує синхронізацію файлів і пересилання мережевого трафіку до та з контейнерів Docker® .
Кінцеві точки контейнера Docker®
Mutagen підтримує синхронізацію файлів і пересилання мережевого трафіку до та з контейнерів Docker® . Ця підтримка поширюється на всі клієнтські платформи Docker (Linux® , macOS, Windows тощо), налаштування демона Docker (локальний, віддалений, віртуальна машина, Hyper-V тощо) і типи контейнерів Docker (підтримуються контейнери як Linux, так і Windows). ).
Вимоги
Mutagen вимагає, docker
щоб команда була на шляху користувача. Через використання прапора -w/--workdir
з docker exec
командою для Mutagen потрібен клієнт Docker і демон, що підтримує API 1.35+. Ви можете перевірити підтримку версії API вашого клієнта Docker і демона за допомогою docker version
команди.
Синхронізація
Кінцеві точки файлової системи контейнера Docker можна вказати для mutagen sync create
команди за допомогою URL-адрес такого вигляду:
docker://[<user>@]<container><path>
Ці URL-адреси підтримують імена та шляхи Unicode і не вимагають і не підтримують вихідне кодування URL-адрес (тобто просто введіть «ö», а не «%C3%B6» тощо).
Компонент <user>
є необов’язковим і вказує Mutagen запускатися від імені вказаного користувача всередині контейнера. Якщо не вказано, Mutagen працює як користувач контейнера за замовчуванням (зазвичай root
для контейнерів Linux або ContainerAdministrator
контейнерів Windows). У будь-якому випадку користувача слід вибирати таким чином, щоб дозволити доступ до цільового шляху та створити файли з правильними дозволами. Використання адміністратора (наприклад, root
) для доступу та явного встановлення дозволів часто є найнадійнішою стратегією з контейнерами.
Компонент <container>
може вказувати будь-який тип ідентифікатора контейнера, зрозумілого docker cp
і docker exec
(наприклад, ім'я контейнера або шістнадцятковий ідентифікатор).
Компонент <path>
має бути непорожнім і починатися з /
. Він може приймати одну з чотирьох форм: абсолютний шлях, відносний шлях домашнього каталогу, відносний шлях домашнього каталогу для альтернативного користувача або абсолютний шлях Windows. У випадку шляху Windows /
символ усе ще потрібен на початку шляху.
Контейнери Docker мають бути запущені, щоб створити сеанси синхронізації та запустити синхронізацію.
Пересилання
Кінцеві точки мережі контейнера Docker можна вказати в mutagen forward create
команді за допомогою URL-адрес такого вигляду:
docker://[<user>@]<container>:<network-endpoint>
Компоненти цієї URL-адреси <user>
та <container>
є такими самими, що й у форматі URL-адреси синхронізації, описаному вище, тоді як компонент <network-endpoint>
описано в документації пересилання . Як і у випадку синхронізації, <user>
компонент (або його відсутність) слід вибирати для забезпечення необхідних можливостей у контейнері (наприклад, прив’язка до привілейованих портів). У разі відносних шляхів сокетів домену Unix у кінцевих точках мережі розв’язання шляху виконуватиметься відносно домашнього каталогу користувача контейнера (тобто користувача, указаного в URL-адресі, або користувача контейнера за замовчуванням, якщо в URL-адресі не вказано).
Контейнери Docker мають бути запущені, щоб створити сеанси пересилання та дозволити запустити пересилання.
Змінні середовища
Поведінка клієнта Docker контролюється декількома змінними середовища:
DOCKER_HOST
DOCKER_TLS_VERIFY
DOCKER_CERT_PATH
DOCKER_API_VERSION
DOCKER_CONTEXT
(у Mutagen v0.12+)
Mutagen знає про ці змінні середовища та заблокує їх під час створення сеансу (що видно за допомогою команд mutagen sync create
і mutagen forward create
), включаючи блокування відсутніх або порожніх значень. Потім ці заблоковані значення будуть перенаправлені до будь-яких docker
команд, які виконує Mutagen.
За потреби можна використовувати специфічні для кінцевих точок версії цих змінних (з префіксом MUTAGEN_ALPHA_
/ MUTAGEN_BETA_
для сеансів синхронізації та MUTAGEN_SOURCE_
/ MUTAGEN_DESTINATION_
для сеансів пересилання) для заміни їхніх значень для кожної кінцевої точки. Це буде необхідно, наприклад, для створення сеансу синхронізації між двома контейнерами Docker, розміщеними на різних демонах Docker. У цьому випадку DOCKER_*
не можна використовувати єдині глобальні значення для змінних середовища (оскільки це буде застосовано до URL-адрес обох кінцевих точок), а під час виклику потрібно буде використовувати специфічні для кінцевих точок змінні, такі як MUTAGEN_ALPHA_DOCKER_HOST
або .MUTAGEN_BETA_DOCKER_TLS_VERIFY
mutagen sync create
Реалізація
Підтримка Mutagen для контейнерів Docker забезпечується виконуваним файлом клієнта Docker у вашій системі. Mutagen використовує docker cp
команду для копіювання двійкових файлів агента в контейнери та docker exec
команду для запуску та обміну даними з двійковими файлами агента через стандартні потоки введення/виведення.
Віконні контейнери
Контейнери Docker Windows запускаються за допомогою гіпервізора Microsoft Hyper-V, який, на жаль, не дозволяє docker cp
копіювати файли в запущені контейнери. Це означає, що Mutagen має зупинити та перезапустити контейнери Windows, щоб скопіювати виконувані файли свого агента. Mutagen підкаже користувачеві, якщо це необхідно, і дозволить користувачеві перервати або продовжити. Якщо користувач вирішить продовжити, Mutagen автоматично зупинить і перезапустить. Це необхідно, лише якщо сумісний двійковий файл агента ще не існує в контейнері, тому це не буде потрібно під час наступних операцій підключення.
Це обмеження не стосується контейнерів Linux.
Шлях пошуку Docker
Mutagen використовує перший docker
виконуваний файл, знайдений на шляху користувача (і в macOS включає кілька інших добре відомих шляхів пошуку). Цю стратегію пошуку можна змінити, встановивши для MUTAGEN_DOCKER_PATH
змінної середовища (для демона Mutagen) шлях, що містить потрібний виконуваний файл клієнта Docker.
Вікна і шоколад
Якщо ви використовуєте Chocolatey для встановлення Docker CLI у Windows, майте на увазі, що Chocolatey генерує виконувані файли shim, які порушують стандартне потокове введення/виведення, яке використовує Mutagen. На щастя, ви можете вказати Mutagen на нерозкриті виконувані файли, щоб уникнути цієї поломки, встановивши MUTAGEN_DOCKER_PATH
змінну середовища. Цей параметр має виглядати так:
MUTAGEN_DOCKER_PATH=C:\ProgramData\chocolatey\lib\docker-cli\tools
Можливо, вам знадобиться налаштувати цей шлях залежно від інсталяції Chocolatey. Ви також можете використовувати %ChocolateyInstall%
змінну середовища як частину цього визначення, наприклад:
MUTAGEN_DOCKER_PATH=%ChocolateyInstall%\lib\docker-cli\tools
Коментарі
Дописати коментар
Олег Мічман в X: «Donations and support for media resources, bloggers, projects, and individuals. https://t.co/HPKsNRd4Uo https://t.co/R6NXVPK62M» / X
https://twitter.com/olukawy/status/1703876551505309973