我使用portainer来管理容器,效果很好。
但是当我连接到控制台时,我得到容器的命令提示符。有没有办法运行像ls / home /这样列出主机上文件的简单命令?
换句话说,是否有任何图像将“按原样”挂载主机服务器的文件系统?
答案 0 :(得分:2)
以下是使用docker命令行的示例:
$ docker run --rm -it -v ~/Desktop:/Desktop alpine:latest /bin/sh
/ # ls /Desktop/
您可以根据需要扩展方法。试验它。了解different mount options。
我知道MacOS上的Docker应用程序提供了默认卷安装的方法。 Portainer还声称提供volume management screen,我还没有使用它。
希望这有帮助。
答案 1 :(得分:2)
如果您正在处理服务或现有的正在运行的容器,则在大多数情况下您可以直接访问shell。假设你有一个名为“meow”的容器。你可以运行:
docker exec -it meow bash
它会让你进入bash shell。您实际上需要知道是否已安装bash,或尝试调用sh
。
“i”选项表示它应该是交互式的,“t”选项表示它应该模拟TTY终端。完成后,您可以按 Ctrl + D 退出容器。
答案 2 :(得分:0)
首先:您从不一直希望这样做。
安装到容器的卷用于保存容器的数据,因为容器设计为易变的(容器本身不应该保持状态,因此重启容器n次应导致每次启动时都是相同的容器状态) - 所以将卷视为一个数据库,其中应存储所有数据(容器的状态)。
以这种方式查看卷可以更容易地决定不共享主机的整个文件系统,因为此容器将读取对主机操作系统文件本身的写入权限huge security threat。
跨容器共享卷被认为是一种糟糕的容器架构,更不用说共享整个主机文件系统了。
如果您需要访问主机以在主机上运行命令或任务,我会向您的主机提出简单的ssh(或远程桌面)。
或如果您的容器由于某种原因需要访问特定文件夹,那么您应该考虑mounting or binding that folder to the container
docker run -d --name devtest --mount source=myvol2,target=/app nginx:latest
我建议将该文件夹的内容复制到docker托管卷(docker / volumes树下的文件夹)并将容器绑定到此卷而不是原始文件夹,以最大限度地减少容器对主机的影响&# 39; s OS。