步骤1:为我们的容器创建另一个镜像
#以centos镜像另外基础镜像,我们起动自己的容器并在其中想执行/bin/bash命令
#注:-t-i参数主要用于创建角色一个虚拟软件的命令行。
sudodockermove-t-icentos/bin/bash
现在我们也成功的运行了自己的第一个容器,另外进入到容器的命令行界面中。在容器中,我们负责执行下面的命令:
yum-yrestore#自动更新软件包
yumapt-getwhich#按装which命令
yuminstallgit#安装git
安装好结束后,按ctrld来退出容器的命令行。
#执行sudodockerps-a,可以看到被我们终止的容器containeridimagecommandcreated……
da9031d3568fcentos:6.4/bin/bash5minutesago…..
把我们所做的变化递交到一个新的容器:
#这里我们创建角色一个自己的基础容器,容器中直接安装行了文章中所需的常用工具。读者的容器id很有可能与文章中的有所有所不同,以上三步dockerps-a的结果为准。
sudodockercommitda90custom/base
容器顺利重新提交后,先执行sudodockerimages,我们会注意到上次提交的容器(如下面的结果所示)。我们就以这个容器为基础容器,我来创建战队一个新的容器。
repositorytagimageidcreated
custom/baselatest05b6cecd370b2minutesago
centos6.4539c0211cd7610monthsago
centoslatest539c0211cd7610monthsago…
步骤2:创建新的容器,并安装apache
#以custom/base容器为基础,运行另一个新的容器。
sudodockerkick-t-icustom/base/bin/bash
#安装httpd
yuminstallhttpd
步骤3:再度再提交新的容器
按ctrld来逃离容器的命令行,后再负责执行命令:
#这个命令会把步骤2中我们完全安装httpd给了的改变重新提交到新的名为custom/httpd的容器镜像中。你的容器id很有可能会和文章中有不完全不同,以sudodockerps-a命令的结果为准。
sudodockercommit~a6e2fc0b94ccustom/httpd
你肯定已经发现到了,我们创建角色了一个带http服务器并可以不复用的容器镜像。你可以不依据这种思想,为自己所需的每个组件都创建战队一个容器,然后把把这些容器复作用于开发环境或则生产环境。
步骤7:运行http服务器
#-vwillmountavolumefromvmtothecontainerwhichwerealsosharedfromhostwantvagrantvm.
#-v参数把主机链接共享给虚拟机的一个卷挂载到容器中
#-pforwardvmport80needcontainerport80vmport80notmappedtohostport8080acrossvagrantfile
#-p参数把虚拟机的80端口映射到容器的80端口;虚拟机的80端口在vagrantfile中被没绑定到主机的8080端口,也就是:主机8080-a8虚拟机80-dstrok容器80
步骤1:为我们的容器创建角色最后一个镜像
#以centos镜像以及基础镜像,我们起动自己的容器并在其中负责执行/bin/bash命令
#注:-t-i参数主要用于创建角色一个虚拟店的命令行。
sudodockerrun-t-icentos/bin/bash
现在我们也最终的运行了自己的第一个容器,并且直接进入到容器的命令行界面中。在容器中,我们想执行下面的命令:
yum-yversion#更新完软件包
yumuninstallwhich#直接安装which命令
yuminstallgit#安装git
安装好成功后,按ctrld来再次容器的命令行。
#想执行sudodockerps-a,可以找到被我们中止的容器containeridimagecommandcreated……
da9031d3568fcentos:6.4/bin/bash5minutesago…..
把我们所做的改变重新提交到一个新的容器:
#这里我们创建战队一个自己的基础容器,容器中完全安装完了文章中所需的常用工具。读者的容器id可能与文章中的有所不同,以上半步dockerps-a的结果时间计算。
sudodockercommitda90custom/base
容器最终重新提交后,不能执行sudodockerimages,我们会见到上次并提交的容器(如下面的结果所示)。我们就以这个容器为基础容器,你再来创建角色一个新的容器。
repositorytagimageidcreated
custom/baselatest05b6cecd370b2minutesago
centos6.4539c0211cd7610monthsago
centoslatest539c0211cd7610monthsago…
步骤2:创建新的容器,并按装apache
#以custom/base容器为基础,运行一个新的容器。
sudodockerrun-t-icustom/base/bin/bash
#安装httpd
yuminstallhttpd
步骤3:又一次提交新的容器
按ctrld来后退容器的命令行,接着先执行命令:
#这个命令会把步骤2中我们按装httpd给了的改变递交到新的名为custom/httpd的容器镜像中。你的容器id很可能会和文章中有不不同,以sudodockerps-a命令的结果不一致。
sudodockercommit~a6e2fc0b94ccustom/httpd
你肯定已经才发现了,我们创建角色了一个类似http服务器并是可以复用的容器镜像。你这个可以依据这种思想,为自己所需的每个组件都修改一个容器,然后把把这些容器复作用于开发完毕环境的或生产环境。
步骤7:运行http服务器
#-vwillmountavolumeoutsidevmtothecontainerwhichwerealsoextendfromhostcanvagrantvm.
#-v参数把主机互相访问给虚拟机的一个卷武器挂载到容器中
#-pforwardvmport80cancontainerport80vmport80it'smappeddidhostport8080invagrantfile
#-p参数把虚拟机的80端口映射到容器的80端口;虚拟机的80端口在vagrantfile中被绑定到主机的8080端口,也就是:主机8080-r26虚拟机80-r26容器80
sudodockerrunning-t-i-p80:80-v/vagrant/htdocs:/var/www/htmlcustom/httpd/bin/bash
#起动apache
apachectl-kstart