Docker系列教程3常用操作命令
上次分享了Docker的一些入门知识点和docker的安装,这次主要讲docker的常用操作命令。Docker使用镜像常用命令1。获取镜像dockerpullubuntu:14。04dockerpullubuntu默认从registry。hub。docker。com中获取dockerpullhub。c。163。compublicubuntu:14。04从网易蜂巢下载镜像dockerrundp80:80namewebservernginx没有镜像会先下载2。查看镜像信息dockerimagesdockerinspectubuntu:13。10dockerhistoryubuntu3。查找镜像dockersearchTERMdockersearchcentosdockersearchnginx4。删除镜像dockerrmiIMAGEdockerrmiubuntu:13。10dockerrmifubuntu:13。10强制删除镜像5。创建镜像的三个方法1。基于已有镜像的容器创建dockercommit〔OPTIONS〕CONTAINER〔REPOSITORY〔:TAG〕〕dockerrunitubuntu:14。04binbashrootcd391ad59121:记住容器ID:cd391ad59121提交新的镜像:dockercommitmaddedanewfilelxxxxajishubulxxcd391ad59121test:0。1查看:dockerimagesREPOSITORYTAGIMAGEIDCREATEDSIZEtest0。1b2ac4664aadb16secondsago188MB2。基于本地模板导入
从一个操作系统模板导入一个镜像catcentos6x8664minimal。tar。gzdockerimportcentos6min3。基于Dockerfile创建FROMdocker。io0702centos7MAINTAINERstarfunet8163。comENVTZAsiaShanghaiENVTERMxterm新建用户和用户组RUNgroupaddwwwuseraddgwwwwww等等
6。保存和导出镜像
保存:dockersavedockersavemyimage:taggzipmyimagetag。tar。gzdockersaveoubuntu14。04。tarubuntu:14。04
通过文件将镜像复制给他人
导入:dockerloaddockerloadubuntu14。04。tar
导入镜像gunzipcmyimagetag。tar。gzdockerload
7。上传镜像
使用dockerpush默认上传到dockerhub官方dockerpustNAME〔:TAG〕〔REGISTRYHOST〔:REGISTRYPORT〕〕NAME〔:TAG〕Docker操作容器常用命令一、创建容器1。新建容器dockercreatehelpdockercreateitubuntu:latest
create、run命令支持选项都非常复杂2。启动容器dockerstartNAMES3。创建并启动容器dockerrunubuntu:15。10binechohelloworlddockerrunitubuntu:15。10binbashdockerrunvdatamysql:varlibmysqlp61920:3306namemariadbdmariadb:latestdockerrundnamemyFpmp9000:9000vdatawwwrootweb:usrsharenginxhtmlbitnamiphpfpmdockerrundnamemyNginxp80:80vdatawwwrootweb:usrsharenginxhtmlvdatawwwrootlog:varlognginxnginx
i分配一个伪终端并绑定到容器的标准输出上t容器的标准输入保持打开p表示Docker镜像内部容器端口暴露给主机v标识来给容器内添加一个数据卷,你也可以在一次dockerrun命令中多次使用v标识挂载多个数据卷4。守护态运行dockerrundubuntu:15。10binshcwhiletrue;doechohelloworld;sheep1;done5。查看容器dockerpsldockerlogsNAMES显示容器的标准输出dockertopNAMESdockertop来查看容器内部运行的进程
二、停止、启动、重启容器dockerstopNAMEdockerstartNAMEdockerrestartNAME三、进入容器1、exec命令(推荐)dockerexecitlxxwordpressbinbash2、attach命令(不推荐)dockerrunitdubuntu:14。04522681d4c41c7c34ad04779e83253352d1080e85eb9c8f2d1e25f81758379d19dockerpsCONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES522681d4c41cubuntu:14。04binbash12secondsagoUp10secondsdistractedperlmandockerattachdistractedperlmanroot522681d4c41c:3、nsenter工具
需要安装软件,不推荐四、删除容器dockerrmNAMESdockerrmfNAMES强制删除五、导入和导出容器
1。导出容器dockerexportdockerrunitdubuntu:14。04binbashdockerexportotestforrun。tarlovingbohr
2。导入容器dockerimportdockerimporttestforrun。tartestubuntu:v1。0dockerimagesREPOSITORYTAGIMAGEIDCREATEDSIZEtestubuntuv1。069f170a40e6f6secondsago175。1MB
Dockersaveloadexportimport的区别export
export命令用于持久化容器(不是镜像)。所以,我们就需要通过以下方法得到容器ID:sudodockerpsa接着执行导出:sudodockerexportCONTAINERIDhomeexport。tarsave
Save命令用于持久化镜像(不是容器)。所以,我们就需要通过以下方法得到镜像名称:sudodockerimages接着执行保存:sudodockersavebusybox1homesave。tar
使用export比使用save保存的文件要小一些loadsave
两者的使用方法是一样的,导入压缩包生成镜像dockerimportbusybox1export:latest
dockerimport可以重新指定镜像的名字dockerloadhomesave。tar
它们之间到底存在什么不同呢?
首先,dockerimport可以重新指定镜像的名字,dockerload不可以
其次,我们发现导出后的版本会比原来的版本稍微小一些。那是因为导出后,会丢失历史和元数据。执行下面的命令就知道了:显示镜像的所有层(layer)sudodockerimagestree
执行命令,显示下面的内容。正你看到的,导出后再导入(exportedimported)的镜像会丢失所有的历史,而保存后再加载(saveedloaded)的镜像没有丢失历史和层(layer)。这意味着使用导出后再导入的方式,你将无法回滚到之前的层(layer),同时,使用保存后再加载的方式持久化整个镜像,就可以做到层回滚(可以执行dockertag来回滚之前的层)。
常用命令图
有牛人总结了docker的操作命令,看图:
总结一下常用命令
其中阔起来的参数为必选,〔〕阔起来为可选dockerversion查看docker的版本号,包括客户端、服务端、依赖的Go等dockerinfo查看系统(docker)层面信息,包括管理的images,containers数等dockersearch在dockerindex中搜索imagedockerpull从dockerregistryserver中下拉imagedockerpush推送一个image或repository到registrydockerpush:TAG同上,指定tagdockerinspect查看image或container的底层信息dockerimagesTODOfilterouttheintermediateimagelayers(intermediateimagelayers是什么)dockerimagesa列出所有的imagesdockerps默认显示正在运行中的containerdockerpsl显示最后一次创建的container,包括未运行的dockerpsa显示所有的container,包括未运行的dockerlogs查看container的ahrefhttps:www。bs178。comrizhitargetblankclassinfotextkey日志a,也就是执行命令的一些输出dockerrm删除一个或多个containerdockerrmdockerpsaq删除所有的containerdockerpsaqxargsdockerrm同上,删除所有的containerdockerrmi删除一个或多个imagedockerstartstoprestart开启停止重启containerdockerstarti启动一个container并进入交互模式dockerattachattach一个运行中的containerdockerrun使用image创建container并执行相应命令,然后停止dockerrunitbinbash使用image创建container并进入交互模式,loginshell是binbashdockerrunitp将container的端口映射到宿主机的端口dockercommit〔repo:tag〕将一个container固化为一个新的image,后面的repo:tag可选dockerbuild寻找path路径下名为的Dockerfile的配置文件,使用此配置生成新的imagedockerbuildtrepo〔:tag〕同上,可以指定repo和可选的tagdockerbuild使用指定的dockerfile配置文件,docker以stdin方式获取内容,使用此配置生成新的imagedockerport查看本地哪个端口映射到container的指定端口,其实用dockerps也可以看到
10月29日,中国传来6个好消息每天三五分钟了解一下祖国发生的大事件和重要变化,跟随祖国一起成长。网络配图今天咱们来看看我国都有哪些好消息传来吧。第一个好消息,我国航天再传捷报,成功发射试验二十号……
GTX690为什么被称为ampampquot战术核显卡?曾经有这么一张显卡,超频超的直冒烟,电容热到想爆炸,而它就是NVIDIA开普勒架构的旗舰显卡GTX690,但它却有个别名战术核显卡甚至被称为核弹,这究极是这么回事呢?我们下面一……
334名小飞手携无人机打擂台苏州市青少年天工节开幕刚刚,第四届苏州市青少年天工节暨青少年无人机比赛在苏州高等职业技术学校开幕。334名小飞手携无人机打擂,比拼编程和操控技能。活动进一步加强了中小学生职业体验教育,以普职融通实践……
红芙蓉,巴厘岛人敬神之花来源:环球时报【环球时报驻印尼特约记者纪蓉王明宇】红芙蓉是巴厘岛最常见的花之一,一年到头都能见到它红色的娇艳身影。在巴厘岛人的日常生活中,也是时时处处离不开红芙蓉。除了给……
湖人挖2大超巨勇士功臣都没用!树根就已经腐烂了,谁来也带不动北京时间6月19日,湖人再度传出了挖角新消息,他们已经把目光对准了另外一大非常出色的顶尖角色球员,刚刚帮助勇士队夺冠的波特。波特在总决赛上表现非常出色,在勇士12落后的情……
马斯克的推特舆论秀观美国互联网科技圈大佬们的德性10月4日马斯克推特关于俄乌战争的事情他说乌东的前途应该由乌东人公投决定,说联合国监管乌东公投,那如果乌东不要俄国人,俄国人就滚。这句话他犯了一个额外细节错误,他这……
湖北首个大型旅游演艺项目正式开工宋城三峡千古情项目落户湖北宜都董晓斌摄中新网宜昌11月24日电(董晓斌李广操朱灿义)湖北省首个大型旅游演艺项目宋城三峡千古情24日在宜昌宜都市正式开工。该项目建成后,将填……
热血传奇黑暗光年万能合成石有哪些用途在黑暗光年游戏里,万能合成石是打装备必不可少的一种特殊道具,而很多新手玩家,不知道这种道具的获得途径及其使用方法的。下面我们就一起来认识下这种道具吧。黑暗光年万能合成石是……
快过年了,请不要给孩子吃这些!一口都不行!快过年了家长要注意有些成人过年解馋的零食对孩子的健康可能造成威胁每年都有孩子误食和亲戚喂食造成的悲剧父母应时刻警惕,提醒身边人不要给孩……
特斯拉logo为什么显得高级?朋友们晚上好,我又来了!又到了夜深人静的时刻,都饿了吗,哈哈哈给大家看这个图片的初衷并不是想激起大家的食欲,相信大家都知道上面这个图形就是饿了么的品牌标志。一个小写字母e,通过……
英雄联盟手游上单真正万金油出现,完克诺手不怕武器,上分首选哈喽,大家好!我是老张。在上单位置上,很多英雄由于时间的关系,出的比较晚,这也就导致了机制方面可能会存在一定程度的落后,无法有效的压制住一些新的英雄。不过MOBA类游戏的魅力在……
牛奶可以空腹喝吗?牛奶是我们补钙的重要来源。成年人推荐每天喝300克牛奶。那么,牛奶可以空腹喝吗?答案是:可以的。空腹不要喝牛奶,主要是对乳糖不耐受的人的提醒。乳糖不耐受的人群……