問題現象:
通過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”中導出時,里面已有的可訪問頁面。也可以正常訪問。
說明此次容器快照導出、導入生成新鏡像,新鏡像執行生成容器,容器具有導出之前一樣的功能。