Docker \ 提交一个容器及其数据

Docker \ commit a container with its data

很多文档,但我仍然缺少一些东西。我的目标是 运行 一次性注册表 (2.0) 推送几个图像和 export\commit 容器。 我需要将它打包成 zip 文件,以便在没有互联网的情况下使用机器。

问题是 - 我推送到注册表的图像没有保留。每当我导入注册表进行测试时,它都是空的。我知道 commit\export 不适用于已安装的卷 - 我如何 "disable" 初始注册表的卷 docker?

我宁愿建议您通过单独复制所需的图像然后在 运行 将其安装到注册表容器中来将图像(注册表 v2)与传输数据分离。

有点像这样:

在您准备注册表的机器上,运行 注册表容器使用类似

docker run -d \
    --name registry \
    --restart=always \
    -e SEARCH_BACKEND=sqlalchemy \
    -e STORAGE_PATH=/srv/docker-registry \
    -v /srv/data/docker-registry:/srv/docker-registry \
    -p 127.0.0.1:5002:5000 \
    registry:2.0.0

然后将您的图像标记为 localhost:5000/repo-name/image-name 并执行

docker push localhost:5000/repo-name/image-name

之后,tar/zip/whatever/srv/data/docker-registry然后

docker save -o ~/docker-registry-v2 registry:2.0.0

复制两个压缩包到目标机器,

docker load -i  ~/docker-registry-v2

Untar/Unzip/Whatever 图像存档和 运行 注册表再次使用与上面类似的 运行 命令,提供将图像存档解压缩到的目录作为 -v 之后的第一个路径.

使用这种技术,您注册表中的存储库和图像也将在容器销毁和重新启动后继续存在。