Работа с докерами и контейнерами на производстве - PullRequest
0 голосов
/ 30 апреля 2020

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

Я изучаю докеры и контейнеры, и теперь у меня есть некоторые навыки, использующие docker команды и работа с контейнерами. Я понимаю, что docker состоит из двух основных частей: Docket Client (docker .exe) и docker server (dockerd.exe). Теперь в жизни разработчика оба установлены на моем локальном компьютере (я установил их вручную на windows server 2016), следуя инструкции Nigel Poulton здесь https://app.pluralsight.com/course-player?clipId=f1f27565-e2bf-4e58-96f3-bc2c3b160ec9. Теперь, когда дело доходит до реальной производственной жизни, как мне настроить мой клиент docker для связи с удаленным сервером docker? Я попытался провести исследование inte rnet, но, честно говоря, не смог найти простой ответ на этот вопрос. Я установил docker для настольного компьютера на мою машину windows 10 и заметил, что она создала машину hyper-v, которая может быть Linux, я понимаю, что на этой машине установлен сервер docker, который мой клиент docker взаимодействует, но не понимаю, как это взаимодействие выполняется.

Буду признателен, если получу какое-либо руководство или четкий ответ на мои вопросы.

1 Ответ

1 голос
/ 30 апреля 2020

В производственных средах у вас никогда не будет удаленного демона Docker. Обычно вы взаимодействуете с Docker либо через выделенного оркестратора (Kubernetes, Docker Swarm, Nomad, AWS ECS), либо с помощью универсального средства автоматизации системы (Chef, Ansible, Salt Stack), либо если Вы должны напрямую подключиться к системе и запустить там команды docker.

Удаленный доступ к демону Docker является чем-то вроде аварийной ситуации безопасности. Если вы вообще можете получить доступ к демону Docker, вы можете отредактировать любой файл в хост-системе как root и довольно просто перенять весь процесс. (Google "Docker cryptojacking" для некоторых реальных примеров.) В принципе вы можете защитить его с помощью взаимного TLS, но это сложная настройка.

Другая важная рекомендация заключается в том, что Docker изображений должен быть автономным. Не пытайтесь развернуть образ Docker в рабочей среде, а также отдельно скопировать код своего приложения. Та же самая установка Ansible, которая может развертывать контейнер Docker, также может устанавливать Node непосредственно в целевой системе, избегая слоя; Сложно скопировать код приложения в том Kubernetes, особенно когда модули Kubernetes могут перезапуститься вне вашего прямого контроля. Разверните (и протестируйте!) Свои изображения со всем кодом COPY d в Dockerfile, сводя к минимуму использование bind mounts.

...