




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Docker技 Docker技术学员群 注意: 务加,申请加入请说 的用户名,谢第一章Docker介绍与安装第二章镜像管理第三章容器管理第四章管理应用程序数据第五章网络管理第六章Dockerfile第七章镜像仓库第八章图形化界面管理第九章构建容器 DockerDockerDockerDockerLinux安装DockerDocker是一个开源的应用容器引擎,使用Go语言开发,基于Linux内核的cgroup,namespace,UnionFS等技术,对应用进程进行封装 除LXC1.11runC。Docker理念是将应用及依赖包打包到一个可移植的容器中,可发布到任意 版Docker引擎上。使用沙箱机制运行程序,程序之间相 DockerContainerd:是一个简单的守护进程,使用runC管理容器。向DockerEngine提Shim:只负责管理一个容器 DockerDocker命名空间,Linux内核提供的一种对进程资 的机制,例如进程、网络、挂载点等资源控制组,Linux内核提供的一种限制进程资源的机制;例如CPU联合文件系统,支持将不同位置 挂载到同一虚拟文件系统,形成一种分层的模型DockerDocker以KVM举例,与DockerDocker秒级启动,KVM容器共享宿主机内核,系统级虚拟化,占用资源少,没有Hypervisor虚拟机需要Hypervisor层支持,虚拟化一些设备,具有完整的GuestOS,由于共享宿主机内核,只是进程 ,因 性和稳定性不如虚拟机,容器具有一定权 宿主机内核,存在一定安全隐患KVM基于硬件的完全虚拟化,需要硬件CPU容器共享宿主机内核,可运行在主流的 版,不用考虑CPU是否支持虚拟化技术Docker场景一:Dockeryuminstallyyum-utilsdevice-mapper-persistent-datalvm2#添加Docker软件包源yum-config-manageryumyummakecachefastDockerCEyuminstalldocker-ce#启动systemctlstartdockeryumremovedocker-cerm-rf安装文档 ce/centos/#docker-ee-
sudoapt-getinstall\apt-transport-https\ca- scurlmon#添加Docker源的KEYcurl-fsSL |sudoapt-keyaddDocker软件包源sudoadd-apt-repository\"deb $(lsb_release-cs)\aptsudoapt-getupdatesudoapt-getinstalldocker-ce#卸载sudoapt-getpurgedocker-cesudorm-rf简单说,Docker镜像是一个不包含Linux内核而又精简的LinuxDockerHub是由Docker公司负责 会慢,建议配置国内镜像仓库:#vi/etc/docker/daemon.json{"registry-mirrors":["}镜像不是一个单一的文件,而是有多层构成。我们可以通过dockerhistory<ID/NAME>查看镜像中各层内容及大小,每层对应着Dockerfile中的一条指令。Docker镜像默 构建镜像来自移除未使用的镜像。没有被标记或被任何容器的创建一个源镜像标记目标镜导出容器文件系统到tar导入容器文件系统tar保存一个或多个镜像到一个tar加载镜像来自tar-m,---t,----memory--d,----memory-swappiness=<0-容器使用SWAP分区交换的百分比(0-100,默认为--a,--attach--memory---dns设置DNS--oom-kill--e,--env--限制容器可以使用多少可用的CPU--env-file从文件环境变--cpuset-限制容器可以使用特定的-p,--publish--cpu--P,--publish-发布容器所有EXPOSE-h,--hostname--ip指定容器IP,--link---v,--volume挂载宿主 到容--restart--add-host添加其他主机到容器中Docker提供三种不同的方式将数据从宿主机挂载到容器中:volumes,bindmounts和tmpfs。bindmounts:可 在宿主机系统的任意位置tmpfs:挂 在宿主机系统的内存中,而不会写入宿主机的文件系统#dockervolumecreatenginx-vol#dockervolumels#dockervolumeinspectnginx-#dockerrun-d-it--name=nginx-test--mountsrc=nginx-vol,dst=/usr/share/nginx/htmlnginx#dockerrun-d-it--name=nginx-test-vnginx-vol:/usr/share/nginx/htmlnginx#dockercontainerstopnginx-test#dockercontainerrmnginx-test#dockervolumermnginx-Bind#dockerrun-d-it--name=nginx-test--mounttype=bind,src=/app/wwwroot,dst=/usr/share/nginx/htmlnginx#dockerrun-d-it--name=nginx-test-v/app/wwwroot:/usr/share/nginx/htmlnginx#dockerinspectnginx-test#dockercontainerstopnginx-test#dockercontainerrmnginx-如果源文件/ 没有存在,不会自动创建,会抛出一个错误。如果挂载目标在容器中非空 ,则该 现有内容将被隐藏搭建 1dockernetworkcreatelnmp2、创建Mysql数据库容器dockerrun-itd\--namelnmp_mysql--netlnmp-p3306:3306--mountsrc=mysql-vol,dst=/var/lib/mysql-eMYSQL_ROOT_PASSWORD=123456mysql--character-set-3dockerexeclnmp_mysqlsh-c'execmysql-uroot-p"$MYSQL_ROOT_PASSWORD"-e"createdatabase4、创建PHPdockerrunitd--namelnmp_web--netlnmp-p88:80--mounttype=bind,src=/app/wwwroot,dst=/var/www/htmlricharvey/nginx-php-5、以wordpress tarzxfword .tar.gz-C/app/wwwroot#浏览器测试容器网 原桥接宿主机网络与配置固定IPDocker支持5默认网络,Docker启动后默认创建一个docker0容器不会获得一个独立的networknamespace获取独立的networknamespace与指定的容器使用同一个networknamespace自定义网桥,默认与bridge LinuxIP信 滤原理 表链filter(过滤INPUT、OUTPUT、nat(地址转换PREROUTING、POSTROUTING、mangle(拆包、修改、封装INPUT、OUTPUT、PREROUTINGPOSTROUTING、raw()PREROUTING、 容 外#iptables-tnat-ChainPOSTROUTING protoptsourceMASQUERADEall--/16
外 容#iptables-tnat-nLChainDOCKER(2references) protoptsource tcp--
tcpdpt:88 #网桥名称#添加网桥brctladdbr$br_name#给网桥设置IPipaddradd11/24dev$br_name#删除已存在的eth0网卡配置ipaddrdel11/24deveth0#激活网桥iplinkset$br_nameup#添加eth0到网桥brctladdif$br_nameeth0#添加路由iprouteadddefaultviadev还需要在Docker#vi/usr/lib/systemd/system/docker.serviceExecStart=/usr/bin/dockerd-b=br0#systemctlrestart
#vi/etc/sysconfig/network-scripts/ifcfg-eth0#vi/etc/sysconfig/network-scripts/ifcfg-br0配置固定C_ID=$(dockerrun-itd--net=noneubuntu)C_PID=$(dockerinspect-f'{{.State.Pid}}'$C_ID)#创建networknamespace 并将容器的networknamespace软连接到此 ,以便ipnetns命令mkdir-p/var/run/netnsln-s/proc/$C_PID/ns/net#添加虚拟网卡veth+容器PID,类型是vethpair,名称是vp+容器PIDiplinkaddveth$C_PIDtypevethpeernamevp$C_PID#添加虚拟网卡到br0brctladdifbr0iplinksetveth$C_PIDup#设置容器网络信息#给进程配置一个networknamespaceiplinksetvp$C_PIDnetns$C_PID#在容器进程里面设置网卡信息ipnetnsexec$C_PIDiplinksetdevvp$C_PIDnameeth0ipnetnsexec$C_PIDiplinkseteth0upipnetnsexec$C_PIDipaddradd$IPdevipnetnsexec$C_PIDiprouteadddefaultvia
pipework工具配置容器固定gitclone cppipework/pipework/usr/local/bin/dockerrun-itd--net=none--nametest01ubuntupipeworkbr0test0123/24@第六章DockerfileBuild构建 环境镜构建 环境镜第六章例如:FROMcentos:6 例如:COPY./start.sh/start.sh镜像者或邮箱地例如:MAINTAINERENTRYPOINT[“/bin/bash",“-c",ENTRYPOINT/bin/bash-cRUN[“yum”,“install”,RUNyuminstall VOLUMECMD[“-c”,CMD/usr/sbin/sshd–D例如:USER例如:EXPOSE80443为RUN、CMD、ENTRYPOINT、COPY和ADD例如:WORKDIR例如:ENVMYSQL_ROOT_PASSWORDHEALTHCHECK--interval=5m--timeout=3s--retries=3\CMDcurl- ADD<src>…<dest>ADD[“<src>”,… /var/www/htmlADDhtml.tar.gzFROMARGuser USER$user第六章Usage:dockerimagebuild[OPTIONS]PATH|URL|--t,--tag-f,--file
##指定Dockerfiledockerbuilddockerbuild-tshykes/myappdockerbuild-tshykes/myapp-f/path/Dockerfile第六章构建 FROMcentos:7RUNyuminstall-ygccgcc-c++makeopenssl-develpcre-develADDnginx-1.12.1.tar.gz/tmpRUNcd/tmp/nginx-1.12.1&&./configure--prefix=/usr/local/nginx&&\make-j2&&\makeRUNrm-rf/tmp/nginx-1.12.1*&&yumcleanallCOPYnginx.conf/usr/local/nginx/confWORKDIREXPOSECMD["./sbin/nginx","-g","daemon
FROMcentos:7RUNyuminstall-ygccgcc-c++makegd-devellibxml2-devellibcurl-devellibjpeg-devellibpng-developenssl-develRUNcd/tmp/php-5.6.31&&--with-config-file-path=/usr/local/php/etc--with-mysql--with-mysqli--with-openssl--with-zlib--with-curl--with-gd--with-jpeg-dir--with-png-dir--with-iconv--enable-fpm--enable-zip--enable-mbstring&&\make-j4&&\makeinstall&&cp/usr/local/php/etc/php-fpm.conf.default/usr/local/php/etc/php-fpm.conf&&\sed-i"s///"/usr/local/php/etc/php-fpm.conf&&\sed-i"21a\daemonize=no"/usr/local/php/etc/php-fpm.confCOPYphp.ini/usr/local/php/etcRUNrm-rf/tmp/php-5.6.31*&&yumcleanallWORKDIR/usr/local/phpEXPOSECMD["./sbin/php-fpm","-c","/usr/local/php/etc/php-第六章构建 1dockernetworkcreatedockerrunitd--namelnmp_php--netlnmp--mounttype=bind,src=/app/wwwroot/,dst=/usr/local/nginx/html\dockerrunitd--namelnmp_nginx--netlnmp--mounttype=bind,src=/app/wwwroot/,dst=/usr/local/nginx/html\dockerrunitd--namelnmp_mysql--netlnmp-p3306:3306-eMYSQL_ROOT_PASSWORD=123456第六章构建 FROMcentos:7ADDjdk-8u45-linux-x64.tar.gz/usr/localENVJAVA_HOME/usr/local/jdk1.8.0_45ADDapache-tomcat-8.0.46.tar.gz/usr/localCOPYserver.xml/usr/local/apache-tomcat-RUNrm-fWORKDIR/usr/local/apache-tomcat-8.0.46EXPOSE8080ENTRYPOINT["./bin/catalina.sh","run"]创建容器:dockerrun-itd--name=tomcat-p8080:8080--mounttype=bind,src=/app/webapps/,dst=/usr/local/apache-tomcat-8.0.46/webapps\DockerHubDockerHub作为Docker默 公共镜像;如果想自己搭建私有镜像仓库 也提供registry镜像,使得搭建私有仓库非常简单registry镜像并启动#dockerpull#dockerrun-d-v/opt/registry:/var/lib/registry-p5000:5000--restart=always
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 华西医院护理面试能力评估体系
- 酒店股东避税协议书
- 朗诵的技巧培训
- 许昌婚前财产协议书
- 健身房转让合同协议书
- 车间大棚租赁协议书
- 餐厅卡座转让协议书
- 销售维护价格协议书
- 轿车私人转让协议书
- 饭店转让商铺协议书
- 深基坑专项施工方案(钢板桩支护)
- 20ZJ401 楼梯栏杆标准图集
- 人教PEP版四年级英语下册Unit 6 Shopping知识点归纳
- SB/T 10279-2017熏煮香肠
- GB/T 26754-2011工业叠氮化钠
- 钢筋加工场验收记录表
- 送任干部大会主持词(5篇)
- 做管装爱装的好战士(高级课件)
- 超星尔雅学习通《工程伦理》章节测试答案
- 建筑工程中级职称论文范文精选6篇
- 35kV电缆载流量计算公式
评论
0/150
提交评论