问题现象:
通过docker export 导出容器快照:
1 docker export nginxDockerfileCopy > nginxDockerfileCopy.tar
在当前操作路径下查看:已生成:
然后通过docker import将导出的压缩包,导入为镜像:
1 cat exportContainerSnapshot/nginxDockerfileCopy.tar | docker import - username/nginx-importsnapshot
查询可以看到已经生成镜像:
接下来docker run运行镜像生成容器:
1 docker run --name testImportSnapshot -p 8084:80 -d username/nginx-importsnapshot
报错:
解决方法:------------------------
根据提示信息,需要指定命令。所以,尝试在docker run 后面加上命令:
1 docker run --name nginxDockerfileCopy -p 8093:80 -d username/nginx-dockerfilecopy /bin/bash
执行成功,不再报错。但是访问nginx,却访问不通。
查询容器状态,发现容易已经停止。虽然执行中加了-d后台执行的参数,还是自动停止了。看来/bin/bash命令不能满足启动nginx的需求。
因为这是从容器“nginxDockerfileCopy”中导出的快照,所以,我查了一下“nginxDockerfileCopy”的COMMAND参数:
参考以上COMMAND,将run命令修改为:
docker run --name testImportSnapshot -p 8094:80 -d username/nginx-importsnapshot nginx -g 'daemon off;'
此时,查看容器状态:
容器在启动状态中。
浏览器中访问:http://localhost:8094/index.html 可以看到nginx页面。
访问:http://localhost:8094/haha.html 这是从容器“nginxDockerfileCopy”中导出时,里面已有的可访问页面。也可以正常访问。
说明此次容器快照导出、导入生成新镜像,新镜像执行生成容器,容器具有导出之前一样的功能。