我是 docker 新手。
我们需要在客户的环境中托管我们的应用程序。
因此,我必须限制 shell 访问,这样就没有人能够提取代码。我尝试通过删除其中的 bash 访问权限来限制 shell 访问,但我仍然能够使用docker cp
命令将容器中的内容复制到服务器。
基本上,我的容器应该正在运行,并且应该被锁定,没有人能够访问其中的代码。
答案1
基本上,我的容器应该正在运行,并且应该被锁定,没有人能够访问其中的代码。
您无法使 docker 镜像不可复制。就这么简单。
这根本是不可能的,这是计算的基本事实——以及 Docker 的设计。如果你想让计算机执行某件事,它有读它。你无法改变它,就像你无法让水变得不那么湿一样。
此外,docker 的创建者故意的建立在其他人的工作之上 - docker 镜像由层组成,层扩展了下层的内容。它的设计使其易于阅读和添加。
如果你想让你的代码保持秘密,你就不能给任何人一份副本。这是那简单的。
答案2
Docker 容器共享主机系统的内核,但为应用程序运行提供隔离的环境。每个容器包含自己的文件系统、进程、网络接口和资源分配,但它们都共享同一个内核。
以下是锁定/隔离容器的一些技巧
因此,您需要部署一个经过强化且访问受限的主机。除此之外,您还需要为容器创建一个隔离的 Docker 网络
docker network create --internal isolated_network
仅将此网络用于这一个容器,否则如果您将其用于更多容器,它也可以与其他容器进行通信。
首先,您可以使用像 Alpine Linux 这样的最小基础映像,并在容器中使用一些 iptables 规则来拒绝传入和传出的流量。(但容器也无法更新其软件包等等)