我能正确理解Docker吗?
docker run -it --rm --name verdaccio -p 4873:4873 -d verdaccio/verdaccio
获取verdaccio(如果它在我的服务器上尚不存在),并在特定端口上运行它。-把它拆开,这样我就可以离开终端,让它继续正常运行?
docker exec -it --user root verdaccio /bin/sh
让我ssh进入正在运行的容器。不过,我添加的任何apk包都将丢失,如果我 rm
rm
因为我需要编辑配置.yaml出现在 /verdaccio/conf/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 基于容器生成新图像。
docker commit
然而,更好的方法是使用 Dockerfile 建立一个基于 verdaccio/verdaccio 做了必要的改变。这使得这个过程很容易重复(例如,如果一个新版本的基础图像出来)。
Dockerfile
verdaccio/verdaccio