青春网站建设工作室wordpress调出媒体库

news/2025/9/22 23:12:26/文章来源:
青春网站建设工作室,wordpress调出媒体库,优化方案2021版语文答案,杭州网站建设网站文章目录 一.docker容器概述1.什么是容器2. docker与虚拟机的区别2.1 docker虚拟化产品有哪些及其对比2.2 Docker与虚拟机的区别 3.Docker容器的使用场景4.Docker容器的优点5.Docker 的底层运行原理6.namespace的六项隔离7.Docker核心概念 二.Docker安装 及管理1.安装 Docker1.… 文章目录 一.docker容器概述1.什么是容器2. docker与虚拟机的区别2.1 docker虚拟化产品有哪些及其对比2.2 Docker与虚拟机的区别 3.Docker容器的使用场景4.Docker容器的优点5.Docker 的底层运行原理6.namespace的六项隔离7.Docker核心概念 二.Docker安装 及管理1.安装 Docker1.1 卸载docker 2.查看docker信息3. 配置docker加速器4.docker镜像相关基础命令4.1 搜索镜像4.2 获取镜像4.3 查看镜像信息4.3.1 镜像下载后存放在 **/var/lib/docker** 。4.3.2 查看下载的镜像文件信息4.3.3 查看下载到本地的所有镜像4.3.4 根据镜像的唯一标识 ID 号获取镜像详细信息4.3.5 本地的镜像添加新的标签 4.4 删除docker镜像4.5 容器导出镜像存储4.6 导入镜像4.7 上传镜像到官方公共仓库 5.Docker 容器相关基础命令5.1 查看docker容器进程、运行状态5.2 创建docker容器5.3 管理docker容器5.4 docker run的运行过程5.4.1 docker 容器7个的生命周期 5.5 容器的进入5.6 怎么把宿主机的文件传入到容器内部5.6.1 linux 怎么复制 5.7 容器的导出与导入5.8 删除容器5.9 批量操作5.9.1 批量停止容器5.9.2 批量删除所有容器5.9.3 批量删除镜像5.9.4 删除none镜像5.9.5批量清理后台停止的容器 三.Docker 网络1.Docker 网络实现原理2.Docker 的网络模式2.1 Host2.1.1 概念2.1.2 安装Docker时它会自动创建三个网络bridge创建容器默认连接到此网络、 none 、host2.1.3 使用docker run创建Docker容器时可以用 --net 或 --network 选项指定容器的网络模式 2.2 Container2.2.1 概念2.2.2 创建指定名称2.2.3 查看容器进程号2.2.4 查看容器的进程、网络、文件系统等命名空间编号 2.3 none2.4 Bridge2.5 自定义网络2.5.1 创建自定义网络 四、docker的资源控制1.CPU 资源控制1.1 概念1.2 cgroups有四大功能1.3 设置CPU使用率上限1.4进行CPU压力测试1.5 设置50%的比例分配CPU使用时间上限1.6 设置CPU资源占用比设置多个容器时才有效1.6.1 两个容器测试cpu1.6.2 设置容器绑定指定的CPU 2.对内存使用的限制3.对磁盘IO配额控制blkio的限制3.1 创建容器并限制写速度3.2 生产扩展 一.docker容器概述 1.什么是容器 1Docker是在Linux容器里运行应用的开源工具是一种轻量级的“虚拟机”。 2是一个开源的应用容器引擎基于go语言开发并遵循了apache2.0协议开源。 3Docker 的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器。 2. docker与虚拟机的区别 2.1 docker虚拟化产品有哪些及其对比 虚拟化架构分为两种 1寄居架构 寄居架构概念虚拟寄居架构指的是在真实的操作系统之上来安装虚拟化软件的虚拟化软件再去安装然后再在虚拟机上安装虚拟化操作系统它的稳定性不是很高当真实机器宕机之后虚拟操作系统都会宕机个人搭建较多。 Vmware、workstation个人在windows安装虚拟的VmFUSion个人机器MAC安装虚拟机Xen必须安装是基于HyperVision需要cpu、硬盘、内存安装安装内核软件kernel-xenKVMrehl 6自带的KVM全国5%~6%是开源的虚拟化产品称为完全虚拟化、装在linux操作系统之上Microsoft Hyper-V是微软自带的server2012、2016、2019都有docker即通过对应用组件的封装、发布、部署、运行等生命周期的管理达到应用组件级别的“一次封装到处运行”的目的。这里的组件既可以是一个应用也可以是一套服务甚至是一个完整的操作系统。 2原生架构 原生架构概念虚拟化原生架构在虚拟化直接安装到硬件上的不会依赖于操作系统这种架构一般应用在企业中因为相较于很安全 EXSIVmware、vsphere全虚拟化直接使用物理硬件性能高 2.2 Docker与虚拟机的区别 特性Docker容器虚拟机启动速度秒级分钟级计算能力损耗几乎无损耗 50%左右性能接近原生弱于系统支持量单机上千个几十个隔离性资源隔离/限制完全隔离 3.Docker容器的使用场景 1打包应用程序简化部署 2可脱离底层硬件任意迁移 4.Docker容器的优点 ●灵活即使是最复杂的应用也可以集装箱化。 ●轻量级容器利用并共享主机内核。 ●可互换可以即时部署更新和升级。 ●便携式可以在本地构建部署到云并在任何地方运行。 ●可扩展可以增加并自动分发容器副本。 ●可堆叠可以垂直和即时堆叠服务。 5.Docker 的底层运行原理 1Linux 内核的容器化支持Docker 利用了 Linux 内核的一些特性如 cgroups (控制组)、namespace (命名空间)、以及文件系统的特殊挂载等技术实现了容器的隔离和资源控制。 2Docker 基于客户端(容器)-————服务端 (docker 引擎) 结构 的系统 3客户端 (容器) 通过socketIP端口向docker引擎发送相应的指令 docker服务器就会执行相应的命令 6.namespace的六项隔离 namespace系统调用参数隔离内容UTSCLONE_NEWUTS主机名与域名IPCCLONE_NEWWIPC信号量、消息队列和共享内存PIDCLONE_NEWPID进程编号NETWORKCLONE_NEWNET网络设备、网络栈、端口等MOUNTCLONE_NEWNS挂载点文件系统USERCLONE_NEWUSER用户和用户组3.8以后的内核才支持〉 7.Docker核心概念 1镜像 容器运行的基础包含运行应用的程序的所有内容资源、配置文件等 2容器 是从镜像创建的运行实例 3仓库 集中保存镜像的地方公有docker hub私有仓库docker Docker 的镜像、容器、日志等内容全部都默认存储在 /var/lib/docker 二.Docker安装 及管理 1.安装 Docker 目前 Docker 只能支持 64 位系统。 #关闭防火墙 systemctl stop firewalld.service setenforce 0#安装依赖包 yum install -y yum-utils device-mapper-persistent-data lvm2 注解 yum-utils提供了 yum-config-manager 工具。 device mapper 是Linux内核中支持逻辑卷管理的通用设备映射机制它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构。 device mapper存储驱动程序需要 device-mapper-persistent-data 和 lvm2。 #设置阿里云镜像源 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #安装 Docker-CE并设置为开机自动启动 yum install -y docker-ce docker-ce-cli containerd.io安装docker(ce表示社区版若需安装指定版本则–后跟版本) yum install -y docker-ce-20.10.18 docker-ce-cli systemctl start docker.service systemctl enable docker.service 安装好的Docker系统有两个程序Docker服务端和Docker客户端。其中Docker服务端是一个服务进程负责管理所有容器。 Docker客户端则扮演着Docker服务端的远程控制器可以用来控制Docker的服务端进程。大部分情况下Docker服务端和客户端运行在一台机器上。 1.1 卸载docker 1卸载 Docker 客户端 (docker-ce-cli) yum remove docker-ce-cli2卸载 Docker 引擎 (docker-ce) 以及其所依赖的存储库 yum remove docker-ce docker-ce-cli containerd.io rm -rf /etc/docker rm -rf /var/lib/docker注以上命令会卸载 Docker 引擎以及删除相关配置和镜像包括所有容器和镜像请在卸载前备份需要保留的数据。 3如果想彻底删除所有 Docker 安装过程中产生的文件使用以下命令 rm -rf /var/lib/docker4卸载完毕后可以使用以下命令确认 Docker 是否已经不再运行 service docker status2.查看docker信息 #查看 docker 版本信息 docker version#docker 信息查看 docker info 注释 Client: Docker Engine - CommunityVersion: 24.0.5Context: defaultDebug Mode: falsePlugins:buildx: Docker Buildx (Docker Inc.)Version: v0.11.2Path: /usr/libexec/docker/cli-plugins/docker-buildxcompose: Docker Compose (Docker Inc.)Version: v2.20.2Path: /usr/libexec/docker/cli-plugins/docker-composeServer:Containers: 0 # 容器数量Running: 0Paused: 0Stopped: 0Images: 0 # 镜像数量Server Version: 24.0.5 # server 版本Storage Driver: overlay2 # docker 使用的是 overlay2 文件驱动Backing Filesystem: xfs # 宿主机上的底层文件系统Supports d_type: trueNative Overlay Diff: trueLogging Driver: json-fileCgroup Driver: cgroupfs # Cgroups 驱动Cgroup Version: 1Plugins:Volume: localNetwork: bridge host ipvlan macvlan null overlayLog: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslogSwarm: inactiveRuntimes: io.containerd.runtime.v1.linux runc io.containerd.runc.v2Default Runtime: runcInit Binary: docker-initcontainerd version: 269548fa27e0089a8b8278fc4fc781d7f65a939brunc version: ff819c7e9184c13b7c2607fe6c30ae19403a7affinit version: de40ad0Security Options:seccompProfile: defaultKernel Version: 3.10.0-693.el7.x86_64 # 宿主机的相关信息Operating System: CentOS Linux 7 (Core)OSType: linuxArchitecture: x86_64CPUs: 1Total Memory: 976.3MiBName: localhost.localdomainID: Y4ES:FTH2:ZJL7:MRVE:RJVB:WJIB:S7BV:C5IZ:LMBR:E4G5:QWSM:SNDTDocker Root Dir: /var/lib/docker # docker 数据存储目录Debug Mode: falseRegistry: https://index.docker.io/v1/ # registry 地址Labels:Experimental: falseInsecure Registries:127.0.0.0/8Registry Mirrors: # 加速站点https://6ijb8ubo.mirror.aliyuncs.com/Live Restore Enabled: false注如查看信息时末尾出现了以下 这些警告是 Docker 在启动时检测到 Linux 内核参数 bridge-nf-call-iptables 和 bridge-nf-call-ip6tables 被禁用了。这些内核参数用于在 Docker 容器与宿主机之间配置网络桥接。 WARNING: bridge-nf-call-iptables is disabled WARNING: bridge-nf-call-ip6tables is disabled解决方案 编辑 /etc/sysctl.conf 文件 sudo vi /etc/sysctl.conf将以下两个内核参数的值设置为 1 net.bridge.bridge-nf-call-ip6tables 1 net.bridge.bridge-nf-call-iptables 1保存并关闭文件。 使更改生效 sudo sysctl -p再次使用查看就没有了 docker info 3. 配置docker加速器 1打开阿里云官网登录 2点击左侧菜单栏搜索框输入容器镜像服务 3选择镜像工具镜像加速器复制命令配置即可配置完毕重新加载daemon然后重启docker。 mkdir -p /etc/dockertee /etc/docker/daemon.json -EOF {registry-mirrors: [https://90b8orj3.mirror.aliyuncs.com] } EOFsystemctl daemon-reload systemctl restart docker4.docker镜像相关基础命令 4.1 搜索镜像 搜索关键字的相关镜像内容 格式docker search 关键字 例如docker search nginx4.2 获取镜像 如果下载镜像时不指定标签则默认会下载仓库中最新版本的镜像即选择标签为 latest 标签。 格式docker pull 镜像名[:版本号] 例如docker pull nginx4.3 查看镜像信息 4.3.1 镜像下载后存放在 /var/lib/docker 。 Docker 相关的本地资源存放在 /var/lib/docker/ 目录下其中 containers 目录存放容器信息 image 目录存放镜像信息 overlay2 目录下存放具体的镜像底层文件。 4.3.2 查看下载的镜像文件信息 cat /var/lib/docker/image/overlay2/repositories.json4.3.3 查看下载到本地的所有镜像 [roottest7 docker]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 605c77e624dd 19 months ago 141MB注解 REPOSITORY镜像属于的仓库 TAG镜像的标签信息标记同一个仓库中的不同镜像 IMAGE ID镜像的唯一ID 号唯一标识一个镜像 CREATED镜像创建时间 VIRTUAL SIZE镜像大小 4.3.4 根据镜像的唯一标识 ID 号获取镜像详细信息 格式docker inspect 镜像ID号 例如docker inspect 605c77e624dd4.3.5 本地的镜像添加新的标签 格式docker tag 名称:[标签] 新名称:[新标签] 例如docker tag nginx:latest nginx:web#查看新添加的标签 docker images docker images | grep nginx4.4 删除docker镜像 格式 1docker rmi 仓库名称:标签 #当一个镜像有多个标签时只是删除其中指定的标签 2docker rmi 镜像ID号 #会彻底删除该镜像 注如果该镜像已经被容器使用正确的做法是先删除依赖该镜像的所有容器再去删除镜像。 例如 #仓库标签删除 docker rmi nginx:web #ID号删除 docker rmi 605c77e624dd4.5 容器导出镜像存储 将镜像保存成为本地文件 格式docker save -o 保存目录 导出的镜像 #存出镜像命名为nginx存在当前目录下 docker save -o nginx nginx:latest ls -lh#指定保存目录 docker save -o /opt/nginx nginx:latest 4.6 导入镜像 将镜像文件导入到镜像库中 格式 1docker load 本地存储的镜像名称 2docker load -i 本地存储的镜像名称 例如 #镜像在当前目录 docker load nginx #不在当前目录需添加目录 docker load -i /opt/nginx4.7 上传镜像到官方公共仓库 默认上传到 docker Hub 官方公共仓库需要注册使用公共仓库的账号。https://hub.docker.com 可以使用 docker login 命令来输入用户名、密码和邮箱来完成注册和登录。 在上传镜像之前还需要先对本地镜像添加新的标签然后再使用 docker push 命令进行上传。 docker tag nginx:latest soscscs/nginx:web #添加新的标签时必须在前面加上自己的dockerhub的username docker login #登录公共仓库 Usernamesoscscs passwordabc123456 docker push soscscs/nginx:web #上传镜像 5.Docker 容器相关基础命令 5.1 查看docker容器进程、运行状态 显示up的进程加-a表示显示所有状态容器 格式docker ps [选项] 常用选项 -a显示所有状态容器 5.2 创建docker容器 就是将镜像加载到容器的过程。 新创建的容器默认处于停止状态不运行任何程序需要在其中发起一个进程来启动容器。 格式docker create [选项] 镜像 常用选项 -i让容器开启标准输入 -t让 Docker 分配一个伪终端 tty -it :合起来实现和容器交互的作用运行一个交互式会话 shell docker create -it nginx:latest5.3 管理docker容器 开启或关闭docker容器 格式docker start/stop 容器唯一id/容器名称 docker start e785459638d9 docker stop e785459638d9 docker ps -a5.4 docker run的运行过程 创建并启动docker容器 1格式docker run [选项] 镜像名/镜像唯一id /bin/bash 常用选项 -d 选项让 Docker 容器以守护形式在后台运行并且容器所运行的程序不能结束 -it :合起来实现和容器交互的作用运行一个交互式会话 shell –name指定创建的容器的名称 相当于先执行 docker create 命令再执行 docker start 命令。 注意容器是一个与其中运行的 shell 命令共存亡的终端命令运行容器运行 命令结束容器退出。 docker create -it nginx:latest /bin/bash2运行过程 检查本地是否存在指定的镜像。当镜像不存在时会从公有仓库下载利用镜像创建并启动一个容器分配一个文件系统给容器在只读的镜像层外面挂载一层可读写层从宿主主机配置的网桥接口中桥接一个虚拟机接口到容器中分配一个地址池中的 IP 地址给容器执行用户指定的应用程序执行完毕后容器被终止运行。 docker run centos:7 /usr/bin/bash -c ls / #会发现创建了一个新容器并启动执行一条 shell 命令之后就停止了 docker ps -a 3在后台持续运行 docker run 创建的容器 需要在 docker run 命令之后添加 -d 选项让 Docker 容器以守护形式在后台运行。并且容器所运行的程序不能结束。 docker run -d centos:7 /usr/bin/bash -c while true;do echo hello;done#可以看出容器始终处于 UP运行状态 docker ps -a #创建容器并持续运行容器 docker run -itd --name test1 centos:7 /bin/bash 5.4.1 docker 容器7个的生命周期 1create已创建还未运行的容器 2running正在运行中的容器 3restarting容器正在重启中 4removing容器正在迁移中 5paused容器已暂停的状态 6exited停止容器运行 7dead死亡主要是操作系统出现异常或断点导致 8暂停和停止状态的区别 paused 命令挂起指定的容器中的所有进程为暂停 stop表示杀掉正在运行的docker容器进程默认是10s后 5.5 容器的进入 需要进入容器进行命令操作时可以使用 docker exec 命令进入运行着的容器。 格式docker exec -it 容器ID/名称 /bin/bash 常用选项 -i 选项表示让容器的输入保持打开 -t 选项表示让 Docker 分配一个伪终端。 #进入容器前确保容器正在运行 docker start e785459638d9 docker exec -it e785459638d9 /bin/bash ls #退出容器后容器仍在运行 exit docker ps -a#不加 -d 选项会创建容器后直接进入容器但是退出容器容器也会停止 docker run -it centos:7 bash 5.6 怎么把宿主机的文件传入到容器内部 5.6.1 linux 怎么复制 格式cp 原文件路径目标文件路径 docker cp l opt / abc容器id: /opt/abc 1复制到容器中 [roottest7 opt]# echo abc123 test.txt[roottest7 opt]# cat test.txt abc123[roottest7 opt]# docker cp test.txt e785459638d9:/home/ Successfully copied 2.05kB to e785459638d9:/home/查看复制是否成功 [roottest7 opt]# docker exec -it e785459638d9 /bin/bash roote785459638d9:/# ls bin docker-entrypoint.d home media proc sbin tmp boot docker-entrypoint.sh lib mnt root srv usr dev etc lib64 opt run sys var roote785459638d9:/# cd /home/ roote785459638d9:/home# ls test.txt roote785459638d9:/home# cat test.txt abc1232从容器复制文件到主机 roote785459638d9:/opt# echo qwerty test1.txt roote785459638d9:/opt# cat test1.txt qwerty roote785459638d9:/opt# exit exit [roottest7 opt]# docker cp e785459638d9:/opt/test1.txt /opt/ Successfully copied 2.05kB to /opt/ [roottest7 opt]# ls containerd nginx rh test1.txt test.txt [roottest7 opt]# cat test1.txt qwerty5.7 容器的导出与导入 用户可以将任何一个 Docker 容器从一台机器迁移到另一台机器。在迁移过程中可以使用docker export 命令将已经创建好的容器导出为文件无论这个容器是处于运行状态还是停止状态均可导出。可将导出文件传输到其他机器通过相应的导入命令实现容器的迁移。 1导出格式docker export 容器ID/名称 文件名 docker export 11b7fd33c415 centos7.tar2导入格式cat 文件名 | docker import – 镜像名称:标签 #run一个新的nginx [roottest7 opt]# docker run -itd nginx /bin/bash c588fc4b47059331fe56605067dee867290b482df18491ac7123d8dfa1851003 [roottest7 opt]# docker ps -a[roottest7 opt]# ls centos7.2023.8.15tar centos7.tar containerd nginx rh test1.txt test.txt #导入后会生成镜像但不会创建容器 [roottest7 opt]# cat centos7.2023.8.15tar | docker import - centos7:test sha256:c5e4c3a170cdd7f8aa34559ff293a59858b7918912a74dbf1b8261e19a4c209d[roottest7 opt]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos7 test c5e4c3a170cd 25 seconds ago 140MB 5.8 删除容器 格式docker rm [-f] 容器ID/名称 docker stop c588fc4b4705 docker rm c588fc4b4705 #删除已经终止状态的容器 docker rm -f c588fc4b4705 #强制删除正在运行的容器5.9 批量操作 5.9.1 批量停止容器 docker ps -a | awk NR2{print docker stop $1} | bash docker ps -a | awk NR2{print $1}| xargs docker stop5.9.2 批量删除所有容器 docker ps -a | awk NR2{print docker rm $1} | bash docker ps -a | awk NR2{print $1}| xargs docker rm5.9.3 批量删除镜像 docker images | awk NR2{print docker rmi $3} | bash 5.9.4 删除none镜像 docker images | grep none | awk {print $3} | xargs docker rmi 5.9.5批量清理后台停止的容器 docker rm $(docker ps -a -q) 三.Docker 网络 1.Docker 网络实现原理 Docker使用Linux桥接在宿主机虚拟一个Docker容器网桥(docker0)Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址称为Container-IP同时Docker网桥是每个容器的默认网关。因为在同一宿主机内的容器都接入同一个网桥这样容器之间就能够通过容器的 Container-IP 直接通信。 Docker网桥是宿主机虚拟出来的并不是真实存在的网络设备外部网络是无法寻址到的这也意味着外部网络无法直接通过 Container-IP 访问到容器。如果容器希望外部访问能够访问到可以通过映射容器端口到宿主主机端口映射即 docker run 创建容器时候通过 -p 或 -P 参数来启用访问容器的时候就通过[宿主机IP]:[容器端口]访问容器。 docker run -d --name test1 -P nginx #随机映射端口从49153开始 docker ps -a#指定映射端口 docker run -d --name test3 -p 50001:80 nginx docker ps -a浏览器访问http://192.168.198.17:50001 、http://192.168.198.17:49153 #查看容器的输出和日志信息 格式docker logs 容器的ID/名称 docker logs f45ac0f9a1222.Docker 的网络模式 2.1 Host 2.1.1 概念 1容器将不会虚拟出自己的网卡配置自己的IP等而是使用宿主机的IP和端口。 2相当于Vmware中的桥接模式与宿主机在同一个网络中但没有独立IP地址。 3Docker使用了Linux的Namespaces技术来进行资源隔离如PID Namespace隔离进程Mount Namespace隔离文件系统Network Namespace隔离网络等。 4一个Network Namespace提供了一份独立的网络环境包括网卡、路由、iptable规则等都与其他的Network Namespace隔离。 一个Docker容器一般会分配一个独立的Network Namespace。 但如果启动容器的时候使用host模式那么这个容器将不会获得一个独立的Network Namespace 而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡、配置自己的IP等而是使用宿主机的IP和端口。 2.1.2 安装Docker时它会自动创建三个网络bridge创建容器默认连接到此网络、 none 、host #查看docker网络列表 docker network ls 或 docker network list 2.1.3 使用docker run创建Docker容器时可以用 --net 或 --network 选项指定容器的网络模式 ●host模式使用 --nethost 指定。 ●none模式使用 --netnone 指定。 ●container模式使用 --netcontainer:NAME_or_ID 指定。 ●bridge模式使用 --netbridge 指定默认设置可省略。 2.2 Container 2.2.1 概念 1创建的容器不会创建自己的网卡配置自己的IP而是和一个指定的容器共享IP、端口范围。 2这个模式指定新创建的容器和已经存在的一个容器共享一个Network Namespace而不是和宿主机共享。新创建的容器不会创建自己的网卡配置自己的IP而是和一个指定的容器共享IP、端口范围等。同样两个容器除了网络方面其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过lo网卡设备通信。 2.2.2 创建指定名称 #--name 选项可以给容器创建一个自定义名称 docker run -itd --name test1 centos:7 /bin/bash docker ps -a 2.2.3 查看容器进程号 #查看容器进程号 docker inspect -f {{.State.Pid}} 3ed82355f811 2.2.4 查看容器的进程、网络、文件系统等命名空间编号 #查看容器的进程、网络、文件系统等命名空间编号 ls -l /proc/89198/ns docker run -itd --name test2 --netcontainer:1a29ed506da4 centos:7 /bin/bash docker ps -a docker inspect -f {{.State.Pid}} 20dc47e95e6a 91161 #查看可以发现两个容器的 net namespace 编号相同 ls -l /proc/91161/ns 2.3 none 1该模式关闭了容器的网络功能。 2使用none模式Docker容器拥有自己的Network Namespace但是并不为Docker容器进行任何网络配置。 也就是说这个Docker容器没有网卡、IP、路由等信息。这种网络模式下容器只有lo回环网络没有其他网卡。这种类型的网络没有办法联网封闭的网络能很好的保证容器的安全性。 2.4 Bridge 1默认为该模式此模式会为每一个容器分配、设置IP等并将容器连接到一个docker0虚拟网桥通过docker0网桥以及iptables nat 表配置与宿主机通信。 2相当于Vmware中的 nat 模式容器使用独立network Namespace并连接到docker0虚拟网卡。通过docker0网桥以及iptables nat表配置与宿主机通信此模式会为每一个容器分配Network Namespace、设置IP等并将一个主机上的 Docker 容器连接到一个虚拟网桥上。 2.5 自定义网络 #直接使用bridge模式是无法支持指定IP运行docker的例如执行以下命令就会报错 docker run -itd --name test3 --network bridge --ip 172.17.0.10 centos:7 /bin/bash 2.5.1 创建自定义网络 #可以先自定义网络再使用指定IP运行docker docker network create --subnet172.18.0.0/16 --opt com.docker.network.bridge.namedocker1 mynetwork 注解 docker1 为执行 ifconfig -a 命令时显示的网卡名如果不使用 --opt 参数指定此名称那在使用 ifconfig -a 命令查看网络信息时看到的是类似 br-110eb56a0b22 这样的名字这显然不怎么好记。 mynetwork 为执行 docker network list 命令时显示的bridge网络模式名称。 #运行 docker run -itd --name test4 --net mynetwork --ip 172.18.0.10 centos:7 /bin/bash 四、docker的资源控制 1.CPU 资源控制 1.1 概念 cgroups是一个非常强大的linux内核工具他不仅可以限制被 namespace 隔离起来的资源 还可以为资源设置权重、计算使用量、操控进程启停等等。 所以 cgroupsControl groups实现了对资源的配额和度量。 1.2 cgroups有四大功能 ●资源限制可以对任务使用的资源总额进行限制 ●优先级分配通过分配的cpu时间片数量以及磁盘IO带宽大小实际上相当于控制了任务运行优先级 ●资源统计可以统计系统的资源使用量如cpu时长内存用量等 ●任务控制cgroup可以对任务执行挂起、恢复等操作 1.3 设置CPU使用率上限 Linux通过CFSCompletely Fair Scheduler完全公平调度器来调度各个进程对CPU的使用。CFS默认的调度周期是100ms。 我们可以设置每个容器进程的调度周期以及在这个周期内各个容器最多能使用多少 CPU 时间。 使用 --cpu-period 即可设置调度周期使用 --cpu-quota 即可设置在每个周期内容器能使用的CPU时间。两者可以配合使用。 CFS 周期的有效范围是 1ms~1s对应的 --cpu-period 的数值范围是 1000~1000000。 周期100毫秒 而容器的 CPU 配额必须不小于 1ms即 --cpu-quota 的值必须 1000。 docker run -itd --name test5 centos:7 /bin/bash cd /sys/fs/cgroup/cpu/docker/ ls cd 04cebd503002e7725beb25d4424e0eaa0aaa7a8019b9050d9911607c535da896 cat cpu.cfs_quota_us cat cpu.cfs_period_us 注解 cpu.cfs_period_uscpu分配的周期(微秒所以文件名中用 us 表示默认为100000。 cpu.cfs_quota_us表示该cgroups限制占用的时间微秒默认为-1表示不限制。 如果设为50000表示占用50000/10000050%的CPU。 1.4进行CPU压力测试 docker exec -it 1a29ed506da4 /bin/bash vi /cpu.sh #!/bin/bash i0 while true do let i done chmod x /cpu.sh ./cpu.sh #可以看到这个脚本占了很多的cpu资源 top 1.5 设置50%的比例分配CPU使用时间上限 #可以重新创建一个容器并设置限额 docker run -itd --name test6 --cpu-quota 50000 centos:7 /bin/bash #或者进入修改 cd /sys/fs/cgroup/cpu/docker/1a29ed506da4dc4c41179b38e2175a3a5d8a02f55c833f5992536d850dc404a4/ echo 50000 cpu.cfs_quota_us docker exec -it 1a29ed506da4 /bin/bash ./cpu.sh #可以看到cpu占用率接近50%cgroups对cpu的控制起了效果 top 1.6 设置CPU资源占用比设置多个容器时才有效 Docker 通过 --cpu-shares 指定 CPU 份额默认值为1024值为1024的倍数。 1.6.1 两个容器测试cpu 1创建两个容器为 c1 和 c2若只有这两个容器设置容器的权重使得c1和c2的CPU资源占比为1/3和2/3。 docker run -itd --name c1 --cpu-shares 512 centos:7 docker run -itd --name c2 --cpu-shares 1024 centos:7 2分别进入容器进行压力测试 c1: docker exec -it eb2c65e90789 /bin/bash vi /cpu.sh #!/bin/bash i0 while true do let i done chmod x /cpu.sh ./cpu.sh 另开终端 c2: docker exec -it d32f1cdfafe2 /bin/bash vi /cpu.sh #!/bin/bash i0 while true do let i done chmod x /cpu.sh ./cpu.sh 另开终端 yum install -y epel-release yum install -y stress #产生四个进程每个进程都反复不停的计算随机数的平方根 stress -c 4 3另开终端查看容器运行状态动态更新 docker stats 1.6.2 设置容器绑定指定的CPU 1先分配虚拟机4个CPU核数 docker run -itd --name test7 --cpuset-cpus 1,3 centos:7 /bin/bash 2进入容器进行压力测试 yum install -y epel-release yum install stress -y stress -c 4 docker exec -it d32f1cdfafe2 /bin/bash vi /cpu.sh #!/bin/bash i0 while true do let i done chmod x /cpu.sh ./cpu.sh 另开终端 3退出容器执行 top 命令再按 1 查看CPU使用情况。 2.对内存使用的限制 1-m(–memory) 选项用于限制容器可以使用的最大内存 docker run -itd --name test8 -m 512m centos:7 /bin/bash docker stats 2限制可用的 swap 大小 --memory-swap 强调一下–memory-swap 是必须要与 --memory 一起使用的。 正常情况下–memory-swap 的值包含容器可用内存和可用 swap。 所以 -m 300m --memory-swap1g 的含义为容器可以使用 300M 的物理内存并且可以使用 700M1G - 300的 swap。 如果 --memory-swap 设置为 0 或者 不设置则容器可以使用的 swap 大小为 -m 值的两倍。 如果 --memory-swap 的值和 -m 值相同则容器不能使用 swap。 如果 --memory-swap 值为 -1它表示容器程序使用的内存受限而可以使用的 swap 空间使用不受限制宿主机有多少 swap 容器就可以使用多少。 3.对磁盘IO配额控制blkio的限制 –device-read-bps限制某个设备上的读速度bps数据量单位可以是kb、mb(M)或者gb。 例 docker run -itd --name test9 --device-read-bps /dev/sda:1M centos:7 /bin/bash dd if/dev/zero oftest.out bs1M count10 oflagdirect –device-write-bps 限制某个设备上的写速度bps数据量单位可以是kb、mb(M)或者gb。 例 docker run -itd --name test11 --device-write-bps /dev/sda:1mb centos:7 /bin/bash dd if/dev/zero oftest.out bs1M count10 oflagdirect –device-read-iops 限制读某个设备的iops次数 –device-write-iops 限制写入某个设备的iops次数 3.1 创建容器并限制写速度 docker run -it --name test10 --device-write-bps /dev/sda:1MB centos:7 /bin/bash #通过dd来验证写速度 #添加oflag参数以规避掉文件系统cache dd if/dev/zero oftest.out bs1M count10 oflagdirect 100 records in 100 records out 10485760 bytes (10 MB) copied, 10.0025 s, 1.0 MB/s #清理docker占用的磁盘空间 docker system prune -a #可以用于清理磁盘删除关闭的容器、无用的数据卷和网络 停止的容器已被清理 3.2 生产扩展 故障由于docker容器故障导致大量日志集满会造成磁盘空间满 解决方案 1、清除日志 #!/bin/bash logs$ (find /var/lib/docker/containers/ -name *-json.log*) for log in $logs do cat /dev/null $log done 2、当日志占满之后如何处理 ###设置docker日志文件数量及每个日志大小 vim /etc/docker/daemon.json { registry-mirrors: [http://f613ce8f.m.daocloud.io] log-driver: json-file, #我的一日志格式 log-opts: { max-size : 500m, max-file : 3} #日志的参数最大500M 我最大容器中有三个日志文件 每个日志文件大小是500M } #修改完需要重新加载 systemctl daemon-reload

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/910702.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

旅游网站开发系统的er图服务好的镇江网站优化

为保证2019年上半年博士生毕业工作顺利开展,根据我校博士生答辩管理的相关文件,现将有关事项通知如下,请遵照执行。1.毕业申请:拟毕业研究生于3月15日前登录“中南大学研究生教育管理信息系统”(以下简称管理系统),在管理系统个人…

网站备案需要具备什么wordpress 元描述

文章目录 1、写时拷贝2、进程终止2.1 进程退出场景2.1.1 退出码2.1.2 错误码错误码 vs 退出码2.1.3 代码异常终止引入 2.2 进程常见退出方法2.2.1 exit函数2.2.2 _exit函数 本片我们主要来讲进程控制,讲之前我们先把写时拷贝理清,然后再开始讲进程控制。…

文具电子商务网站开发内容哈尔滨网站备案手续

应用架构与可观测技术演进历程 在软件开发早期,单体应用架构因其结构简单,便于测试和部署,得到了广泛的应用,对应的监控诊断技术主要是基于日志和日志关键词的指标监控。随着软件复杂度的不断提升,单体应用架构逐步向分…

购物网站建设基本流程树状图大连网站建设设计公司哪家好

深度学习模型种类繁多,可以根据任务类型和应用场景进行分类。以下是主要模型类型的详细介绍,每种模型包含了其特点、功能、代表性模型,以及常见应用。 1. 分类模型 分类模型是深度学习中最基本也是最广泛应用的模型类型,其目标是…

使用python读取windows日志表

在windows系统中,注册表 是系统定义的数据库,应用程序和系统组件在其中存储和检索配置数据。 注册表是一个分层数据库,其中包含对 Windows本身以及Windows上运行的应用程序和服务至关重要的数据。 因此我们还是不好…

西安市免费做网站站长统计幸福宝下载

引言 在当前计算机科学领域中,保护软件代码的安全性和隐私性变得愈发重要。为了防止黑客攻击和恶意软件分析,开发人员采用各种技术来混淆和加密其代码,其中包括JS混淆技术。本文将介绍JS混淆技术的原理和应用,并提供一些相关的加密…

网站建设方案对比分析社区团购最新模式

1.Python2.webservice3.requirejs4.idea5.webService6.redis7.doubble8.mongDB9.zookper 大数据学习曲线:课程一、大数据运维之Linux基础课程二、大数据开发核心技术-Hadoop 2.x从入门到精通课程三、大数据开发核心技术-大数据仓库Hive精讲课程四、大数据协作框架-S…

建设厅八大员报名网站免费企业网站源码

跳跃游戏 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。在这里插入图片…

建设银行甘肃分行网站企业微信app下载安装官网

CentOS 安装nginx 安装使用的是配置nginx官网yum仓库安装 同时适用于Red Hat Enterprise Linux 及其衍生产品,例如 CentOS、Oracle Linux、Rocky Linux、AlmaLinux 如想使用压缩包解压方式安装请自行百度 注:安装全程使用非root用户 且 该用户已有sudo权…

佛山营销型网站建设公司第三方网站开发优缺点

YUM 功能 软件包安装&#xff1a; 通过yum命令安装软件包。例如&#xff0c;安装一个名为 example-package 的软件包 yum install example-package更新包 检查更新&#xff1a; 检查可用更新&#xff1a; sudo yum check-update <package_name>软件包更新&#xff1a; y…

万网官方网站浙江省建设工程监理管理协会网站

题目描述 最近米咔买了n个苹果和m个香蕉&#xff0c;他每天可以选择吃掉一个苹果和一个香蕉&#xff08;必须都吃一个&#xff0c;即如果其中一种水果的数量为0&#xff0c;则他不能进行这个操作&#xff09;&#xff0c;或者使用魔法将某一种水果的数量翻倍。 现在米咔想吃西…

宿州产品网站建设网站开发合同书

本文是LLM系列文章&#xff0c;针对《Meta Semantic Template for Evaluation of Large Language Models》的翻译。 大型语言模型评估的元语义模板 摘要1 引言2 相关工作3 方法4 实验5 结论 摘要 大型语言模型(llm)是否真正理解语言的语义&#xff0c;或者只是记住训练数据?…

开机RAM分析调试SOP

思维导图 数据来源 内存分解对比项一、硬件保留内存 二、MemFree剩余物理内存 三、MemAvailable剩余可用内存Kernel占用内存 用户空间占用内存 思维导图 数据来源/proc/meminfo 内存状态信息 dumpsys memin…

9.20 模拟赛 T4

题意:有 \(n\) 个点,每个点有四个属性 \(a_i,b_i,c_i,v_i\)。现在要在这 \(n\) 个点之间连无向边。要求:\(i\) 的度数至少为 \(a_i\)。 \(i\) 的所有邻居 \(j\) 的 \(v_j\),要么都小于等于 \(v_i\),要么都大于等于…

建设网站的题目无实体店营业执照申请

网站优化搜索引擎与关键词 人们不应该高估搜索引擎的智商。这不利于seo的研究&#xff0c;事实上&#xff0c;搜索引擎是非常愚蠢的&#xff0c;让我们举一个非常简单的例子&#xff0c;你在搜索引擎中输入“教师”这个词&#xff0c;搜索引擎就会给出一个准确的搜索列表。我们…

厦门网站改版网络营销的成功案例

目标 知道GoogLeNet网络结构的特点能够利用GoogLeNet完成图像分类 一、开发背景 GoogLeNet在2014年由Google团队提出&#xff0c; 斩获当年ImageNet(ILSVRC14)竞赛中Classification Task (分类任务) 第一名&#xff0c;VGG获得了第二名&#xff0c;为了向“LeNet”致敬&#x…

怎么建设网站做一家网站

文章目录 一、机器学习是什么&#xff1f;二、模型训练YouTube流量预测1. 先写一个具有未知参数的函数&#xff08;Function&#xff09;2. 定义损失&#xff08;从训练数据进行计算&#xff09;3.最优化4.结果分析 Back to framework1.带有未知数的函数&#xff1a;2.定义损失…

网页转向网站wordpress交易系统

之前写了个1.0版本&#xff0c;由于太局限&#xff0c;需要用到笔记本才能操作&#xff0c;很多车友反馈不方便。特此出个手机版教程&#xff0c;简单easy&#xff0c;妈妈再也不用担心我搞不定啦 一、准备工作 先卸载车机上的autokit 或者 智能互联 app&#xff0c;这步很关…

珠海自适应网站建设陕西省交通建设集团商界分公司网站

一、什么是playbook及playbook的组成 1.Playbook的功能 playbook 是由一个或多个play组成的列表 Playboot 文件使用YAML来写的 play就是一个个模块用列表的方式体现出来 playbook的语法是用YAML的预防进行书写的 2.YAML 简介 是一种表达资料序列的格式&#xff0c;类似XM…

国内网站设计欣赏缪斯设计官网

因为机缘巧合&#xff0c;我接手了一个项目&#xff0c;阴差阳错的&#xff0c;我竟然又成了这个项目的半个负责人。而这个项目呢&#xff0c;由我们团队和别的团队一起合作&#xff0c;这就遇到一个问题了&#xff0c;我们的核心技术在上传到项目中的时候就会暴露给别的团队了…