将主机文件添加到 docker 容器 - 来自 Dockerfile

Adding host file to docker container - from Dockerfile

这是我使用 docker 的前 2 个小时。我已经从 centos 4.0.6(项目要求)导入了 linux 图片。

我意识到还有其他问题描述了将文件从主机复制到 docker 容器,但我想在创建容器期间将文件从主机复制到容器 - 例如通过 Dockerfile 命令。

我尝试这样做的原因如下:

所以我的 Dockerfile 必须从 svn 服务器检出一些代码并构建然后执行编译后的代码。

svn连接使用svn+ssh协议。由于容器中的用户是root,我在~/.subversion/config文件中添加了合适的ssh用户,并且没有配置StricthostKeyChecking.

在我的docker

在我的 docker 文件中:

RUN echo "[tunnels]" > ~/.subversion/config
RUN echo "ssh = ssh -l mysvnuser" >> ~/.subversion/config
RUN echo -e "Host svnserver.lan\n\tStrictHostKeyChecking no\n" >> /root/.ssh/config
RUN svn co svn+ssh://svnserver.lan/svn/bananas/branches/Ti_2.4 bananas
...

我收到以下 svn 身份验证错误:

Warning: Permanently added 'svnserver.lan,192.168.1.8' (RSA) to the list of known hosts.
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,gssapi-with-mic,password).
svn: To better debug SSH connection problems, remove the -q option from 'ssh' in the [tunnels] section of your Subversion configuration file.
svn: Network connection closed unexpectedly

所以我知道我需要添加 mysvnuser 的 id_rsa 来解决这个问题,但是 svn 会使用 /root/.ssh 或 /home/mysvnuser/.ssh 中的 id_rsa 吗?

有没有人通过 Dockerfile 成功地将文件从 docker 主机传输到容器?

在包含 docker 文件的目录中,您只需将要传输的文件添加到容器中,如下所示:

ADD name-of-file.extension /

这会将文件放在容器的根目录中,将 / 更改为您想要的任何内容,以便将文件放在适当的位置。