【问题标题】:Dealing with dockers and containers in production在生产中处理码头工人和容器
【发布时间】:2020-08-14 05:17:03
【问题描述】:

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

我正在学习 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 for desktop 并注意到它创建了一个可能是 Linux 机器的 hyper-v 机器,我的理解是这台机器有我的 docker 客户端与之交互的 docker 服务器,但不明白这种交互如何搞定了。

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

【问题讨论】:

    标签: docker containers production-environment


    【解决方案1】:

    在生产环境中,您永远不会有远程 Docker 守护程序。通常,您可以通过专用编排器(Kubernetes、Docker Swarm、Nomad、AWS ECS)或通过通用系统自动化工具(Chef、Ansible、Salt Stack)与 Docker 交互,或者如果您必须直接通过 ssh 连接到系统并在那里运行docker 命令。

    远程访问 Docker 守护进程是一场安全灾难。如果您完全可以访问 Docker 守护程序,您可以以 root 身份编辑主机系统上的任何文件,并且非常轻松地接管整个事情。 (谷歌“Docker cryptojacking”获取了一些真实世界的例子。)原则上你可以使用双向 TLS 来保护它,但这是一个棘手的设置。

    另一个重要的最佳实践是 Docker 镜像应该是自包含的。不要尝试将 Docker 映像部署到生产环境,并且还要单独复制您的应用程序代码。同样可以部署 Docker 容器的 Ansible 设置也可以直接在目标系统上安装 Node,避免一层;将应用程序代码复制到 Kubernetes 卷中很棘手,尤其是当 Kubernetes pod 可以在您的直接控制之外重新启动时。使用 Dockerfile 中的所有代码 COPYd 部署(并测试!)您的图像,最大限度地减少绑定挂载的使用。

    【讨论】:

    • 非常感谢,这就是我需要知道的。我将开始学习这些主题,如果您有任何简化 Docker Swarm 的文章,将不胜感激。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-05
    • 2018-11-29
    • 2016-07-27
    • 1970-01-01
    • 1970-01-01
    • 2017-02-01
    相关资源
    最近更新 更多