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

2024-03-30

我对 Docker 的理解正确吗?

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

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

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

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

  1. 因为我需要编辑存在于中的 config.yaml/verdaccio/conf/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并对其进行必要的更改。这使得该过程可以轻松重复(例如,如果基础映像的新版本出现)。

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐