Docker和镜像的操作方法
查找镜像
我们可以从DockerHub网站来搜索镜像,DockerHub网址为:https://hub.docker.com/
我们也可以使用dockersearch命令来搜索镜像。比如我们需要一个httpd的镜像来作为我们的web服务。我们可以通过dockersearch命令搜索httpd来寻找适合我们的镜像。
dockersearchhttpd
拖取镜像
我们决定使用上图中的httpd官方版本的镜像,使用命令dockerpull来下载镜像。
dockerpullhttpd
删除镜像
镜像删除使用dockerrmi命令,比如我们删除hello-world镜像:
$dockerrmihello-world
创建镜像
当我们从docker镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。
1、从已经创建的容器中更新镜像,并且提交这个镜像
2、使用Dockerfile指令来创建一个新的镜像
更新镜像
更新镜像之前,我们需要使用镜像来创建一个容器。
runoob@runoob:~$dockerrun-t-iubuntu:15.10/bin/bash root@e218edb10161:/#
在运行的容器内使用apt-getupdate命令进行更新。
在完成操作之后,输入exit命令来退出这个容器。
此时ID为e218edb10161的容器,是按我们的需求更改的容器。我们可以通过命令dockercommit来提交容器副本。
runoob@runoob:~$dockercommit-m="hasupdate"-a="runoob"e218edb10161runoob/ubuntu:v2 sha256:70bf1840fd7c0d2d8ef0a42a817eb29f854c1af8f7c59fc03ac7bdee9545aff8
各个参数说明:
- -m:提交的描述信息
- -a:指定镜像作者
- e218edb10161:容器ID
- runoob/ubuntu:v2:指定要创建的目标镜像名
构建镜像
我们使用命令dockerbuild,从零开始来创建一个新的镜像。为此,我们需要创建一个Dockerfile文件,其中包含一组指令来告诉Docker如何构建我们的镜像。
runoob@runoob:~$catDockerfile FROMcentos:6.7 MAINTAINERFisher"fisher@sudops.com" RUN/bin/echo'root:123456'|chpasswd RUNuseraddrunoob RUN/bin/echo'runoob:123456'|chpasswd RUN/bin/echo-e"LANG=\"en_US.UTF-8\"">/etc/default/local EXPOSE22 EXPOSE80 CMD/usr/sbin/sshd-D
每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的。
第一条FROM,指定使用哪个镜像源
RUN指令告诉docker在镜像内执行命令,安装了什么。。。
然后,我们使用Dockerfile文件,通过dockerbuild命令来构建一个镜像。
runoob@runoob:~$dockerbuild-trunoob/centos:6.7. SendingbuildcontexttoDockerdaemon17.92kB Step1:FROMcentos:6.7 --->d95b5ca17cc3 Step2:MAINTAINERFisher"fisher@sudops.com" --->Usingcache --->0c92299c6f03 Step3:RUN/bin/echo'root:123456'|chpasswd --->Usingcache --->0397ce2fbd0a Step4:RUNuseraddrunoob ......
参数说明:
-t:指定要创建的目标镜像名
.:Dockerfile文件所在目录,可以指定Dockerfile的绝对路径
使用dockerimages查看创建的镜像已经在列表中存在,镜像ID为860c279d2fec
runoob@runoob:~$dockerimages REPOSITORYTAGIMAGEIDCREATEDSIZE runoob/centos6.7860c279d2fecAboutaminuteago190.6MB runoob/ubuntuv270bf1840fd7c17hoursago158.5MB ubuntu14.0490d5884b1ee06daysago188MB php5.6f40e9e0f10c810daysago444.8MB nginxlatest6f8d099c3adc12daysago182.7MB mysql5.6f2e8d6c772c03weeksago324.6MB httpdlatest02ef73cf1bc03weeksago194.4MB ubuntu15.104e3b13c8a2665weeksago136.3MB hello-worldlatest690ed74de00f6monthsago960B centos6.7d95b5ca17cc36monthsago190.6MB training/webapplatest6fae60ef344612monthsago348.8MB
我们可以使用新的镜像来创建容器
runoob@runoob:~$dockerrun-t-irunoob/centos:6.7/bin/bash [root@41c28d18b5fb/]#idrunoob uid=500(runoob)gid=500(runoob)groups=500(runoob)
从上面看到新镜像已经包含我们创建的用户runoob。
设置镜像标签
我们可以使用dockertag命令,为镜像添加一个新的标签。
runoob@runoob:~$dockertag860c279d2fecrunoob/centos:dev
dockertag镜像ID,这里是860c279d2fec,用户名称、镜像源名(repositoryname)和新的标签名(tag)。
使用dockerimages命令可以看到,ID为860c279d2fec的镜像多一个标签。
runoob@runoob:~$dockerimages REPOSITORYTAGIMAGEIDCREATEDSIZE runoob/centos6.7860c279d2fec5hoursago190.6MB runoob/centosdev860c279d2fec5hoursago190.6MB runoob/ubuntuv270bf1840fd7c22hoursago158.5MB ubuntu14.0490d5884b1ee06daysago188MB php5.6f40e9e0f10c810daysago444.8MB nginxlatest6f8d099c3adc13daysago182.7MB mysql5.6f2e8d6c772c03weeksago324.6MB httpdlatest02ef73cf1bc03weeksago194.4MB ubuntu15.104e3b13c8a2665weeksago136.3MB hello-worldlatest690ed74de00f6monthsago960B centos6.7d95b5ca17cc36monthsago190.6MB training/webapplatest6fae60ef344612monthsago348.8MB
到此这篇关于Docker和镜像的操作方法的文章就介绍到这了,更多相关Docker和镜像操作内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。