我注意到docker需要了解容器中发生了什么,或者容器中存在哪些文件。一个例子是从docker索引下载图像-您不知道图像包含什么,因此无法启动应用程序
理想的情况是能够使用ssh将其转换为ssh或等效的格式。是否有一个工具可以做到这一点,或者我对docker的概念是错误的,因为我认为我应该能够做到这一点
这里有几种不同的方法
A) 使用docker exec(最简单)
Docker 1.3版或更新版本支持行为类似于nsenter的命令exec。此命令可以在已经运行的容器中运行新进程(容器必须已经运行PID 1进程)。您可以运行/bin/bash来查看容器状态:
docker exec-t-i mycontainer/bin/bash
请参阅Docker命令行文档
B) 使用快照
您可以通过以下方式评估容器文件系统:
#查找正在运行的容器的ID:
docker ps
#从容器文件系统创建映像(快照)
docker提交12345678904b5 mysnapshot
#使用bash探索这个文件系统(例如)
docker run-t-i mysnapshot/bin/bash
这样,您就可以在精确的时间内评估正在运行的容器的文件系统。容器仍在运行,不包括将来的更改
以后可以使用删除快照(运行容器的文件系统不受影响!):
docker rmi mysnapshot
C) 使用ssh
如果需要连续访问,可以将sshd安装到容器中并运行sshd守护程序:
docker run-d-p22 mysnapshot/usr/sbin/sshd-d
#您需要找出要连接的端口:
docker ps
这样,您可以使用ssh运行应用程序(连接并执行您想要的内容)
D) 使用nsenter
使用nsenter,查看为什么不需要在Docker容器中运行SSHd
简短的版本是:使用nsenter,您可以将shell放入
现有容器,即使该容器不运行SSH或任何类型
特殊用途守护程序的配置