问题现象

通过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”中导出时,里面已有的可访问页面。也可以正常访问。

说明此次容器快照导出、导入生成新镜像,新镜像执行生成容器,容器具有导出之前一样的功能。

02-14 04:31