您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > Docker实验手册V1.1
Docker实验手册V1.1实验环境:Ubuntu14.10内核是3.16.0,Docker需要linuxkernel3.8以上才能合适的工作推荐使用ubuntu进行实验。Redhat/Centos请使用较新的版本。否则涉及内核升级。以下是官方网站推荐的版本:oUbuntuTrusty14.04(LTS)oUbuntuPrecise12.04(LTS)oUbuntuSaucy13.10oCentOS7(64-bit)oCentOS6.5(64-bit)orlateroRedHatEnterpriseLinux7(64-bit)oRedHatEnterpriseLinux6.5(64-bit)orlater在MAC上起虚拟机即可完成相关实验。并建议采用桥接的方式让虚拟机跟MAC同一网段以免在后面实验中因为桥接路由的问题影响实验效果。一、安装Docker。1、安装一些更新:sudoapt-getupdate//安装一些更新。。我这里跑完了之后提示一些问题,但是不用管他,应该是内置的更新源有问题,不影响后面安装。2、安装docker.ioapt-getinstalldocker.io//安装docker提示dockerstart/running安装成功。3、测试是否安装成功。docker–v//查看当前docker的版本servicedockerstatus//查看docker的进程运行情况dockerrunhello-world//安装测试的hello的容器跟镜像(官方的方法)dockersearchubuntu//查看网络库里面的关于ubuntu的镜像dockersearchredhat//查看网络库里面的关于redhat的镜像这里有一栏是关于offical的,建议实验使用ubuntu的,redhat是否可用在写本实验的时候还没有测试。dockerpullubuntu:14.04//下载对应列表的镜像,ubuntu代表NAME使用dockerimages查看当前系统本地的镜像。里面包含hello-world跟刚刚pull来的ubuntu14.04版本的镜像二、创建自己的第一个容器。dockerrun–i–td0955f21bf24//-t是创建临时终端,这条命令等同dockerrun–i–td0955f21bf24/bin/bashd0955f21bf24是image的IMAGEID,可以dockerimages得到此时的容器会自动启动,exit之后容器就会退出运行。容器内的IP地址也会在容器重启的时候重新更新!!三、容器维护1、查看当前有哪些容器Usage:dockerps[OPTIONS]dockerps–a//查看当前有哪些容器,-a表示all2、查看正在运行容器dockerps//查看正在运行容器3、启动对应容器Usage:dockerstartCONTAINER[CONTAINER...]dockerstartebe4c35e3ba9//启动对应CONTAINERID的容器4、进入对应容器Usage:dockerstartCONTAINER[CONTAINER...]dockerattachebe4c35e3ba9//进入对应的容器5、停止对应容器Usage:dockerattach[OPTIONS]CONTAINERdockerstopebe4c35e3ba9//停止对应容器6、删除对应容器Usage:dockerrm[OPTIONS]CONTAINER[CONTAINER...]dockerrmebe4c35e3ba9//删除对应容器对上面容器进行操作之后使用查看命令1跟2中查看操作是否正确!!7、容器导出到tar包Usage:dockerexportCONTAINERdockerexport5dbd9cb5a02f/myfirstbackupimages.tar//将容器5dbd9cb5a02f保存到/下面命名myfirstbackupimages.tar8、容器永久运行Restartpolicytoapplywhenacontainerexitsdockerrun-i-t-p82:80--net=bridge--name=lhbhttp--restart=always-v/production/share:/root/share8fba6d14ec73/bin/bash创建容器的时候携带–restart=”always”参数会导致容器即使在exit或者ctrl+D退出之后容器不会关闭!四、容器里面安装apache2,以供后面测试使用这里可以安装各种需要隔离的应用,一般一个容器里面安装一种应用apa-getinstallapache2五、自定义镜像生成对当前容器进行相关操作之后,例如:安装了sshd、apache2、dns等个性化的服务,需要对当前镜像进行批量复制,可以把当前镜像进行封装。并保存在images表格里面,以供下次使用。1、保存当前容器生成自定义镜像dockercommit[OPTIONS]CONTAINER[REPOSITORY[:TAG]]dockercommitebe4c35e3ba9myubuntuwithapache2:14.04//ebe4c35e3ba9表示CONTAINERID//myubuntuwithapache2对应images表里面的REPOSITORY字段//14.04对应images表里面的TAG字段。不填写系统会默认以ebe4c35e3ba9来填充两个字段2、使用自己创建的镜像构建其他的容器回到二部分。这里不赘述。六、镜像维护1、镜像删除Usage:dockerrmiIMAGE[IMAGE...]dockerrmi8ec554fca5fb//删除镜像报错,其实已经删除了。注意如果此镜像已经被容器调用,请先删除对应的容器!!2、镜像导出到tar包Usage:dockersaveIMAGEdockersavecustom/httpdssh/myfirstimagebackup.tar//镜像保存注意:dockersave跟dockerexport区别比较大。具体体现在历史数据、元数据是否丢失,以及是否可以回滚,具体请查看本次实验不涉及!3、查看容器里面的进程Usage:dockertopCONTAINER[psOPTIONS]dockertopebe4c35e3ba9七、Docker的网络部分前面一直没有讲到docker里面的网络部分,主要默认情况下,Docker安装完毕之后在宿主机上会生成一个docker0的网卡,后续的docker容器的网关都是这个网卡,但docker0并不是正常的网络接口。它只是一个在绑定到这上面的其他网卡间自动转发数据包的虚拟以太网桥。它可以使容器与主机相互通信。每次Docker创建一个容器,它就会创建一对对等接口(peerinterface),类似于一个管子的两端-在这边可以收到另一边发送的数据包。Docker会将对等接口中的一个做为eth0接口连接到容器上,并使用类似于vethAQI2QT这样的惟一名称来持有另一个,该名称取决于主机的命名空间。通过将所有veth*接口绑定到docker0桥接网卡上,Docker在主机和所有Docker容器间创建一个共享的虚拟子网。brctlshow查看当前哪些网卡绑定在docker0上。1、创建一个简单的端口映射的容器将宿主机的81端口映射到容器里面的80端口,并且修改两个默认界面,以此区分不同的业务。注意:这里的映射只能在容器创建的时候建立,容器建立之后无法修改映射!端口参数详细解释:-p,--publish=[]Publishacontainer'sporttothehostformat:ip:hostPort:containerPort|ip::containerPort|hostPort:containerPort(use'dockerport'toseetheactualmapping)-v参数用来在宿主机器创建一个目录跟容器里面的目录进行共享。项目可以用这个目录共享文件。在工具机中,~/production/share/就是跟容器里面的~/Install/share/共享文件-v,--volume=[]Bindmountavolume(e.g.,fromthehost:-v/host:/container,fromDocker:-v/container)dockerrun–i–t–p81:80-v/haha:/var/左边对应的是/haha/index.html经过映射81端口之后macos下的截图。后边是宿主机下面默认路径/var/默认80端口访问的截图。此实验需要新增一个文件夹hahamkdir/hahacd/hahaviindex.htmlhtmlbodyhaha/body/htmlshift+qwq2、桥接网络实验使用自己的桥接网口br0来把容器桥接出来。A)、配置br0Ubuntu中编辑vi/etc/network/interfaces完成桥接口的配置redhat/centos中配置br0步骤此处省略请查看对应文档B)修改/etc/default/docker新增DOCKER_OPTS=-b=br0重启docker进程servicedockerrestart,发现原先172.17.0.1/24网段变成跟宿主机器一样的网段。此处修改的是系统默认桥接的网卡。3、docker容器互访实验创建容器的时候使-icc=true|no控制容期间的互访,默认允许互访。
本文标题:Docker实验手册V1.1
链接地址:https://www.777doc.com/doc-5246249 .html