当前位置:   article > 正文

Docker 哲学 - docker save | load | export | import 及实践_docker import

docker import

当我们说 "归档文件包含了容器的所有文件,但不包含容器的元数据和配置",我们是指 docker export 命令导出的 tar 归档文件包含了容器的文件系统中的所有文件,包括应用程序、库、数据等。但是,这个归档文件不包含关于容器本身的信息,例如环境变量、运行命令、网络设置等。

这些信息是 Docker 在运行容器时需要的,它们定义了容器的运行环境和行为。例如,环境变量可以用于配置应用程序,运行命令定义了容器启动时要执行的命令,网络设置定义了容器的网络接口和路由。

当你使用 docker import 命令将这个归档文件导入到 Docker 中时,你会得到一个新的镜像。这个镜像只包含文件系统,不包含元数据和配置。你需要在运行这个镜像时提供这些信息,例如使用 docker run -e VAR=value -p 80:80 image 命令来设置环境变量和端口映射。

导出镜像

  1. 如果在公司内部有私有的Docker镜像仓库,我们可以把构建好的镜像上传至私有仓库,然后再从测试/线上的机器拉取对应的镜像即可,启动容器即可。

  2. 在没有私有的Docker镜像仓库的情况下,可以将咱们的镜像进行导出,导出之后再拷贝到目标的机器上进行导入,然后启动容器。

如何导出镜像

一、docker save是用来将一个或多个image打包保存的工具。

docker save -o images.tar postgres:9.6  mongo:3.4

二、docker export是用来将container的文件系统进行打包的。

docker export  -o postgres-export.tar postgres

两者之间有什么区别呢:

  • docker save保存的是镜像(image),docker export保存的是容器(container);

  • docker load用来载入镜像包,docker import用来载入容器包,但两者都会恢复为镜像;* docker load不能对载入的镜像重命名,而docker import可以为镜像指定新名称。

docker save的应用场景是,如果你的应用是使用docker-compose.yml编排的多个镜像组合,但你要部署的客户服务器并不能连外网。这时,你可以使用docker save将用到的镜像打个包,然后拷贝到客户服务器上使用docker load载入。

docker export的应用场景主要用来制作基础镜像,比如你从一个ubuntu镜像启动一个容器,然后安装一些软件和进行一些设置后,使用docker export保存为一个基础镜像。然后,把这个镜像分发给其他人使用,比如作为基础的开发环境。

四、导入镜像

一、使用 docker import 命令则可将这个镜像文件导入进来(跟docker export配对使用)。

docker import /path/to/latest.tar

二、使用docker load命令则可将这个镜像文件载入进来(跟docker save配对使用)。

docker load -i /path/to/fedora-latest.tar

五、启动容器

假设我们已经导入了服务端镜像my-server以及前端镜像my-front,我们该如何启动呢?

首先我们需要先创建一个网络,让容器具备互联的基础:

docker network create -d bridge my-net

然后,分别启动一下我们的服务端和前端容器。

  • 服务端启动:docker run -d -p 8360:8360 --network my-net --network-alias myserver my-server

  • web端启动 docker run -d -p 8080:80 --network my-net --network-alias myfront my-front

真实场景下的部署体验感觉

一、传统模式下的部署

传统的部署模式下,我们需要挨个去安装各种各样的环境:

图片

安装完成之后,再拷贝相关的代码以及配置文件到目标的机器上:

图片

启动服务,调试一下前端、服务端、数据库是否能正常链接。

二、使用Docker改造之后的部署

  1. 安装docker 环境

  2. 创建 docker 网络:sudo docker network create -d bridge my-net

  3. 上传镜像文件(my-front.tar、my-server.tar)至服务器

  4. 导入镜像:sudo docker load -i my-front.tar、sudo docker load -i my-server.tar

  5. 启动服务端容器:docker run -d -p 8360:8360 --network wenjuan-net --network-alias myserver  my-server

  6. 启动系统前端容器:sudo docker run -d -p 8080:80 --network my-net --network-alias myfront  my-front

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/614447
推荐阅读
相关标签
  

闽ICP备14008679号