美文网首页
02、镜像管理

02、镜像管理

作者: 六弦极品 | 来源:发表于2019-05-13 19:21 被阅读0次

1. 镜像是什么

镜像是什么?
• 一个分层存储的文件
• 一个软件的环境
• 一个镜像可以创建N个容器
• 一种标准化的交付
• 一个不包含Linux内核而又精简的Linux操作系统

镜像不是一个单一的文件,而是有多层构成。我们可以通过docker history <ID/NAME> 查看镜像中各层内容及大小,每层对应着Dockerfile中的一条指令。

# docker history nginx
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
53f3fd8007f7        5 days ago          /bin/sh -c #(nop)  CMD ["nginx" "-g" "daemon…   0B
<missing>           5 days ago          /bin/sh -c #(nop)  STOPSIGNAL SIGTERM           0B
<missing>           5 days ago          /bin/sh -c #(nop)  EXPOSE 80                    0B
<missing>           5 days ago          /bin/sh -c ln -sf /dev/stdout /var/log/nginx…   22B
<missing>           5 days ago          /bin/sh -c set -x  && apt-get update  && apt…   54.1MB
<missing>           5 days ago          /bin/sh -c #(nop)  ENV NJS_VERSION=1.15.12.0…   0B
<missing>           5 days ago          /bin/sh -c #(nop)  ENV NGINX_VERSION=1.15.12…   0B
<missing>           5 days ago          /bin/sh -c #(nop)  LABEL maintainer=NGINX Do…   0B
<missing>           5 days ago          /bin/sh -c #(nop)  CMD ["bash"]                 0B
<missing>           5 days ago          /bin/sh -c #(nop) ADD file:fcb9328ea4c115670…   55.3MB

Docker镜像默认存储在/var/lib/docker/<storage-driver>中。

镜像从哪里来?
Docker Hub是由Docker公司负责维护的公共注册中心,包含大量的容器镜像,Docker工具默认从这个公共镜像库下载镜像。 地址:https://hub.docker.com/explore
配置镜像加速器:https://www.daocloud.io/mirror

# curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

docker的特点:
(1)易于扩展
(2)优化存储空间

2. 镜像与容器联系

image.png

如图,容器其实是在镜像的最上面加了一层读写层,在运行容器里文件改动时, 会先从镜像里要写的文件复制到容器自己的文件系统中(读写层)。 如果容器删除了,最上面的读写层也就删除了,改动也就丢失了。所以无论多 少个容器共享一个镜像,所做的写操作都是从镜像的文件系统中复制过来操作 的,并不会修改镜像的源文件,这种方式提高磁盘利用率。 若想持久化这些改动,可以通过docker commit 将容器保存成一个新镜像,但不建议这么做。
查看一个容器的可写层:

# docker inspect 916b2fd08347

     ....
    
"GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/2279e938e1b301c6152ce6fb22b113c504b6c3da4da4ee786edb4a118bc7ba4d-init/diff:/var/lib/docker/overlay2/30f80d2a5d401521615037313ff41c8089b95151488a03677faab9b4426034d5/diff:/var/lib/docker/overlay2/1b6ad43a498a9e4ce8be9d34f440c8fa22df88978d42f43a0ed6b5a1cd433f76/diff:/var/lib/docker/overlay2/6334b0d8ba92c546faf08c49ead1880dc29aea7d74eba67c27d62ab1f47bdb80/diff",
                "MergedDir": "/var/lib/docker/overlay2/2279e938e1b301c6152ce6fb22b113c504b6c3da4da4ee786edb4a118bc7ba4d/merged",
                "UpperDir": "/var/lib/docker/overlay2/2279e938e1b301c6152ce6fb22b113c504b6c3da4da4ee786edb4a118bc7ba4d/diff",
                "WorkDir": "/var/lib/docker/overlay2/2279e938e1b301c6152ce6fb22b113c504b6c3da4da4ee786edb4a118bc7ba4d/work"
            },

     ....

进入可写层:

# cd var/lib/docker/overlay2/2279e938e1b301c6152ce6fb22b113c504b6c3da4da4ee786edb4a118bc7ba4d/ 
# du -sh ./*
8.0K    ./diff    ## 此目录是记录容器可写层对文件目录的变化
4.0K    ./link
4.0K    ./lower
112M    ./merged
0   ./work

# ls merged/   ## 这里的文件系统和进入docker里ls的文件系统是一样的
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
# docker exec -it 916b2fd08347 bash
root@916b2fd08347:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

3. 管理镜像常用命令

查看docker 命令的用法:docker --help
查看管理镜像常用命令image 的用法:docker image --help

指令 描述
ls 列出镜像
build 构建镜像来自Dockerfile
history 查看镜像历史
inspect 显示一个或多个镜像详细信息
pull 从镜像仓库拉取镜像
push 推送一个镜像到镜像仓库
rm 移除一个或多个镜像
prune 移除未使用的镜像。没有被标记或被任何容器引用的
tag 创建一个引用源镜像标记目标镜像
export 导出容器文件系统到tar归档文件
import 导入容器文件系统tar归档文件创建镜像
save 保存一个或多个镜像到一个tar归档文件
load 加载镜像来自tar归档或标准输入
# docker image ls
# docker image inspect nginx
# docker image pull nginx:1.14
# docker image rm nginx:1.14
# docker image  prune

例如你要将一个镜像导出,然后发给朋友,朋友再导入

# docker image save nginx > nginx.tar
# ls -sh nginx.tar
108M nginx.tar

# docker image rm nginx
# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              9f38484d220f        8 weeks ago         202MB

# docker image load < nginx.tar
Loaded image: nginx:latest

# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              53f3fd8007f7        5 days ago          109MB
centos              latest              9f38484d220f        8 weeks ago         202MB

相关文章

  • 02、镜像管理

    1. 镜像是什么 镜像是什么?• 一个分层存储的文件• 一个软件的环境• 一个镜像可以创建N个容器• 一种标准化的...

  • Docker-5 docker镜像管理

    镜像管理 搜索镜像: ​ 按星级搜索镜像: 拉取镜像: 查看本地镜像: 查看镜像详情: 删除镜像: ​ ...

  • 帮助文档-docker-v1.0.1

    镜像管理 容器管理

  • Docker 常用命令总结

    Docker镜像管理 搜索镜像:docker search 获取镜像:docker pull 查看镜像:docke...

  • 1.2docker镜像管理

    九:docker镜像管理 1.镜像的搜索/获取/查看镜像搜索: 获取镜像: 查看镜像 2.镜像别名/删除镜像别名:...

  • C.3 docker command

    镜像管理 查看本地镜像 查找仓库的镜像 拉取镜像 推送镜像 删除镜像 创建目标镜像 参考资料 https://do...

  • Docker19.2-入门教程02-镜像管理

    镜像管理 搜索镜像 #docker search centos7.6.1810 获取镜像 #docker imag...

  • Linux 基础(四)

    Linux 基础(四) 一、镜像管理 (1)获取镜像 (2)查询镜像 (3)删除镜像 (4)导入导出镜像 (5)启...

  • Docker入门

    目录 一、Docker介绍二、安装Docker三、镜像管理四、通过容器创建镜像五、通过模板创建镜像六、容器管理七、...

  • Docker基础操作

    Docker部署 Docker安装 镜像加速 Docker 基础命令 Docker镜像管理 搜索镜像docker ...

网友评论

      本文标题:02、镜像管理

      本文链接:https://www.haomeiwen.com/subject/aznraqtx.html