Java OpenResty Spring Spring Boot MySQL Redis MongoDB PostgreSQL Linux Android Nginx 面试 小程序 Arthas JVM AQS juc Kubernetes Docker DevOps


Docker commit 没有历史数据

Docker 大约 778 字

现象

Docker打包自己的新镜像commit后,再启动新镜像没有历史数据了。

原镜像启动命令

docker run -d \
--name=redis1
-v $PWD/redis/data:/data \
-v $PWD/redis/mydata:/mydata \
redis:latest

镜像默认容器卷

使用inspect查看

docker inspect redis:latest

输出:

[
    {
        "ContainerConfig": {
            "ExposedPorts": {
                "6379/tcp": {}
            },
            "Volumes": {
                "/data": {}
            },
            "WorkingDir": "/data",
        },
        "DockerVersion": "20.10.7",
        "Config": {
            "Volumes": {
                "/data": {}
            },
            "WorkingDir": "/data"
        }
    }
]

原因

commit不会对映射的文件夹及Volumes容器卷的文件夹进行打包。

所以案例中的redis容器映射了两个文件夹中的数据都不会被打包进新镜像。

解决办法

如果需要把数据打包进容器中,则需要在非映射文件夹和非Volumes文件夹中存储数据,可以docker cp命令从宿主机拷贝进容器,或从Volumes文件夹拷贝数据,再进行commit

阅读 658 · 发布于 2022-01-30

————        END        ————

Give me a Star, Thanks:)

https://github.com/fendoudebb

扫描下方二维码关注公众号和小程序↓↓↓

扫描二维码关注我
昵称:
随便看看 换一批