linux怎么查看本机内存大小
284
2022-10-27
docker镜像的导入导出和制作
镜像导入导出
docker export和docker import
作用
对当前的容器文件系统创建一个快照,并持久化为tar文件,tar文件中保存的是容器的文件系统和其上的数据。然后通过docker import命令导入tar文件到docker环境后,会发现导入成功的是一个只有一层镜像层的image,而不是恢复为一个容器。tar文件内容:
# tar xf test.tar # ll total 766604 -rw-r--r--. 1 root root 12148 Aug 10 05:39 anaconda-post.log lrwxrwxrwx. 1 root root 7 Aug 10 05:38 bin -> usr/bin -rw-------. 1 root root 2121728 Aug 25 11:29 core.2005 drwxr-xr-x. 3 root root 18 Aug 25 11:37 data0 drwxr-xr-x. 4 root root 43 Aug 24 20:14 dev drwxr-xr-x. 47 root root 4096 Aug 25 11:35 etc drwxr-xr-x. 2 root root 6 Apr 11 2018 home lrwxrwxrwx. 1 root root 7 Aug 10 05:38 lib -> usr/lib lrwxrwxrwx. 1 root root 9 Aug 10 05:38 lib64 -> usr/lib64 drwxr-xr-x. 2 root root 6 Apr 11 2018 media drwxr-xr-x. 2 root root 6 Apr 11 2018 mnt drwxr-xr-x. 2 root root 6 Apr 11 2018 opt drwxr-xr-x. 2 root root 6 Aug 10 05:38 proc dr-xr-x---. 3 root root 4096 Aug 25 11:39 root drwxr-xr-x. 12 root root 163 Aug 25 11:35 run lrwxrwxrwx. 1 root root 8 Aug 10 05:38 sbin -> usr/sbin drwxr-xr-x. 2 root root 6 Apr 11 2018 srv drwxr-xr-x. 2 root root 6 Aug 10 05:38 sys drwxrwxrwt. 7 root root 181 Aug 25 11:35 tmp drwxr-xr-x. 13 root root 155 Aug 10 05:38 usr drwxr-xr-x. 18 root root 238 Aug 10 05:38 var
使用场景
docker export主要用来制作基础镜像,比如你从一个干净的系统镜像启动一个容器,然后安装一些软件或者删除修改一些软件后,使用docker export保存为一个基础镜像。然后,把这个镜像分发给测试或者开发等其他团队使用。线上环境不建议使用export出来的image,因为这个image可能安装了很多软件和特殊配置,但是这个只有制作这个image的操作人知道,会造成黑洞。
命令使用:
# docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES df541699c7cf 078114edb6be "python -c 'import t…" 8 minutes ago Up 8 minutes test # docker export df541699c7cf > test.tar # docker import test.tar test
docker save和docker load
作用
docker save主要对image进行持久化,而不是运行的container,把对应image为一个tar文件。如果这个运行的container中在image之上安装了一些软件等,通过save后保存的仍然为不带这些软件的image。而tar文件中保存的是分层的文件系统,上层的文件会覆盖下层的同名文件,一般一个image会有多个层组成。docker load加载这个tar包为一个image。
tar文件内容:
# tar xf test.tar # ll total 206156 drwxr-xr-x. 16 root root 4096 Sep 15 14:25 2d86d9ead00749413ef00cf7ee338512d6211a4ce12cd0088a556083c138c979 -rw-r--r--. 1 root root 2794 Aug 11 02:20 7e6257c9f8d8d4cdff5e155f196d67150b871bbe8c02761026f803a704acb3e9.json -rw-r--r--. 1 root root 189 Jan 1 1970 manifest.json
使用场景
持久化保存image。例如要部署的客户服务器并不能连外网,你可以使用docker save将用到的镜像打个包,然后拷贝到客户服务器上使用docker load载入。
命令使用
# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
centos
docker import和docker load区别
docker import:导入的是一个文件系统docker load:导入的是一个分层的image
镜像制作
使用docker commit
作用
当我们运行一个容器的时候(如果不使用存储卷的话),我们做的任何文件修改都会被记录于容器存储层里。而Docker提供了一个docker commit命令,可以将容器的存储层保存下来成为镜像。换句话说,就是在原有镜像的基础上,再叠加上容器的存储层,并构成新的镜像。以后我们运行这个新镜像的时候,就会拥有原有容器最后的文件变化。
使用场景
1,被***后保存现场,然后把image放到安全的环境做分析2,开发测试环境制作镜像,一般不用于生产环境,生产环境的镜像推荐使用Dockerfile制作。因为,docker commit意味着所有对镜像的操作都是黑箱操作,就是除了制作镜像的人知道执行过什么命令、怎么生成的镜像,别人根本无从得知。而且,即使是这个制作镜像的人,过一段时间后也无法记清具体的操作,这种黑箱镜像的维护工作是非常痛苦的。而且,回顾之前提及的镜像所使用的分层存储的概念,除当前层外,之前的每一层都是不会发生改变的,换句话说,任何修改的结果仅仅是在当前层进行标记、添加、修改,而不会改动上一层。如果使用docker commit制作镜像,以及后期修改的话,每一次修改都会让镜像更加臃肿一次,所删除的上一层的东西并不会丢失,会一直如影随形的跟着这个镜像,这会让镜像更加臃肿。
命令使用
# docker history tutum/dnsutils
IMAGE CREATED CREATED BY SIZE COMMENT
6cd78a6d3256 5 years ago /bin/sh -c apt-get update && apt-get install… 11.6MB
使用Dockerfile
作用
Dockerfile是一个用来自动化构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明,可用于通过指定docker image上需要的所有步骤来实现image制作的自动化。
使用场景
线上环境基本都是用Dockerfile完成镜像的自动化构建,主要有如下优点:1,可以重复执行和构建2,自动化构建镜像3,可以对dockerfile做版本控制,方便管理
命令使用
# vim Dockerfile # 1、第一行必须是 FROM 基础镜像信息 FROM ubuntu # 2、维护者信息 MAINTAINER test test@qq.com # 3、镜像操作指令 RUN apt-get update && apt-get install -y nginx \ && echo "\ndaemon off;" >> /etc/nginx/nginx.conf # 4、容器启动执行指令 CMD /usr/sbin/nginx # docker build -t nginx:v1 .
参考
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~