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



我是否正确理解Docker?

  1. docker run -it --rm --name verdaccio -p 4873:4873 -d verdaccio/verdaccio

如果我的服务器上尚不存在它并在特定端口上运行它,则获取 verdaccio。 -d 将其分离,以便我可以离开终端并保持其运行正确吗?

  1. >docker exec -it --user root verdaccio /bin/sh

让我通过 SSH 进入正在运行的容器。但是,如果我rm容器然后再次运行图像以及任何编辑的文件,我添加的任何apk包都将丢失。那么这有什么用呢?我可以保留图像中的更改吗?

  1. 由于我需要编辑/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基于容器构建新映像。

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

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

最新更新