docker - Docker 用户作为 Azure 应用服务的 root
问题描述
Docker 通常应该作为生产应用程序的非 root 用户运行。我的理解是,这是因为在容器中拥有 root 访问权限也为您提供了服务器上的 root 访问权限。
通过 Azure 的应用服务进行部署时是否同样适用?我不明白在服务器上拥有 root 用户与容器服务之间的区别。
解决方案
应用服务使用端口 2222 将 SSH 连接到应用的容器中,但这并不意味着端口 2222 在 Internet 上公开。无论您如何在应用程序中使用 SSH,所有 SSH 流量都通过端口 443 上的端点处理。
- 附带说明,如果您不使用 SSH,则不必担心关闭端口 2222,因为它不会暴露在 Internet 上。
root 密码必须是 Docker!因为应用服务使用它来让您访问与容器的 SSH 会话。此配置不允许外部连接到容器。
(容器的 2222 端口只能在私有虚拟网络的桥接网络内访问,互联网上的攻击者无法访问。)
为了访问 SSH 端口,必须首先通过 HTTPS 登录 Kudu 容器/它不会暴露在 Internet 上。
应用服务中的 Linux 应用在自己的容器中运行。不允许访问主机操作系统,您确实拥有对容器的 root 访问权限。同样,对于在 Windows 容器中运行的应用程序,您对容器具有管理权限,但无法访问主机操作系统。
有关更多详细信息,请参阅这些文档: tutorial-custom-docker-image和configure-custom-container
推荐阅读
- android - 在 Android Recyclerview 中处理多个按钮单击并将响应存储在 Array 或 ArrayList 中
- php - 点击登录按钮后页面没有变化?
- javascript - 如何在 Visual Studio 的 Node.js 项目中将错误设置为警告
- javascript - 如果选中一个复选框,如何从多个复选框中获取值?
- c++ - 是否可以在不使用 Base 复制构造函数的情况下在 Derived 类中使用复制构造函数?
- javascript - Power BI 配置对最终用户可见
- php - 将 x 天数添加到给定日期,但它将天数作为月份并进行计算。帮我改一下格式
- c - Xcode 调试器弄乱了输入
- docker - docker build --build-arg 在 docker-compose 文件中使用 shell 命令
- umbraco - Umbraco uSync - 导入不显示导致问题的元素