Введение
В этой лабораторной работе вы научитесь управлять настройками Docker Model Runner с помощью команды model-runner в Docker Desktop. Мы рассмотрим включение прослушивания TCP-порта по умолчанию для демона Docker, настройку прослушивания на пользовательском TCP-порту и, наконец, отключение TCP-соединения для Docker Model Runner.
В ходе практических шагов вы измените конфигурационный файл демона Docker (daemon.json), чтобы управлять сетевыми интерфейсами, на которых работает демон, перезапустите службу Docker для применения изменений и поймете последствия включения или отключения TCP-соединений для удаленного доступа и безопасности.
Включение Docker Model Runner с TCP-портом по умолчанию
На этом шаге мы узнаем, как настроить демон Docker для прослушивания соединений на стандартном TCP-порте. По умолчанию демон Docker использует Unix-сокет, что более безопасно для локального доступа. Однако для удаленного доступа или специальных сценариев может потребоваться включение TCP.
Чтобы включить прослушивание TCP-порта демоном Docker, необходимо изменить его конфигурационный файл. Основной файл конфигурации Docker обычно находится по пути /etc/docker/daemon.json. Если файл не существует, его можно создать.
Сначала проверим наличие файла daemon.json с помощью команды ls:
ls /etc/docker/daemon.json
Если файл существует, команда выведет его путь. Если файл отсутствует, вы увидите сообщение об ошибке.
Теперь отредактируем или создадим файл /etc/docker/daemon.json с помощью редактора nano. Добавим или изменим ключ hosts, включив в него TCP-адрес и порт. Стандартные TCP-порты для Docker — 2375 (без шифрования) и 2376 (с TLS-шифрованием). Для этого примера используем незашифрованный порт 2375.
Откроем файл в nano:
sudo nano /etc/docker/daemon.json
Если файл пуст или не существует, добавим следующее содержимое. Если файл уже содержит данные, добавим или изменим ключ hosts, включив "tcp://0.0.0.0:2375". Запись unix:///var/run/docker.sock гарантирует, что демон продолжит прослушивать Unix-сокет.
{
"hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"]
}
После внесения изменений сохраним файл, нажав Ctrl + X, затем Y для подтверждения и Enter для записи.
Чтобы изменения вступили в силу, необходимо перезапустить службу Docker с помощью команды systemctl:
sudo systemctl restart docker
После перезапуска можно проверить, что демон прослушивает TCP-порт, используя команду ss:
sudo ss -tuln | grep 2375
Если демон Docker успешно прослушивает порт 2375, вы увидите вывод, аналогичный этому:
tcp LISTEN 0 4096 0.0.0.0:2375 0.0.0.0:*
Это подтверждает, что демон Docker теперь доступен через TCP на порту 2375.
Включение Docker Model Runner с пользовательским TCP-портом
В предыдущем шаге мы настроили демон Docker для прослушивания стандартного TCP-порта 2375. В этом шаге мы научимся настраивать демон Docker для работы с пользовательским TCP-портом вместо стандартного. Это может быть полезно для повышения безопасности или избежания конфликтов портов.
Снова изменим файл /etc/docker/daemon.json, заменив порт 2375 на пользовательский, например, 2376.
Откроем файл daemon.json в редакторе nano:
sudo nano /etc/docker/daemon.json
Изменим ключ hosts, заменив порт 2375 на 2376. Содержимое файла должно выглядеть так:
{
"hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2376"]
}
Сохраним файл, нажав Ctrl + X, затем Y для подтверждения и Enter для записи.
После изменения конфигурации необходимо перезапустить службу Docker для применения изменений:
sudo systemctl restart docker
Теперь проверим, что демон Docker прослушивает новый пользовательский порт 2376 и больше не использует стандартный порт 2375. Снова воспользуемся командой ss.
Сначала проверим порт 2376:
sudo ss -tuln | grep 2376
Вы должны увидеть вывод, указывающий на прослушивание порта 2376:
tcp LISTEN 0 4096 0.0.0.0:2376 0.0.0.0:*
Затем убедимся, что порт 2375 больше не используется:
sudo ss -tuln | grep 2375
Эта команда не должна выводить никаких данных, что подтвердит отключение порта 2375.
Это подтверждает успешную настройку демона Docker для работы с пользовательским TCP-портом.
Отключение TCP-подключения для Docker Model Runner
В предыдущих шагах мы настроили демон Docker для прослушивания стандартного и пользовательского TCP-портов. Хотя TCP-подключение может быть полезно для удаленного доступа, для повышения безопасности рекомендуется отключать его, когда оно не требуется, и использовать стандартный Unix-сокет для локального взаимодействия.
В этом шаге мы научимся отключать TCP-подключение для демона Docker, удалив соответствующую запись из конфигурационного файла.
Снова отредактируем файл /etc/docker/daemon.json с помощью редактора nano.
Откроем файл daemon.json:
sudo nano /etc/docker/daemon.json
Изменим ключ hosts, удалив TCP-запись ("tcp://0.0.0.0:2376" или "tcp://0.0.0.0:2375" в зависимости от предыдущего шага). Содержимое файла должно включать только запись о Unix-сокете:
{
"hosts": ["unix:///var/run/docker.sock"]
}
Сохраним файл, нажав Ctrl + X, затем Y для подтверждения и Enter для записи.
После изменения конфигурации необходимо перезапустить службу Docker для применения изменений:
sudo systemctl restart docker
Теперь проверим, что демон Docker больше не прослушивает TCP-порты. Используем команду ss для проверки портов 2375 и 2376.
Проверим порт 2375:
sudo ss -tuln | grep 2375
Эта команда не должна выводить никаких данных.
Проверим порт 2376:
sudo ss -tuln | grep 2376
Эта команда также не должна выводить никаких данных.
Это подтверждает успешное отключение TCP-подключения для демона Docker. Теперь демон доступен только через стандартный Unix-сокет, что является более безопасной конфигурацией по умолчанию для локального доступа.
Резюме
В этой лабораторной работе мы изучили, как управлять настройками Docker Model Runner, включая и отключая TCP-подключения для демона Docker. Мы начали с настройки демона Docker для прослушивания стандартного TCP-порта 2375 путем изменения конфигурационного файла /etc/docker/daemon.json - добавления "tcp://0.0.0.0:2375" в массив hosts с последующим перезапуском службы Docker.
Также в работе рассмотрено, как настроить демон Docker с пользовательским TCP-портом и как полностью отключить TCP-подключения, удалив соответствующую запись из массива hosts в файле daemon.json и перезапустив службу Docker. Эти шаги демонстрируют, как можно настроить доступность Docker по сети для различных сценариев использования.



