设为首页 收藏本站
查看: 1059|回复: 0

[经验分享] Docker镜像管理

[复制链接]

尚未签到

发表于 2017-12-6 16:31:03 | 显示全部楼层 |阅读模式
  Docker的镜像是增量的修改,每次创建新的镜像都会在老的镜像上面构建一个增量的层,使用到的技术是Another Union File System(AUFS)。
  要创建一个Docker的镜像,可以通过:
  1 从Docker Hub 下载
  2 通过Dockerfile创建
  3 通过 docker import来导入一个容器快照而生成一个新的镜像
  4 通过 docker commit 提交对容器的修改生产一个新的镜像
  5 通过 docker load 来导入一个保存的镜像文件

使用Docker Hub 查找和下载镜像
  Docker Hub 是Docker官方提供公共仓库,提供大量的常用镜像,由于国内网络原因经常连接Docker Hub会比较慢,所以我们也可以选择一些国内提供类似Docker Hub镜像服务站点。连接Docker Hub的常用命令包括:



搜索镜像 docker search
下载镜像 docker pull

通过Dockerfile创建镜像
  Dockerfile文件里包含若干条命令,每个命令都会创建一个新的层,Dockerfile创建的层数不可以超过127层。
  下面是官方网站上的一个Dockerfile sample



FROM docker/whalesay:latest
RUN apt-get -y update && apt-get install -y fortunes
CMD /usr/games/fortune -a | cowsay
  创建好Dockerfile之后可以通过Docker build来创建image



$ docker build --help
Usage:    docker build [OPTIONS] PATH | URL | -
Build an image from a Dockerfile
  比如 docker build -t imagename:tagname .

查看本地镜像
  docker images 命令查看本地的镜像列表,信息包括:
    REPOSITORY:仓库名称
    TAG:标签名,一个仓库可以有若干个标签对应不同的镜像,默认都是latest
    IMAGE ID:镜像ID
    CREATED:创建时间,注意不是本地的pull时间
    SIZE:镜像大小

其中需要注意的是运行容器时候如果不指定镜像的TAG,则默认为latest。镜像的唯一标识符是镜像ID,不是TAG,有的时候同一个镜像可以有不同的TAG,但实际指向的是同一个镜像ID。TAG可以理解为镜像的别名。
  查看镜像详细信息 docker inspect
  docker inspect 可以查看指定镜像的详细信息。这条命令可以查看容器或镜像的详细信息,输出是一个JSON格式的内容,比较重要的信息是创建时间,启动命令等。
  常用的参数是--format, -f, 用来指定输出的格式,比如:
  获取instance的log path



docker inspect --format='{{.LogPath}}' $INSTANCE_ID

导出及导入镜像
  镜像可以被导出到本地文件,也可以从本地文件中加载。导出命令是 docker save 命令,导出后的镜像如果需要导入到新的Docker 服务器,则使用docker load命令。

docker save
  可以用于备份一个镜像,用法如下:



$ docker save busybox > busybox.tar
$ ls -sh busybox.tar
$ docker save --output busybox.tar busybox
$ ls -sh busybox.tar
$ docker save -o fedora-all.tar fedora
$ docker save -o fedora-latest.tar fedora:latest

docker load
  从STDIN或者tar 包加载一个镜像



$ docker load < busybox.tar.gz
$ docker load --input fedora.tar
  注意:用户既可以使用 docker load 来导入镜像存储文件到本地镜像库,也可以使用 docker import 来导入一个容器快照到本地镜像库。这两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也要大。此外,从容器快照文件导入时可以重新指定标签等元数据信息。

更新/删除镜像

docker commit
  如果需要对镜像进行更新的话,一种方法是创建容器,在容器中进行修改,然后将修改后容器提交到镜像中。提交使用 docker commit命令。
  注意:本方法不推荐用在生产系统中,未来会很难维护镜像。最好的创建镜像的方法是Dockerfile,修改镜像的方法是修改Dockerfile,然后重新从Dockerfile中构建新的镜像。
  docker commit -m 'add 3 dirs' -a 'author' -p updateimage newimage
  几个参数的说明:


  • -m 本次提交的描述
  • -a 指定镜像作者信息
  • -p 提交时暂停容器运行
  • 容器的ID或名称
  • 目标镜像
  如果指定了目标镜像,Docker会创建新的镜像。

docker rmi
  docker rmi命令可以删除本地的镜像,删除前需要先使用docker rm 删除所有依赖该镜像的容器。
  docker rmi -f 可以强制删除存在容器依赖的镜像,但这不是一个好习惯,请先删除容器再清理镜像。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-421381-1-1.html 上篇帖子: elk docker 部署实战 下篇帖子: Docker and Nexus
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表