docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > docker导入导出镜像、容器,及启动容器失败

docker导入导出镜像、容器,及启动容器失败的解决过程

作者:RQ-ghylls

本文介绍了在内网环境下使用Docker进行应用程序部署时遇到的问题以及解决方案,主要通过Docker的镜像和容器导入导出功能,实现了在内网环境下成功部署应用程序,同时,还详细介绍了docker命令的使用方法,包括镜像的导出和导入、容器的导出和导入等

前言

随着容器技术的发展,现在很多的应用程序系统都会选择使用docker容器进行部署,但是有时候使用docker容器进行部署的时候会遇到问题,比如说我们的应用程序里面需要依赖其他第三方的镜像,如果这时候服务器是在内网不能连接外网的情况下,那么就无法部署了。

基于这种情况,docker官方支持docker镜像和容器的导入和导出,我们可以在一台能够联网的机器上面编译镜像,然后导出镜像或者容器,最后把导出的镜像或者容器上传到内网服务器,然后再导入镜像或者容器,这样就可以了。

1.docker镜像的导入和导出

1.1 docker镜像的导出

docker save [options] images [images……]
docker save -o /home/dockeruser/lgr/epower.tar 镜像名称

docker save > /home/dockeruser/lgr/epower.tar 镜像名称

例子:

docker save 192.162.100.92:5000/my_pro/front_dev:1.1 > /home/dockeruser/lgr/myprofrontdev.tar

-o(即output)或>表示输出到文件;

/home/dockeruser/lgr/epower.tar指定导出的位置路径,如果不指定路径,默认为当前文件夹;

一般使用镜像名称来做导出。如果用 docker save -o /home/dockeruser/lgr/epower.tar 镜像id 导出(即使用镜像id来做导出),后面再导入此镜像后,会发现镜像的名称和tag都是none,就还需要使用docker tag来重命名镜像了。

1.2 docker镜像的导入

首先需要使用xftp或其他工具将上面的.tar文件上传到需要导入镜像的服务器中。

docker load [options]
docker load -i epower.tar

docker load < epower.tar

例子:

docker load <  /usr/local/epower/lgr/myprofrontdev.tar

-i(即input)或<表示从文件输入;

使用docker images命令可以查看是否导入成功,导入成功就可以根据镜像运行容器;

由于load命令不能对镜像重命名,我们可以使用docker tag 镜像id 镜像新名称:新tag 命令给镜像重命名;

2.docker容器的导入和导出

2.1 docker容器的导出

docker export [options] container
docker export -o /home/dockeruser/lgr/econtainer.tar 0a64dafa5db9

解释:

2.2 docker容器的导入

首先需要使用xftp或其他工具将上面的.tar文件上传到需要导入镜像的服务器中。

docker import [options] file|url| -[repository[:tag]]
docker import econtainer.tar epower:latest

解释:

使用docker images命令可以查看是否导入成功,导入成功就可以根据镜像运行容器;

3.总结

4.使用建议

如果只是为了备份镜像,则使用save和load命令;

如果在启动容器后,容器内容有变化之后需要备用,则使用export和import命令;

5.遇到问题

在使用export命令导出容器,import导入为镜像后,使用命令

docker run -p 8812:8889 --name xxx -d 753 启动容器失败,

报错如下:

docker: Error response from daemon: No command specified.

See 'docker run --help'.

错误提示缺少明确的命令;

在导出容器的服务器使用docker ps --no-trunc命令查看具体的command,然后将command加入到启动命令最后即可。

docker run -p 8812:8889 --name xxx -d 753 /bin/sh -c 'java -Duser.timezone=Asia/Shanghai -cp /app/resources:/app/classes:/app/libs/* com.fp.epower.EpowerApplication'

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文