docker for mac 使用什么用户名登录 docker 图像?

What username does docker for mac use to log into a docker image?

我使用以下 Dockerfile 生成 docker 图像作为 CLion 的 ubuntu 工具链环境。 如图所示,我没有任何关于添加用户的配置。 以下显示我将 CLion 连接到此 docker 服务器:

当我点击红色圈出的设置时,显示如下:

我的问题是,“docker for mac”使用哪个用户名登录 docker 服务器?

在这个 docker 中,我使用 root 创建一个 public ssh 密钥,然后将它添加到我的远程 git 站点。我发现当工具链运行 cmake 时,由于用户权限不足,无法从我的远程 git 站点下拉 git 存储库。所以我猜想“docker for mac”不会以 root 用户身份登录到 docker 图像(我已经为其创建了一个 ssh public 密钥)

“Docker for Mac”中没有用户这样的概念。它只是一个产品,它封装了必要的元素,以在 MacOS.

上成功地基于 运行 linux 的容器

在您的用例中,您需要将与 public 密钥对相对应的 SSH 私钥从您的机器发送到您需要在其中克隆 [=55] 的底层 Ubuntu 容器=] 存储库。

一个天真的选择是创建您的 ~./ssh 文件夹和相关内容以及 COPY 私钥,但绝对不推荐这样做,因为它实际上会使您的密钥 public任何有权访问图像的人都可以访问。

相反,您可以尝试另一种方法。老实说,我从未使用过它,所以请采取必要的措施。思路摘自this article and based in the use of BuildKit。基本上,在构建过程中,您的主机 SSH 构建配置可供底层容器访问。

如文章中所述,可归纳为以下步骤:

  1. 在您的 Ubuntu 映像中安装一个 SSH 客户端,例如 openssh-client
RUN apt-get update && \
    apt-get install --yes --no-install-recommends \
    openssh-client \
    ...
  1. 获取必要的 public 密钥扫描您的 Git 服务器。例如,如果使用 github.com:
RUN mkdir -p -m 0600 ~/.ssh && \
    ssh-keyscan -H github.com >> ~/.ssh/known_hosts
  1. 使用 -mount=type=ssh 在您的 Docker 文件中识别需要 SSH 的命令,例如:
RUN --mount=type=ssh \
    git clone git@<host>:<organization>/google-test.git
  1. 使用 Buildkit 和标志进行构建,这涉及提供环境变量 DOCKER_BUILDKIT=1 然后 运行 您的构建如下:
docker build --ssh default .

可能您需要在 CLion 中配置 env 变量(可能在添加环境?)。

该过程在 official Docker documentation 中也有详细记录。