处理生产中的docker和容器

问题描述 投票:0回答:1

我是容器主题的新手,如果这个论坛是问这个问题的合适场所,我将不胜感激。

我正在学习docker和容器,现在我掌握了使用docker命令并处理容器的一些技能。我了解docker有两个主要部分,即摘要客户端(docker.exe)和docker服务器(dockerd.exe)。现在,在开发生命周期中,这两个程序均安装在我的本地计算机上(我在Windows Server 2016上手动安装了它们),并在此处遵循Nigel Poulton教程https://app.pluralsight.com/course-player?clipId=f1f27565-e2bf-4e58-96f3-bc2c3b160ec9。现在,到了真正的生产生活,那么,我将如何配置Docker客户端以与远程Docker服务器通信。我试图在互联网上进行一些研究,但老实说找不到这个问题的简单答案。我在Windows 10机器上为桌面安装了docker,并注意到它创建了可能是Linux机器的hyper-v机器,我的理解是该机器具有我的docker客户端与之交互的docker服务器,但不了解这种交互方式完成。

如果我得到一些指导或明确的回答,我将不胜感激。

docker containers production-environment
1个回答
1
投票

在生产环境中,您永远不会有远程Docker守护程序。通常,您可以通过专用的协调器(Kubernetes,Docker Swarm,Nomad,AWS ECS)或通用系统自动化工具(Chef,Ansible,Salt Stack)与Docker进行交互,或者如果必须通过ssh'ing来与Docker进行交互系统并在其中运行docker命令。

远程访问Docker守护程序是一种安全灾难。如果您完全可以访问Docker守护程序,则可以以root用户身份编辑主机系统上的任何文件,并轻松地接管整个工作。 (对于一些真实示例,Google的“ Docker cryptojacking”。)原则上,您可以使用双向TLS对其进行保护,但这是一个棘手的设置。

另一个重要的最佳实践是Docker映像应该是独立的。不要尝试将Docker映像部署到生产环境,也不要单独复制应用程序代码。可以部署Docker容器的相同Ansible设置也可以将Node直接安装在目标系统上,从而避免了分层。将应用程序代码复制到Kubernetes卷中是非常棘手的,尤其是当Kubernetes Pod可以在您直接控制之外重新启动时。在Dockerfile中使用所有代码COPY d部署(并测试!)图像,从而最大程度地减少绑定装载的使用。

© www.soinside.com 2019 - 2024. All rights reserved.