如题,我想在 docker 容器内拷贝宿主机 .ssh 目录内的文件,在线搜了半天无结果,在此请大神帮忙,谢谢。
不使用目录映射。
docker容器内的shell脚本在不使用目录映射的情况下,访问不到宿主机的文件.
你应该使用DockerFile
的COPY
/ADD
命令,在启动容器时,把需要的文件复制进去
COPY ./.ssh /tmp/.ssh
然后再用docker容器内的shell脚本,对/tmp/.ssh
做你想做的操作
docker cp :用于容器与主机之间的数据拷贝。
实例
将主机/www/runoob目录拷贝到容器96f7f14e99ab的/www目录下。
docker cp /www/runoob 96f7f14e99ab:/www/
将主机/www/runoob目录拷贝到容器96f7f14e99ab中,目录重命名为www。
docker cp /www/runoob 96f7f14e99ab:/www
将容器96f7f14e99ab的/www目录拷贝到主机的/tmp目录中。
docker cp 96f7f14e99ab:/www /tmp/
将 .ssh/
目录作为 Volume
挂载到容器内
提供两种思路:
docker cp ~/.ssh/ CONTAINER_ID:/root/
docker run -it -v ~/.ssh:/root/.ssh CONTAINER_IMAGE
需要注意的是,这样操作时,容器内尽量不要修改 .ssh
,修改会影响到宿主机,建议拷贝或仅做读取使用。
补充:看到你修改了问题描述,不想通过挂载实现,但这基本不太可能做到,如果容器可以随意访问宿主机的文件未免也太不安全了。
如果你是考虑到挂载会有危险,还可以考虑通过挂载并设定 :ro
只读,如:
docker run -it -v ~/.ssh:/root/.ssh:ro CONTAINER_IMAGE
问题内容: 我是Docker的新手。 我运行了一个10节点的图像,并在运行的容器中克隆了一个存储库,运行了使用文件监视程序启动服务器的应用程序。我需要访问容器内的代码库,并在Windows主机上运行的IDE中打开它。如果完成了,那么我还希望当我在IDE中更改文件时,这些更改会在容器中引起文件监视程序。 任何帮助表示赞赏。谢谢, 问题答案: 您正在寻找的概念称为卷。您需要启动一个容器并在其中安装主机
WSL2下的docker容器无法访问宿主机下的docker容器端口如何解决? 宿主机是一台windows11电脑,在windows的docker desktop中开启了一个docker容器,监听5005端口;测试在windows powershell下和wsl bash下访问127.0.0.1:5005端口,能够正常访问;所以wsl本身的网络配置应该是没有问题。 在Windows的docker d
我有一个docker应用程序,我使用以下docker compose。yml运行它: 我有一个没有docker化的服务器在我的机器上运行,我可以通过访问它。我希望我的服务能够访问它。 我发现有人建议在我的服务配置中添加以下内容: 但是当我添加这个时,并尝试,我得到。当我尝试<code>curl时,也会出现同样的错误http://host.docker.internal:3000。 我拼命地尝试将端
问题内容: 我有一个运行詹金斯的码头集装箱。作为构建过程的一部分,我需要访问在主机上本地运行的Web服务器。是否可以将主机Web服务器(可以配置为在端口上运行)暴露给jenkins容器? 编辑:我正在Linux机器上本地运行docker。 更新: 除了下面的@larsks答案之外,要从主机获取主机IP的IP地址,我还要执行以下操作: 问题答案: 在Linux上本地运行Docker时,您可以使用接口
我有一个docker容器在运行Jenkins。作为构建过程的一部分,我需要访问在主机上本地运行的web服务器。有没有一种方法可以将主机web服务器(可以配置为在端口上运行)公开给jenkins容器? 编辑:我正在Linux机器上原生运行docker。 更新: 除了@larsks下面的答案之外,要从主机获取主机IP的IP地址,我还做了以下操作:
我有两个docker容器在我的Mac主机上运行-容器1是docker Hub的Jenkins,容器2是docker Hub的SonarQube。我有两个容器成功运行。我可以通过从我的主机访问Jenkins,我可以通过访问我的SonarQube。 詹金斯容器是这样启动的: SonarQube容器是这样启动的: 难道我不应该能够从我的主机通过它们的内部IP地址访问每个容器吗? 我如何测试一个容器(例如