版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目一初识Docker一.安装和配置虚拟机1.实训目的(1)掌握VMwareWorkstation创建虚拟机的方法。(2)掌握centos7安装方法。2.实训内容(1)下载VMwareWorkstation16。(2)安装VMwareWorkstation16。(3)用VMwareWorkstation创建虚拟机。(4)安装Centos7。操作步骤参见教材。二.安装和配置Docker1.实训目的(1)了解Docker版本和安装方式。(2)掌握DockerCE的安装方法。2.实训内容(1)修改防火墙,关闭SELINUX,测试网络连通性。(2)安装必需的软件包。(3)设置yum源。(4)安装Docker最新版本。(5)启动Docker并设置开机自启动。(6)查看Docker版本信息。(7)配置镜像加速器。(8)运行nginx容器并测试结果。操作步骤参见教材。一.操作Docker镜像常用的命令1.实训目的(1)了解Docker镜像。(2)掌握Docker镜像常用命令的使用。2.实训内容(1)搜索收藏数不小于5的mysql镜像。[root@bogon~]#dockersearch-fstars=5mysql(2)拉取mysql:latest和httpd:latest镜像。[root@bogon~]#dockerpullmysql:latest[root@bogon~]#dockerpullhttpd:latest(3)列出所有本地镜像。[root@bogon~]#dockerimages(4)显示httpd镜像详细信息。[root@bogon~]#dockerinspecthttpd(5)将httpd镜像标签名修改为httpd:v2.0。[root@bogon~]#dockertaghttpd:latesthttpd:v2.0(6)将mysql:latest镜像导出,命名为mysql.tar。[root@bogon~]#dockersave-omysql.tarmysql:latest(7)删除mysql:latest镜像,并运行dockerimages命令查看。[root@bogon~]#dockerrmimysql:latest(8)将mysql.tar导入,并运行dockerimages命令查看。[root@bogon~]#dockerload-imysql.tar(9)删除本地主机中所有的镜像。[root@bogon~]#dockerrmi-f$(dockerimages-q)二.操作Docker容器常用命令1.实训目的(1)了解Docker容器。(2)掌握掌握Docker容器常用命令的使用。2.实训内容(1)下载centos镜像,利用dockerrun命令创建新容器myCentos。[root@bogon~]#dockerpullcentos:latest[root@bogon~]#dockerrun-itd--namemyCentoscentos:latest(2)查看容器的状态。[root@bogon~]#dockerps-a(3)进入myCentos容器,在交互终端下查看容器的根目录中的内容。[root@bogon~]#dockerexec-itmyCentos/bin/bash[root@2c3d41952503/]#ls(4)利用exit命令退出,并查看容器的状态。[root@2c3d41952503/]#exitExit[root@bogon~]#dockerps-a(5)基于nginx:latest镜像创建NginxTest容器。[root@bogon~]#dockerrun-itd--nameNginxTestnginx(6)修改nginx的默认页面,内容为“welcometodocker!”。[root@bogon~]#dockerexec-itNginxTest/bin/bashroot@5a9ad7928353:/#cd/usr/share/nginx/htmlroot@5a9ad7928353:/usr/share/nginx/html#echo'<h1>welcometodocker!</h1>'>index.htmlroot@5a9ad7928353:/usr/share/nginx/html#catindex.html<h1>welcometodocker!</h1>(7)将容器NginxTest导出,打包成TAR文件,文件名为nginxtest.tar。[root@bogon~]#dockerexportNginxTest>nginxtest.tar[root@bogon~]#llnginxtest.tar-rw-r--r--1rootroot1891727361月920:58mynginx.tar(8)利用nginxtest.tar文件新建一个镜像,并利用dockerimage命令进行查看。[root@bogon~]#dockerimportnginxtest.tarnginx:new[root@bogon~]#dockerimages(9)查看容器NginxTest的状态。[root@bogon~]#dockerps-a|grepNginxTest(10)删除myCentos容器和NginxTest容器。[root@bogon~]#dockerrmmyCentos[root@bogon~]#dockerrmNginxTest三.构建自定义镜像1.实训目的(1)掌握利用Dockercommit构建自定义镜像的方法。(2)掌握利用Dockerfile构建自定义镜像的方法。2.实训内容(1)利用Dockercommit构建带mysql服务的自定义镜像1拉取centos:centos7镜像。2利用centos镜像建立容器centos7,以特权模式运行并进入该容器。3安装mariadb,mariadb-server,mariadb-devel。4启动mariadb并设置开机自启动。5进入数据库配置root用户及密码。6登陆数据库后,退出数据库。7退出容器。8使用dockercommit命令将容器centos7构建为镜像mysql:v1。9查看镜像。10使用mysql:v1镜像启动容器mysqlv1。操作示范:1拉取centos:centos7镜像。[root@localhost~]#dockerpullcentos:centos72利用centos镜像建立容器centos7,以特权模式运行并进入该容器[root@localhost~]#dockerrun-d--namecentos7--privileged=truecentos:centos7/usr/sbin/init369a0a59d8bf0645ddcd353c26d2c04a1f8ac315f9f2045cf885bfad16439599查看容器[root@localhost~]#dockerps-aCONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES369a0a59d8bfcentos:centos7"/usr/sbin/init"53secondsagoUp52secondscentos7进入容器[root@localhost~]#dockerexec-itcentos7/bin/bash[root@369a0a59d8bf/]#3容器安装mariadb,mariadb-server,mariadb-devel[root@369a0a59d8bf/]#yuminstallmariadbmariadb-servermaraidb-devel-y44启动数据库,并设置开机自启动[root@369a0a59d8bf/]#systemctlstartmariadb[root@369a0a59d8bf/]#systemctlenablemariadbCreatedsymlinkfrom/etc/systemd/system/multi-user.target.wants/mariadb.serviceto/usr/lib/systemd/system/mariadb.service.5进入数据库配置root用户及密码[root@369a0a59d8bf/]#mysql_secure_installationNOTE:RUNNINGALLPARTSOFTHISSCRIPTISRECOMMENDEDFORALLMariaDBSERVERSINPRODUCTIONUSE!PLEASEREADEACHSTEPCAREFULLY!InordertologintoMariaDBtosecureit,we'llneedthecurrentpasswordfortherootuser.Ifyou'vejustinstalledMariaDB,andyouhaven'tsettherootpasswordyet,thepasswordwillbeblank,soyoushouldjustpressenterhere.Entercurrentpasswordforroot(enterfornone):(回车)OK,successfullyusedpassword,movingon...SettingtherootpasswordensuresthatnobodycanlogintotheMariaDBrootuserwithouttheproperauthorisation.Setrootpassword?[Y/n]yNewpassword:(123456)设置密码Re-enternewpassword:(123456)确认密码Passwordupdatedsuccessfully!Reloadingprivilegetables.....Success!Bydefault,aMariaDBinstallationhasananonymoususer,allowinganyonetologintoMariaDBwithouthavingtohaveauseraccountcreatedforthem.Thisisintendedonlyfortesting,andtomaketheinstallationgoabitsmoother.Youshouldremovethembeforemovingintoaproductionenvironment.Removeanonymoususers?[Y/n]y删除匿名用户...Success!Normally,rootshouldonlybeallowedtoconnectfrom'localhost'.Thisensuresthatsomeonecannotguessattherootpasswordfromthenetwork.Disallowrootloginremotely?[Y/n]n不禁止root远程登录...skipping.Bydefault,MariaDBcomeswithadatabasenamed'test'thatanyonecanaccess.Thisisalsointendedonlyfortesting,andshouldberemovedbeforemovingintoaproductionenvironment.Removetestdatabaseandaccesstoit?[Y/n]y删除Test数据库-Droppingtestdatabase......Success!-Removingprivilegesontestdatabase......Success!Reloadingtheprivilegetableswillensurethatallchangesmadesofarwilltakeeffectimmediately.Reloadprivilegetablesnow?[Y/n]y加载权限表...Success!Cleaningup...Alldone!Ifyou'vecompletedalloftheabovesteps,yourMariaDBinstallationshouldnowbesecure.ThanksforusingMariaDB!6登陆数据库后,退出数据库。[root@369a0a59d8bf/]#mysql-uroot-p123456WelcometotheMariaDBmonitor.Commandsendwith;or\g.YourMariaDBconnectionidis9Serverversion:5.5.68-MariaDBMariaDBServerCopyright(c)2000,2018,Oracle,MariaDBCorporationAbandothers.Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.MariaDB[(none)]>exit7退出容器[root@369a0a59d8bf/]#exitExit8使用dockercommit命令将容器centos7构建为镜像mysql:v1。[root@localhost~]#dockercommit-m"mysqlv1"-a"shenggy"centos7mysql:v1sha256:ba03fe917fc5e99e3187c550eb6cce89162def756e477f96c2945002fa5d857c9查看镜像。[root@localhost~]#dockerimagesREPOSITORYTAGIMAGEIDCREATEDSIZEmysqlv17e5803e30738Aboutaminuteago623MB10使用mysql:v1镜像启动容器mysqlv1。[root@localhost~]#dockerrun-d-p3306:3306--privileged=true--name=mysqlv1mysql:v1085f27312d00675b85c21caad4cd868485a51e97e8cdedd082667cdec91e4a98进入该容器mysqlv1[root@localhost~]#dockerexec-itmysqlv1/bin/bash[root@085f27312d00/]#systemctlstatusmariadb●mariadb.service-MariaDBdatabaseserverLoaded:loaded(/usr/lib/systemd/system/mariadb.service;enabled;vendorpreset:disabled)Active:active(running)sinceMon2024-01-0809:09:57UTC;34sagoProcess:95ExecStartPost=/usr/libexec/mariadb-wait-ready$MAINPID(code=exited,status=0/SUCCESS)(2)利用Dockerfile构建带httpd服务的自定义镜像基于centos:centos7镜像,构建新镜像,配置Httpd的首页为"hellodocker"。(1)创建工作目录[root@localhost~]#mkdirhttpd[root@localhost~]#cdhttpd[root@localhosthttpd](2)拉取centos:centos7镜像到本地[root@localhost~]#dockerpullcentos:centos7(3)创建Dockerfile文件[root@localhosthttpd]#vimDockerfileFROMcentos:centos7MAINTAINERshenggyRUNyuminstallhttpd-yRUNecho"hellodocker">/var/www/html/index.htmlRUNln-sf/usr/share/zoneinfo/Asia/Shanghai/etc/localtime注意:.不能省略,代表当前目录EXPOSE注意:.不能省略,代表当前目录CMD["httpd","-DFOREGROUND"](4)根据Dockerfile文件创建镜像[root@localhosthttpd]#dockerbuild-thttpd:v1.(5)运行容器并验证[root@localhost~]dockerrun--namemyhttpd-p8081:80-dhttpd:v1打开浏览器,输入localhost:8081,如图2-5所示。一.搭建Docker私有仓库1.实训目的(1)了解仓库的概念。(2)掌握搭建私有仓库的方法。2.实训内容表3-1实训环境主机名节点角色regiestry31/24私有仓库node132/24客户端1实训环境如表3-1所示。注意:表格中IP地址仅作为参考,应使用读者主机IP地址。实训前,需克隆两台主机。(1)在registry主机上拉取registry镜像,并查看下载的regisry镜像。[root@master~]#dockerpullregistry[root@master~]#dockerimages(2)启动一个registry容器,并挂载目录,并查看registry容器是否运行。[root@localhost~]#cd/opt//切换至目录opt[root@localhostopt]#mkdirregistry//新建目录registry[root@localhostopt]#cd[root@localhost~]#dockerrun-d-p5000:5000--namepri_registry-v/opt/registry:/var/lib/registryregistry7833e58ffad06fb7f173b4187784f39555e71a5f9e5ed0d8f4e72a6c63ac6ef7//dockerrun命令启动一个容器pri_registry,并挂载目录[root@localhost~]#dockerps-a//查看容器(3)拉取busybox镜像,并修改tag名称。[root@localhost~]#dockerpullbusybox//下载镜像[root@localhost~]#dockertagbusybox:latest31:5000/busybox:latest//打tag[root@localhost~]#dockerimages//显示镜像(4)将镜像31:5000/busybox上传到本地仓库中。[root@localhost~]#dockerpush31:5000/busybox:latestGet31:5000/v2/:http:servergaveHTTPresponsetoHTTPSclient(5)修改/usr/lib/systemd/system/docker.service文件,在ExecStart参数后面添加--insecure-registry31:5000。[root@localhost~]#vim/usr/lib/systemd/system/docker.serviceDescription=DockerApplicationContainerEngine......(此处省略部分内容)[Service]Type=notify#thedefaultisnottousesystemdforcgroupsbecausethedelegateissuesstill#existsandsystemdcurrentlydoesnotsupportthecgroupfeaturesetrequired#forcontainersrunbydockerExecStart=/usr/bin/dockerd--insecure-registry31:5000-Hfd://--containerd=/run/containerd/containerd.sockExecReload=/bin/kill-sHUP$MAINPID[root@localhost~]#systemctldaemon-reload//重新加载daemon[root@localhost~]#systemctlrestartdocker//重启容器[root@localhost~]#dockerrestartpri_registry//重启pri_registrypri_registry(5)再次上传镜像31:5000/busybox到本地仓库。[root@localhost~]#dockerpush31:5000/busybox:latest(8)在客户端node1上修改/usr/lib/systemd/system/目录下的docker.service文件,在ExecStart=/usr/bin/dockerd后面添加--insecure-registry31:5000,保存后并重启docker服务。[root@localhost~]#vim/usr/lib/systemd/system/docker.serviceDescription=DockerApplicationContainerEngine......(此处省略部分内容)[Service]Type=notify#thedefaultisnottousesystemdforcgroupsbecausethedelegateissuesstill#existsandsystemdcurrentlydoesnotsupportthecgroupfeaturesetrequired#forcontainersrunbydockerExecStart=/usr/bin/dockerd--insecure-registry31:5000-Hfd://--containerd=/run/containerd/containerd.sockExecReload=/bin/kill-sHUP$MAINPID[root@localhost~]#systemctldaemon-reload//重新加载daemon[root@localhost~]#systemctlrestartdocker//重启容器(7)在客户端node1上拉取私有仓库中的busybox镜像。[root@localhost~]#dockerpull31:5000/busybox:latest二.通过Harbor搭建私有仓库1.实训目的(1)掌握Harbor安装部署方法。(2)掌握Harbor日常操作方法。2.实训内容(1)安装Docker-Compose。(2)部署Harbor服务。(3)通过浏览器访问harbor管理页面(默认用户名和密码:admin,Harbor12345)。(4)添加新用户并设为为管理员。(5)创建新项目。(6)登录Harbor。(Harbor服务器本地登录或客户端登录)(7)下载测试镜像busybox并将镜像打标签。(8)上传镜像至Harbor。(9)浏览器查看Harbor镜像仓库。操作步骤参考教材项目三任务二部署和维护公司Harbor私有仓库。一.Docker容器网络基本配置1.实训目的(1)理解docker网络模式。(2)掌握网络基本配置的方法。2.实训内容(1)启动两个容器,连接到默认桥接网络,测试它们之间的连通性。[root@bogon~]#dockerrun-itd--nametest1centos:latestb7250c518caaf91ab74872493c1684c97f40a52f45d41e42c3954227cb3a3f24[root@bogon~]#dockerrun-itd--nametest2centos:latestc5ae8b1876199bcb3e88ec9b14bda99b45d9ebf49b14a923a8f49f75ab790a9c[root@bogon~]#dockernetworkinspectbridge[root@bogon~]#dockerattachtest1[root@b7250c518caa/]#ping-c3PING(02)56(84)bytesofdata.64bytesfrom02(02):icmp_seq=1ttl=127time=14.2ms64bytesfrom02(02):icmp_seq=2ttl=127time=13.8ms64bytesfrom02(02):icmp_seq=3ttl=127time=14.3ms---pingstatistics---3packetstransmitted,3received,0%packetloss,time2007msrttmin/avg/max/mdev=13.823/14.118/14.330/0.236ms[root@b7250c518caa/]#pingPING()56(84)bytesofdata.64bytesfrom:icmp_seq=1ttl=64time=0.185ms64bytesfrom:icmp_seq=2ttl=64time=0.065ms64bytesfrom:icmp_seq=3ttl=64time=0.108ms---pingstatistics---3packetstransmitted,3received,0%packetloss,time2008msrttmin/avg/max/mdev=0.065/0.119/0.185/0.050ms[root@b7250c518caa/]#pingtest2ping:test12:Nameorservicenotknown(2)创建自定义网络mynet1。[root@bogon~]#dockernetworkcreate--driverbridgemynet156c3dae05beb5fe0e898618953ab1514b34185065530d19330c0c97546218f79(3)创建自定义网络mynet2。分配的网段是/16,网关是。[root@bogon~]#dockernetworkcreate--driverbridgemynet2--subnet=/16--gateway=03962ddeba06ca2716d84394afc2f3b0f764f9335ef90053254be11348aff235(4)使用mynet1创建一个容器,容器名:netContainer1。[root@bogon~]#dockerrun-itd--namenetContainer1--networkmynet1centos:latestc4449d0fea92831fd9b5f2eba0a77970fa3fd59013eed084f160a31949bf1cc2(5)使用mynet2创建两个容器,容器名:netContainer2、netContainer3。容器netContainer2的IP地址为6。[root@bogon~]#dockerrun-itd--namenetContainer2--networkmynet2--ip6centos:latest2b1b0f5441188850241467758fb2fff683fac5b48dff726b96520ec1146ac2b4[root@bogon~]#dockerrun-itd--namenetContainer3--networkmynet2centos:latest8f5bd1053486472fb2eef44dd39a18d93f91132605f13184caf4cf347eff7bb1(6)分别进入容器netContainer2和netContainer3,测试连通性。[root@bogon~]#dockerattachnetContainer2[root@2b1b0f544118/]#ping[root@2b1b0f544118/]#pingnetContainer3同时按下ctr+p+q,退出netContainer2,同时保持运行状态[root@bogon~]#dockerattachnetContainer3[root@8f5bd1053486/]#ping6[root@8f5bd1053486/]#pingnetContainer2(7)进入容器netContainer1并测试与netContainer2连通性。[root@bogon~]#dockerattachnetContainer1[root@c4449d0fea92/]#ping6PING6(6)56(84)bytesofdata.---6pingstatistics---159packetstransmitted,0received,100%packetloss,time158967ms[root@c4449d0fea92/]#(8)容器netContainer1增加一块网卡,连接到mynet2网络,测试与netContainer2连通性。[root@bogon~]#dockernetworkconnectmynet2netContainer1[root@bogon~]#dockernetworkinspectmynet2[root@bogon~]#dockerattachnetContainer1[root@c4449d0fea92/]#ping6[root@c4449d0fea92/]#pingnetContainer2[root@c4449d0fea92/]#二.Docker数据卷和数据卷容器应用1.实训目的(1)理解数据卷和数据卷容器作用。(2)掌握Docker数据卷和数据卷容器使用方法。2.实训内容(1)创建数据卷1创建容器mynginx,为容器添加一个数据卷,数据卷在容器里的目录是/usr/data。[root@bogon~]#dockerrun-itd--namemynginx-v/usr/datanginx:latest2查看容器对应数据卷的目录路径,添加文件test.txt。[root@bogon~]#dockerinspectmynginx"Mounts":[{"Type":"volume","Name":"e1ce2c48ee698e062a9270b109f9112c82198199b69ab624a269f8b8a2cb739d","Source":"/var/lib/docker/volumes/e1ce2c48ee698e062a9270b109f9112c82198199b69ab624a269f8b8a2cb739d/_data","Destination":"/usr/data","Driver":"local","Mode":"","RW":true,"Propagation":""}],[root@bogon~]#cd/var/lib/docker/volumes/e1ce2c48ee698e062a9270b109f9112c82198199b69ab624a269f8b8a2cb739d/_data[root@bogon_data]#touchtest.txt[root@bogon_data]#lstest.txt3进入mynginx容器,查看挂载目录。[root@bogon~]#dockerstartmynginxmynginx[root@bogon~]#dockerexec-itmynginx/bin/bashroot@992d82841015:/#cd/usr/dataroot@992d82841015:/usr/data#lstest.txtroot@992d82841015:/usr/data#(2)挂载宿主机文件或目录到容器数据卷1创建容器mybusybox,将宿主机目录/opt/mydate挂载到容器/test/data。[root@bogon_data]#dockerrun-itd--namemybusybox-v/opt/mydate:/test/databusybox9d4f8eb26e5d6e73756695f164afbfd2fe9e5af8fbbac6b14df17c3d8483bd282进入主机目录/opt/mydate,添加文件docker.txt并在文件中添加“欢迎学习[root@bogon_data]#cd/opt/mydate[root@bogonmydate]#ls[root@bogonmydate]#echo"欢迎学习Docker!">docker.txt“-bash:!":eventnotfound[root@bogonmydate]#echo"欢迎学习Docker">docker.txt[root@bogonmydate]#catdocker.txt欢迎学习Docker3进入容器mybusybox,查看/test/data目录下的信息。[root@bogon~]#dockerexec-itmybusybox/bin/sh/#cd/test/data/test/data#lsdocker.txt/test/data#catdocker.txt欢迎学习Docker/test/data#(3)创建数据卷容器1启动名为mycontainer的容器,要求此容器包含两个数据卷/opt/volume1和/opt/volume2。[root@bogon~]#dockerrun-itd--namemycontainer-v/opt/volume1-v/opt/volume2busybox:latest1b62c33776ac561fb2459567d0670512d70c12be5a39d2d8c2a96e1f44f9d2fc2查看与数据卷对应的目录路径。[root@bogon~]#dockerinspectmycontainer"Mounts":[{"Type":"volume","Name":"c63d77ee2381576bfa6df02c7193c16beeac97fa2d588b727efc7260ceaa84f0","Source":"/var/lib/docker/volumes/c63d77ee2381576bfa6df02c7193c16beeac97fa2d588b727efc7260ceaa84f0/_data","Destination":"/opt/volume1","Driver":"local","Mode":"","RW":true,"Propagation":""},{"Type":"volume","Name":"b00b3727f76290c276c634fde452e164b161d371cbfb6b3b381e05261d22fe98","Source":"/var/lib/docker/volumes/b00b3727f76290c276c634fde452e164b161d371cbfb6b3b381e05261d22fe98/_data","Destination":"/opt/volume2","Driver":"local","Mode":"","RW":true,"Propagation":""}3创建mycentos容器,挂载mycontainer容器中的数据卷。[root@bogon~]#dockerrun-d--namemycentos--volumes-frommycontainercentos6513fb24eb6d753a9205deb9b973de7b7e7a22fa722a60b28a2ec69e6cb11a1a[root@bogon~]#dockerinspectmycentos"Mounts":[{"Type":"volume","Name":"c63d77ee2381576bfa6df02c7193c16beeac97fa2d588b727efc7260ceaa84f0","Source":"/var/lib/docker/volumes/c63d77ee2381576bfa6df02c7193c16beeac97fa2d588b727efc7260ceaa84f0/_data","Destination":"/opt/volume1","Driver":"local","Mode":"","RW":true,"Propagation":""},{"Type":"volume","Name":"b00b3727f76290c276c634fde452e164b161d371cbfb6b3b381e05261d22fe98","Source":"/var/lib/docker/volumes/b00b3727f76290c276c634fde452e164b161d371cbfb6b3b381e05261d22fe98/_data","Destination":"/opt/volume2","Driver":"local","Mode":"","RW":true,"Propagation":""],一.部署个人博客系统1.实训目的(1)掌握dockercompose编排的一般步骤。(2)掌握compose文件的编写方法。2.实训内容部署个人博客之前先检查是否安装DockerCompose,安装方法参见项目三任务二部署和管理Harbor私有仓库。WordPress是一款个人博客系统,并逐步演化成一款内容管理系统软件,它是使用PHP语言和MySQL数据库开发的,用户可以在支持PHP和MySQL数据库的服务器上使用自己的博客。使用DockerCompose可以实现快速部署WordPress。1.创建项目目录[root@localhost~]#mkdirmywordpress[root@localhost~]#cdmywordpress2.在项目目录下创建并编辑docker-compose.yml文件,并添加内容[root@localhostmywordpress]#vimdocker-compose.ymlversion:'2.0'services:db:image:mysql:5.7volumes:-db_data:/var/lib/mysqlrestart:alwaysenvironment:MYSQL_ROOT_PASSWORD:somewordpressMYSQL_DATABASE:wordpressMYSQL_USER:wordpressMYSQL_PASSWORD:wordpresswordpress:depends_on:image:wordpress:latestports:-"8000:80"restart:alwaysenvironment:WORDPRESS_DB_HOST:db:3306WORDPRESS_DB_USER:wordpressWORDPRESS_DB_PASSWORD:wordpressWORDPRESS_DB_NAME:wordpressvolumes:networks:overlay:该文件定义了两个服务,db是独立的MySQL服务器(用于持久存储数据wordpress是WordPress博客。文件还定义了一个数据卷db_data,用于保存WordPress提交到数据库的任何数据。3.执行docker-composeup-d命令启动容器[root@localhostmywordpress]#docker-composeup-d(此处省略了命令执行部分显示信息)√Networkmywordpress_defaultCreated1.1s√Volume"mywordpress_db_data"Created0.4s√Containermywordpress-db-1Started4.0s√Containermywordpress-wordpress-1Started4.5s下载所需镜像,以分离模式在后台启动WordPress和数据库容器。4.查看容器[root@localhostmywordpress]#dockerpsCONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMESb609325e09bbwordpress:latest"docker-entrypoint.s…"7minutesagoUp6minutes:8000->80/tcp,:::8000->80/tcpmywordpress-wordpress-1ef218f275de5mysql:5.7"docker-entrypoint.s…"7minutesagoUp7minutes3306/tcp,33060/tcpmywordpress-db-1启动了两个容器分别是:mywordpress_wordpress_1和mywordpress_db_1。每个服务容器就是服务的一个副本,其名称的格式为“项目名_服务名_序号”,序号从1开始,不同的序号表示一次分配的副本。默认只为服务分配一个副本,其序号为1。5.在浏览器中打开WordPress此时WordPress在宿主机8000端口上运行,用户可以在浏览器中打开完成快速安装。如图5-2、5-3、5-4所示。图5-2选择安装语言图5-3填写配置信息图5-4WordPress管理界面6.关闭和清理执行docker-composedown命令可以删除容器和默认网络,但是会保留存储到卷中的WordPress数据库。如果要同时删除卷,应执行以下命令。[root@localhostmywordpress]#docker-composedown--volumes[+]Running4/4√Containermywordpress-wordpress-1Removed3.9s√Containermywordpress-db-1Removed3.8s√Volumemywordpress_db_dataRemoved0.5s√Networkmywordpress_defaultRemoved二.编写文件部署Django框架1.实训目的(1)掌握compose文件的编写方法。(2)掌握compose文件的部署服务的方法。2.实训内容(1)创建项目目录。[root@bogondjango-pg]#mkdirdjango-pg[root@bogondjango-pg]#cddjango-pg(2)在项目目录下创建并编辑Dockerfile文件。[root@bogondjango-pg]#vimDockerfileFROMpython:3ENVPYTHONUNBUFFERED1#在镜像中添加code目录RUNmkdir/codeWORKDIR/codeCOPYrequirements.txt/code/#在镜像中安装由requirements.txt文件指定要安装的Python依赖RUNpipinstall-rrequirements.txtCOPY./code(3)在项目目录下创建并编辑requirements.txt文件。[root@bogondjango-pg]#vimrequirements.txtDjango>=2.0,<3.0psycopg2>=2.7,<3.0Python项目中包含一个requirements.txt文件,用于记录所有依赖包及其精确的版本号,以便于部署。(4)在项目目录下创建并编辑docker-compose.yml文件。[root@bogondjango-pg]#vimdocker-compose.ymlversion:'2'services:db:image:postgresenvironment:-POSTGRES_DB=postgres-POSTGRES_USER=postgres-POSTGRES_PASSWORD=postgresvolumes:-db_data:/var/lib/postgresqlweb:build:.command:pythonmanage.pyrunserver:8000volumes:-.:/codeports:-"8000:8000"depends_on:volumes:文件描述了组成应用程序的服务,其中定义了两个服务:一个是名为db的Postgres数据库,另一个是名为web的Django应用程序。文件还描述了服务所用的Docker镜像、服务如何连接、服务要暴露的端口,以及需要挂载到容器中的卷。(5)在项目目录下,创建Django项目。[root@bogondjango-pg]#docker-composerunwebdjango-adminstartprojectmyexample.Startingdjangopg_db_1BuildingwebStep1/7:FROMpython:3--->4246fb19839fStep2/7:ENVPYTHONUNBUFFERED1--->Usingcache--->b9605186b59a......WARNING:Youareusingpipversion21.2.4;however,version21.3.1isavailable.Youshouldconsiderupgradingviathe'/usr/local/bin/python-mpipinstall--upgradepip'command.Removingintermediatecontainer157a6539e678--->a268f70ba082Step7/7:COPY./code--->3224b3e4728aSuccessfullybuilt3224b3e4728aSuccessfullytaggeddjangopg_web:latestWARNING:Imageforservicewebwasbuiltbecauseitdidnotalreadyexist.Torebuildthisimageyoumustuse`docker-composebuild`or`docker-composeup--build`.[root@bogondjango-pg]#docker-composebuilddbusesanimage,skippingBuildingwebStep1/7:FROMpython:3--->4246fb19839f......Step7/7:COPY./code--->54d0958a50cbSuccessfullybuilt54d0958a50cbSuccessfullytaggeddjangopg_web:latestDockerCompose使用Web服务的镜像和配置在一个容器中执行django-adminstartprojectmyexample命令。因为Web镜像不存在,所以DockerCompose按照docker-compose.yml文件中的“build:.”行的定义,从当前目录构建该镜像。Web镜像构建完毕后,DockerCompose在容器中执行django-adminstartproject命令,该命令引导Django创建一个Django项目,即一组特定的文件和目录。(6)查看项目目录下的内容。[root@bogondjango-pg]#lsdocker-compose.ymlDockerfilemanage.pymyexamplerequirements.txt(7)修改文件所有者。[root@bogon~]#chown-R$USER:$USER.由于在Linux平台上运行Docker,由django-admin所创建的文件的所有者为root,这是因为容器以root身份运行。可以执行以下命令修改这些文件的所有者。(8)连接数据库。上述步骤完成后就可以为Django设置数据库连接了。1编辑项目中myexample/settings.py文件,将其中的”DATABASES”定义修改如下。DATABASES={'default':{'ENGINE':'django.db.backends.postgresql','NAME':'postgres','USER':'postgres','HOST':'db','PORT':5432,}}2在项目目录下执行docker-compose命令。[root@bogondjango-pg]#docker-composeupdjangopg_db_1isup-to-dateStartingdjangopg_web_1Attachingtodjangopg_db_1,djangopg_web_1db_1|Thefilesbelongingtothisdatabasesystemwillbeownedbyuser"postgres".db_1|Thisusermustalsoowntheserverprocess.......web_1|Exceptioninthreaddjango-main-thread:web_1|Traceback(mostrecentcalllast):Stoppingdjangopg_db_1...done(9)关闭并清理服务。[root@bogondjango-pg]#docker-composedownStoppingdjangopg_web_1...doneStoppingdjangopg_db_1...doneRemovingdjangopg_web_1...doneRemovingdjangopg_web_run_1...doneRemovingdjangopg_db_1...doneRemovingnetworkdjangopg_default一.创建集群1.实训目的(1)理解swarm管理节点和工作者节点。(2)掌握swarm集群创建的方法。2.实训内容(1)准备三台主机,分别命名为manager,node1,node2。克隆两台虚拟机,记下三台主机IP地址。修改一台主机为master节点。[root@localhost~]#hostnamectlset-hostnamemaster[root@localhost~]#bash[root@master~]#修改另两台主机为node节点。[root@localhost~]#hostnamectlset-hostnamenode1[root@localhost~]#bash[root@node1~]#[root@localhost~]#hostnamectlset-hostnamenode2[root@localhost~]#bash[root@node2~]#(2)在manager上创建新的集群。[root@manager~]#dockerswarminit--advertise-addr29Swarminitialized:currentnode(r6arup6mitk5k4qxxgsg0gldb)isnowamanager.Toaddaworkertothisswarm,runthefollowingcommand:dockerswarmjoin--tokenSWMTKN-1-4inuiabhl8u2xa7ro02hpfgwmijfien36bcncevvle4cfz17l1-11uk7l3yh9svybec3ravx9oc429:2377Toaddamanagertothisswarm,run'dockerswarmjoin-tokenmanager'andfollowtheinstructions.(1)将node1和node2以工作者加入集群。[root@node1~]#dockerswarmjoin--tokenSWMTKN-1-4inuiabhl8u2xa7ro02hpfgwmijfien36bcncevvle4cfz17l1-11uk7l3yh9svybec3ravx9oc429:2377Toaddamanagertothisswarm,run'dockerswarmjoin-tokenmanager'andfollowtheinstructions.Thisnodejoinedaswarmasaworker在node2主机上执行与node1相同的命令,将主机添加为集群工作者节点。[root@node2~]#dockerswarmjoin--tokenSWMTKN-1-4inuiabhl8u2xa7ro02hpfgwmijfien36bcncevvle4cfz17l1-11uk7l3yh9svybec3ravx9oc429:2377Thisnodejoinedaswarmasaworker.(2)将node2升级为管理者。[root@manager~]#dockerswarmjoin-tokenmanagerToaddamanagertothisswarm,runthefollowingcommand:dockerswarmjoin--tokenSWMTKN-1-4inuiabhl8u2xa7ro02hpfgwmijfien36bcncevvle4cfz17l1-bv2t2sxnkloc8gyhib2hene2o29:2377复制该命令,在node2主机执行。[root@node2~]#dockerswarmjoin--tokenSWMTKN-1-4inuiabhl8u2xa7ro02hpfgwmijfien36bcncevvle4cfz17l1-bv2t2sxnkloc8gyhib2hene2o29:2377Thisnodejoinedaswarmasamanager.(5)在manager主机上查看集群节点的信息。[root@manager~]#dockernodelsIDHOSTNAMESTATUSAVAILABILITYMANAGERSTATUSENGINEVERSIONr6arup6mitk5k4qxxgsg0gldb*managerReadyActiveLeader20.10.10ku397cxb7tmhtwrukrj6p7snanode1ReadyActive20.10.103cqtdnwgbev04ha7bu50z66d9node2ReadyActiveReachable20.10.10二.部署swarm服务1.实训目的(1)掌握部署swarm服务方法。(2)掌握管理swarm服务方法。2.实训内容(1)基于nginx镜像部署test-nginx服务。[root@manager~]#dockerservicecreate--replicas1--nametest-nginxnginx(2)将test-nginx服务增加到4。[root@manager~]#dockerservicescaletest-nginx=4(3)查看test-nginx的任务列表。[root@manager~]#dockerservicepstest-nginxIDNAMEIMAGENODEDESIREDSTATECURRENTSTATEERRORPORTSz14jk1y4vypftest-nginx.1alpine:latestmanagerRunningRunning35minutesagochabhq4e3fibtest-nginx.2alpine:latestnode2RunningRunning2minutesagowep3soyjmcqktest-nginx.3Running2minutesagoalpine:latestnode1Running2cnadcazr73otest-nginx.4alpine:latestnode1RunningRunning2minutesago(4)将nginx部署到集群中,并配置8s的更新延迟策略。dockerservicecreate--replicas3--namemynginx--update-delay8snginx(5)使用新版本的镜像来更新服务(dockerserviceupdate)。[root@manager~]#dockerserviceupdate--imagenginx:latestmynginx一.安装部署Kubernetes集群1.实训目的(1)了解Kubernetes节点作用。(2)掌握安装部署Kubernetes集群的方法。2.实训内容集群环境需要2台主机,一台master节点,一台node节点。(1)配置环境。(2)安装部署集群。(3)node节点加入集群。该实训具体方法和步骤参考教材任务一。二.部署nginx服务1.实训目的(1)掌握kubectl的常用命令。(2)掌握Kubernetes集群部署服务的一般步骤。2.实训内容(1)拉取nginx:latest镜像[root@master~]#dockerpullnginx:latest[root@master~]#dockerimages(2)创建目录[root@master~]#mkdir/root/nginx[root@master~]#cd/root/nginx/(3)创建yaml文件并保存退出[root@masternginx]#vinginx-pod.yamlapiVersion:v1kind:Podmetadata:name:nginxlabels:app:nginxspec:containers:-name:nginximage:nginx:latestports:-containerPort:80---apiVersion:v1kind:Servicemetadata:name:nginxspec:type:NodePortports:-port:80nodePort:30001selector:app:nginx(4)使用kubectl命令创建pod和service[root@masternginx]#kubectlcreate-fnginx-pod.yaml[root@masternginx]#kubectlgetpodNAMEREADYSTATUSRESTARTSAGEnginx1/1Running0116s[root@masternginx]#kubectlgetsvcNAMETYPECLUSTER-IPEXTERNAL-IPPORT(S)AGEkube
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 前厅基础与服务管理 7
- 实战经验分享:如何使用小程序订单发货管理服务核心要点全解析
- 工地安全月活动计划
- 2025年人工智能伦理评估手册报告
- 智杰教育:社区护理学
- 液压爬升模板墩(塔)身施工工序许可证
- 梅毒孕妇的分娩期护理
- 盆腔炎患者心理护理与支持
- 新生儿口腔护理指南
- 2026年养老康复服务合同协议
- 2026年北京市中考物理二轮突破:实验题基础题(含解析)
- 2026光伏组件回收产业链构建与环保政策研究
- 2025年环境影响评价师考试真题及答案
- 医院IT外包运维解决方案(医院信息化运维服务方案)
- 2026年西宁一模试卷及答案物理
- 2026年广东省大湾区联考初中学业水平质量监测卷八年级下学期生物模拟试题(含答案)
- 2026云南大理州现代农业发展(集团)有限公司下属公司社会招聘7人笔试参考题库及答案解析
- 2026年两会精神培训试题及答案
- 中国银行业理财市场季度报告(2026年一季度)
- YY/T 0474-2025外科植入物聚丙交酯均聚物、共聚物和共混物体外降解试验
- 《危险化学品安全法》与《危化品安全管理条例》条款对照表
评论
0/150
提交评论