创建镜像的方法有三种:基于已有镜像的容器创建、基于本地模板导入、基于Dockerfile创建,本博文讲解前两种。
基于已有镜像的容器创建
该方法是使用docker commit命令,其命令格式为:
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
主要参数选项包括:
- -a ,–author=”” 作者信息
- -m,–message=”” 提交信息
- -p,–pause=true 提交是暂停容器运行
比如,先创建一个运行bash的ubuntu容器:
docker run –it ubuntu /bin/bash root@d8990fec2141:/# touch test root@d8990fec2141:/# exit
然后根据创建的这个容器来提交一个新的镜像,提交时需要用到容器ID。
docker commit –m “test” –a “zmc” d8990fec2141 testimage
如果成功的话,就会返回新镜像的长ID号,然后可以查看看在本地已有的镜像:
docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE testimage latest baea98d5a437 About a minute ago 188.3 MB ……
第三行就是刚刚创建的镜像。
PS:利用此容器创建的镜像Id与此容器的镜像id不同,可知它们不是同一镜像。
基于本地模板导入
也可以从操作系统模板文件导入一个镜像,比如使用OpenVZ提供的模板创建,OPENVZ下载模板在:http://openvz.org/Download/template/precreated。
我尝试使用了Ubuntu14.04的模板:
wget http://download.openvz.org/template/precreated/ubuntu-14.04-x86_64-minimal.tar.gz
下载完之后就可以导入了:
sudo cat ubuntu–14.04–x86_64–minimal.tar.gz | docker import – ubuntu:14.04
其实只是两个命令,不过很显而易见,就不加解释了。成功的话,就会返回根据模板建立的镜像的长ID
sudo cat ubuntu–14.04–x86_64–minimal.tar.gz | docker import – ubuntu:14.04 ab80404d13d580965b9919b640169ccb585ea7884e6aa9de1ec043075c65fe35
然后就可以查看本地的镜像:
docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE ubuntu 14.04 ab80404d13d5 56 seconds ago 215.4 MB testimage latest baea98d5a437 29 minutes ago 188.3 MB ….
其实可以看出,虽然模板才75M,但创建的镜像并不小。
镜像的存出和载入
可以利用docker save和docker命令来存出和载入镜像。
存出镜像
如果想要把镜像存出到本地文件,可以使用docker save命令,例如,存出本地的刚才创建的testimage:lastest为镜像文件testimage.tar文件:
docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE testimage latest baea98d5a437 25 minutes ago 188.3 MB ubuntu latest fa81ed084842 3 days ago 188.3 MB …. docker save –o /data/testimage.tar testimage:latest
上面的第6行就是存出代码,这时在/data下就有一个testimage.tar文件,这时我们把本地镜像rmi掉,然后尝试载入。
载入镜像
删除镜像之后的状态:
ubuntu@VM–223–238–ubuntu:/data$ docker rmi baea98d5a437 Untagged: testimage:latest Deleted: baea98d5a4371a6abf9efc8c53a54a6fc5befd167bf91ce9fd4a28a6d1b7dc5b ubuntu@VM–223–238–ubuntu:/data$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE ubuntu 14.04 ab80404d13d5 5 minutes ago 215.4 MB
然后载入镜像:
docker load —input testimage.tar docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE ubuntu 14.04 ab80404d13d5 6 minutes ago 215.4 MB testimage latest baea98d5a437 35 minutes ago 188.3 MB
第一行就是载入镜像,还可以简化写成:
docker load —input testimage.tar docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE ubuntu 14.04 ab80404d13d5 6 minutes ago 215.4 MB testimage latest baea98d5a437 35 minutes ago 188.3 MB
载入操作将会导入镜像以及相关的元数据信息(包括标签等)。
镜像的上传
最后说点镜像的上传,镜像的管理方式非常像git,可以使用docker push命令上传自己本地镜像到仓库,默认上传到DockerHub官方仓库(需要登陆),命令格式:
docker push NAME[:TAG]
在上传之前一般会先为自己的镜像添加带自己名字(作者信息)的标签:
docker tag testimage:lastest zmc/testimage:lastest docker pushzmc/testimage:lastest
有利于上传之后的区分。
我觉得无论是运维团队还是开发团队还是一个实验室,都有必要有一个自己的Docker仓库,可以存放符合自己需求的环境或系统镜像,可以实现快速部署。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新动态
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]