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

时间:2018-08-25 07:18:59

标签: 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'

1 个答案:

答案 0 :(得分:3)

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

但是,更好的方法是使用Dockerfile,它基于verdaccio/verdaccio构建图像,并对其进行必要的更改。这样可以轻松地重复该过程(例如,如果出现了新版本的基础映像)。

另一种选择是使用已提到的卷。