有两种可能性。
1) 直接在主机上编辑文件系统 。这有些危险,并且有可能完全破坏容器,并可能根据发生的问题而破坏其他数据。
2) 将启动脚本更改为 永不失败的内容,例如启动bash,进行修复/编辑,然后将启动程序再次更改为所需的程序(例如节点或之前的版本)。
更多细节:
1)使用
1 2 |
docker ps |
查找正在运行的容器或
1 2 |
docker ps -a |
查找所有容器(包括停止的容器)并
1 2 |
docker inspect (containername) |
查找“ Id”,第一个值之一。
这是包含实现细节的部分,可能会更改,请注意,这样可能会丢失容器。
去
1 2 |
/var/lib/docker/aufs/diff/9bc343a9..(long container id)/ |
在那里您将找到所有更改为容器所基于的图像的文件。您可以覆盖文件,添加或编辑文件。
同样,我不建议这样做。
2)您可以在以下路径找到配置jsonconfig.json
1 2 |
/var/lib/docker/containers/9bc343a99..(long container id)/config.json |
在那里,您可以将参数从“ nodejs app.js”更改为“ / bin /
bash”。现在重新启动docker服务并启动容器(您应该看到它现在已正确启动)。你应该用
1 2 |
docker start -i (containername) |
确保它不会立即退出。您现在可以使用容器和/或以后再附加
1 2 |
docker exec -ti (containername) /bin/bash |
另外,docker cp对于复制在容器外部编辑的文件非常有用。
同样,如果容器无论如何或多或少地“丢失”,则应该只使用那些措施,因此任何更改都是一种改进。
参考:http://codingdict.com/questions/53248