一:基于容器做镜像 默认从dockerHUB上拉取busybox镜像 〔rootlocalhost〕dockerpullbusybox 启动容器。 〔rootlocalhost〕dockerrunnamebusyboxtestitbusyboxbinshi:交互式操作。t:终端。d:让容器在后台运行。P:将容器内部使用的网络端口随机映射到我们使用的主机上。 binsh可写可不写,因为此容器镜像默认运行的就是binsh。另外打开一个ssh窗口查看已经启动的容器。 查看容器当前目录情况,且在当前容器下创建目录文件并在此目录下创建一个网页文件。 这个过程容器需在运行状态我们不能退出关闭容器,(如果我们下次启动busybox这个容器,刚才的创建的文件及改变的内容肯定不会有的)如果我们期望把刚才改变的内容改变的结果保存起来,我们就需要基于运行的容器来做镜像 基于容器做镜像 〔rootlocalhost〕dockercommitpbusyboxtestP:这里的p是暂停容器的意思基于busyboxtest这个容器做的镜像 这个镜像REPOSITORY(仓库)和TAG(标签)只有一个ID,为了后面引用方便我们需要给镜像打上标签。 给镜像打上标签(一个镜像可以有多个标签) 〔rootlocalhost〕dockertag096dbf4680a2jchjhttpd:v0。1 jchjhttpd:v0。1jchj是指的是dockerHUB用户账号名称 httpd:仓库的名称 v0。1:镜像版本 再次查看镜像 〔rootlocalhost〕dockerimagels或dockerimages 一个镜像能打多个标签如再次给此镜像打上第二个标签,观察此镜像ID是一样的。 latest:最新版 〔rootlocalhost〕dockertagjchjhttpd:v0。1jchjhttpd:latest 〔rootlocalhost〕dockerimagels 此时如果我想要删除一个标签也只是删除了一个引用,并不会删除镜像,就像是删除了一个硬链接一样,只是删除了它的引用路径,并不会删除文件。 删除操作: 〔rootlocalhost〕dockerimagermjchjhttpd:latest 再次查看已经没有此jchjhttpd:latest此镜像了。 如何在做镜像时同时也打上标签。 镜像定义了基于此镜像启动容器时默认要运行的程序。 如查看已经启动的busybox镜像 〔rootlocalhost〕dockerinspectbusybox 查看下nginx镜像的默认运行的程序 〔rootlocalhost〕dockerinspectnginx 查看下centos镜像的默认运行的程序 〔rootlocalhost〕dockerinspectcentos 如上我们基于busybox创建的jchjhttpd:v0。1镜像,默认启动容器时运行的命令依然时busybox的binsh (容器一定是基于某个镜像启动的)在基于这个容器创建新镜像时期望这个镜像默认运行的命令不再是原来的镜像的默认命令,也就是在基于这个容器创建新的镜像时改变其默认运行的程序。 例如:进入基于此jchjhttpd:v0。1镜像启动的容器,基于此容器的制作新镜像时默认启动的不再是binsh而是httpd 〔rootlocalhost〕dockerrunitjchjhttpd:v0。1 〔rootlocalhost〕dockercommitajchjjchj。shopcCMD〔binhttpd,f,h,datahtml〕pvigilantboothjchjhttpd:v0。2a:注明作者c:修改CMD的命令,这里CMD一定要是大写。p:这里的p是暂停容器的意思,基于vigilantbooth这个容器制作名为jchjhttpd:v0。2的镜像 基于vigilantbooth容器制作的新镜像默认运行的程序是httpd 再基于jchjhttpd:v0。2这个镜像启动一个容器看看默认启动程序是不是httpd 〔rootlocalhost〕dockerrunnamettitdjchjhttpd:v0。2 〔rootlocalhost〕dockerps(也可使用命令dockercontainerls) 〔rootlocalhost〕dockerinspecttt 〔rootlocalhost〕dockerinspecttt查看容器,一个微型的web服务器就运行起来了。 〔rootlocalhost〕dockerrenamejmswebjmshttp 二:本地镜像推送至容器仓库 这里选择的是阿里云容器仓库,当然你也可以推送至dockerHUB仓库、自建的容器仓库或其它第三方容器仓库。 这以阿里云的仓库为例:选择容器镜像服务个人实例个人版 以jchjshop找个容器仓库为例:点击jchjshop仓库的管理,看查看此仓库的使用。 首先需要登录容器仓库: 〔rootlocalhost〕dockerloginusernamealiyunXXXXXXXregistry。cnzhangjiakou。aliyuncs。com 查看需要推送至仓库镜像的ID并打赏标签。 推送至阿里云仓库: 查看推送至阿里云容器仓库的镜像: 注:在同一个局域网内如果不希望docker镜像上传至仓库后再在另外的docker主机pull到本地,其实也可以直接在本地打包后再复制到远程主机上。 打包本地镜像: 〔rootlocalhost〕dockersaveo。shop。gzjchjhttpd:v0。2 传送至10。0。0。200的主机上。 登录10。0。0。200主机安装docker,启动docker加载刚SCP过来的镜像 〔rootlocalhost〕dockerloadishop。gz 删除所有已退出的容器 dockerrm(dockerpsqfstatusexited) 删除所有已停止的容器 dockerrm(dockerpsaq) 删除所有正在运行和停止的容器 dockerstop(dockerpsaq)dockerrm(dockerpsaq) 删除所有容器,没有任何标准 dockercontainerrm(dockercontainerpsaq) 但是,在1。13及以上版本中,为了完整的系统和清理,我们可以直接使用下面的命令, dockersystemprune 所有未使用的容器,图像,networking和卷将被删除。另外,单独的,即单独的,我们可以使用下面的命令,清理组件, dockercontainerprunedockerimageprunedockernetworkprunedockervolumeprune