Docker commit无法保存anapsix/webdis容器修改,求排查
问题原因及解决办法
你的问题出在 anapsix/webdis镜像将/etc/webdis目录定义为了VOLUME,容器运行时VOLUME里的文件数据是独立于容器可写层存储的,docker commit只能保存容器可写层的修改,无法保留VOLUME目录内的变更,所以新镜像启动后看不到你修改的webdis.json。
纠正步骤
方法1:用Dockerfile构建自定义镜像(推荐)
- 本地创建一个修改好的
webdis.json文件,确保已启用websockets配置。 - 创建
Dockerfile,内容如下:
FROM anapsix/webdis COPY webdis.json /etc/webdis/
- 执行构建命令:
sudo docker build -t my-custom-webdis .
- 用新镜像启动容器:
sudo docker run -d -p 7379:7379 -e LOCAL_REDIS=true my-custom-webdis
方法2:绕过VOLUME修改容器可写层(临时方案)
如果不想写Dockerfile,可以通过以下步骤操作:
- 从运行的容器中复制原配置文件到本地:
sudo docker cp <container-id>:/etc/webdis/webdis.json ./
- 本地修改
webdis.json启用websockets。 - 把修改后的文件复制到容器的非VOLUME路径,比如
/opt/webdis.json:
sudo docker cp ./webdis.json <container-id>:/opt/webdis.json
- 执行commit生成新镜像:
sudo docker commit <container-id> my-custom-webdis
- 启动新镜像时指定加载自定义配置文件:
sudo docker run -d -p 7379:7379 -e LOCAL_REDIS=true my-custom-webdis /usr/bin/webdis /opt/webdis.json
内容的提问来源于stack exchange,提问作者qwerty_99
相关产品推荐
相关产品推荐

