Docker容器重启后数据重置如何禁用?新手技术求助
Docker容器重启后安装的软件消失的问题解决
首先得说清楚:Docker容器本身没有什么“数据重置功能”,你遇到的情况是由容器的文件系统特性决定的。
- 容器是基于镜像创建的,镜像的文件系统是只读的,容器启动后会在镜像之上加一层可写临时层。你在容器里安装nano,其实是把文件写到了这个临时层里。
- 如果只是停止容器再启动(
docker stop <容器ID>+docker start <容器ID>),这个临时层不会消失,nano应该还在;但如果你是删除了旧容器,再用docker run重新创建新容器,那新容器会重新生成一个干净的临时层,之前装的nano自然就没了。
想要让安装的软件永久保留,有两种靠谱的方式:
1. 把修改后的容器打包成新镜像
- 先找到你安装了nano的容器ID:
docker ps -a - 用这个容器生成新镜像:
docker commit <容器ID> my-custom-image:v1 - 之后用新镜像启动容器:
docker run my-custom-image:v1,这次里面就自带nano了
2. 用Dockerfile构建自定义镜像(更推荐)
这种方式比手动commit更规范,也方便后续修改维护。写一个名为Dockerfile的文件,内容如下:
# 替换成你实际拉取的镜像名称,比如ubuntu:latest FROM 你的基础镜像名 RUN apt-get update && apt-get install -y nano
然后在Dockerfile所在目录执行构建命令:docker build -t my-custom-image:v1 .
构建完成后,用这个新镜像启动容器即可。
另外提醒一句:如果你启动容器时加了--rm参数,容器停止后会自动被删除,下次再启动就是全新的容器,之前的修改也会丢失,记得避免这种情况。
内容的提问来源于stack exchange,提问作者Xovobobo
相关产品推荐
相关产品推荐

