背景

在运行容器的时候,由于错误的配置导致原来可以启动的docker容器不能启动了。相信很多人的做法是删除容器重建一个,这样也是可以的,但是你的配置和插件就得重新安装,非常麻烦。最小的代价当然是修改原来的配置让容器能启动。

那么问题来了,docker容器起不来了应该怎么改配置?

docker cp

若有兴趣可参考docker cp官方文档

在容器和本地文件系统之间复制文件/文件夹

用法:

1
2
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

docker cpSRC_PATH的内容复制到DEST_PATH,即从源位置复制到目标位置,可以从容器的文件系统复制到本地计算机,也可以从容器的文件系统复制到本地文件系统。

实例

由于我开启的容器是Nginx,直接使用exec命令进入容器,修改配置重启时,容器启动报错,瘫痪了。正确的解决姿势是将容器的配置cp出来(到宿主机),修改正确然后cp回去,启动就行了。

  • 将容器的配置cp出来(到宿主机):
1
docker cp nginx:/etc/nginx/nginx.conf /tmp/
  • 将nginx配置文件修改正确,然后cp回去:
1
2
vim /tmp/nginx.conf
docker cp /tmp/nginx.conf nginx:/etc/nginx/nginx.conf
  • 重启nginx
1
docker restart nginx