美文网首页Docker
Docker修改已停止容器属性

Docker修改已停止容器属性

作者: 香葱煎蛋饼 | 来源:发表于2020-06-19 20:18 被阅读0次

    记录下如何更改已停止容器的属性,比如启动一个busybox,但是启动命令里面没有加-it选项,那么容器启动后就会直接退出,因为sh命令在没有交互模式下会直接退出,所有容器也会随之停止。-it参数含有请执行docker run --help查看。

    上面停止的容器,就算docker restart重启后,容器也还是会立马退出。要想容器继续运行,则需要改变容器的属性,比如打开-it,或者覆盖CMD命令。那怎么修改呢?docker container update?这句命令修改的属性并没有能实现上面的需求。这里可以修改容器的配置文件来达到目的。

    首先查看容器id:

    # docker ps -a | grep box
    d8fcdb33a70c        busybox                                             "sh"                     10 hours ago        Exited (255) 9 minutes ago
    

    这里d8fcdb33a70c则是容器ID。然后进入容器在主机上的目录,如果没有修改过docker的默认配置目录,则为

    # cd /var/lib/docker/containers/d8fcdb33a70c47b2c14aef0428069df9672f80ab52d76483a0062e29a617e98a/
    # ls
    checkpoints  config.v2.json  d8fcdb33a70c47b2c14aef0428069df9672f80ab52d76483a0062e29a617e98a-json.log  hostconfig.json  hostname  hosts  mounts  resolv.conf  resolv.conf.hash
    

    可以看到如有config.v2.json文件里面则包含了"Tty":false,"OpenStdin":false,以及"Cmd":["sh"]参数设置,注意不能直接。需要先停止docker服务。不然修改的文件,会被重新还原回去。所以

    # systemctl stop docker
    # vi config.v2.json
    # systemctl start docker
    # docker restart d8fcdb33a70c
    

    虽然此种方式可以实现需求,但是并不能用于生产,因为主机上很多容器,如果停止了docker服务,则所有容器也都会停了,这里只是提供一种思路而已,或者更深入的,可以找下如何不停止服务修改文件,亦或者绕过docker的防护机制等。

    相关文章

      网友评论

        本文标题:Docker修改已停止容器属性

        本文链接:https://www.haomeiwen.com/subject/tambxktx.html