Docker基础知识,如何保存已安装的软件包和已编辑的文件?

Docker基础知识,如何保存已安装的软件包和已编辑的文件?,docker,Docker,我对Docker的理解正确吗 docker run-it-rm-name verdaccio-p 4873:4873-d verdaccio/verdaccio 获取verdaccio(如果我的服务器上尚不存在),并在特定端口上运行它-d拆下它,这样我就可以离开终端并保持它正常运行 docker exec-it--user root verdaccio/bin/sh 让我ssh到正在运行的容器中。但是,如果我rm容器再次运行图像以及任何编辑过的文件,那么我添加的任何apk包都将丢失。那么这有什么

我对Docker的理解正确吗

  • docker run-it-rm-name verdaccio-p 4873:4873-d verdaccio/verdaccio
  • 获取verdaccio(如果我的服务器上尚不存在),并在特定端口上运行它-d拆下它,这样我就可以离开终端并保持它正常运行

  • docker exec-it--user root verdaccio/bin/sh
  • 让我ssh到正在运行的容器中。但是,如果我
    rm
    容器再次运行图像以及任何编辑过的文件,那么我添加的任何apk包都将丢失。那么这有什么用呢?我可以保留图像中的更改吗

  • 由于我需要编辑
    /verdaccio/conf/config.yaml
    (在容器中)中存在的config.yaml,所以保持此更改的唯一选项是将数据与正在运行的实例分离?还有别的办法吗

    V_PATH=/path/on/my/server/verdaccio; docker run -it --rm --name 
    verdaccio -p 4873:4873 \
    -v $V_PATH/conf:/verdaccio/conf \
    -v $V_PATH/storage:/verdaccio/storage \
    -v $V_PATH/plugins:/verdaccio/plugins \
    verdaccio/verdaccio
    
  • 但是这个命令会抛出

    fatal--- cannot open config file /verdaccio/conf/config.yaml: ENOENT: no such file or directory, open '/verdaccio/conf/config.yaml'
    

    您可以使用
    docker commit
    基于容器构建新映像

    但是,更好的方法是使用
    Dockerfile
    ,该文件基于
    verdaccio/verdaccio
    构建图像,并对其进行必要的更改。这使得该过程易于重复(例如,如果基础映像的新版本出现)


    另一个选择是使用您已经提到的卷。

    谢谢。从注册表中获取现有图像(如verdaccio/verdaccio)(我的命令位于1.)时,它是否总是带有可编辑的Dockerfile?或者,这只能通过克隆项目并构建它,然后手动将其dockerize来实现吗?我并没有说要编辑Dockerfile。使用
    verdaccio/verdaccio
    作为基本图像创建您自己的图像。