当前位置: 首页 > news >正文

做网站审批号必须要做网站的公司主要是干啥

做网站审批号必须要,做网站的公司主要是干啥,天津网站建设价格,制作一款软件需要多少钱目录 docker网络 网络实现原理 网络实现实例 网络模式 查看Docker中的网络列表#xff1a; 指定容器网络模式 模式详解 Host模式#xff08;主机模式#xff09;#xff1a; Container模式#xff08;容器模式#xff09;#xff1a; None模式#xff08;无网…目录 docker网络 网络实现原理 网络实现实例 网络模式 查看Docker中的网络列表 指定容器网络模式 模式详解 Host模式主机模式 Container模式容器模式 None模式无网络模式 Bridge模式桥接模式 自定义网络 cpu优化概述 1. 资源限制 2. CPU 实时调度策略 3. NUMA 控制 4. CPU 隔离 5. 进程优先级 6. 实时性能监控和优化 示例 资源控制 cpu限制 设置cpu使用上限 限制cpu示例 cpu压力测试 设置CPU资源占用比设置多个容器时才有效 设置容器绑定指定的CPU 内存限制 内存使用限制示例 磁盘IO配额控制blkio的限制 磁盘限制示例 容器日志占满磁盘空间怎么办 解决方案一清空日志 解决方案二设置 Docker 日志文件大小和数量限制 端口映射 容器互联 docker网络 网络实现原理 Docker 网络是指由 Docker 为应用程序创建的虚拟环境的一部分它允许应用程序从宿主机操作系统的网络环境中独立出来形成容器自有的网络设备、IP 协议栈、端口套接字、IP 路由表、防火墙等与网络相关的模块。Docker 的网络功能提供了一种在容器之间进行通信和与外部网络交互的机制。 Docker使用Linux桥接在宿主机虚拟一个Docker容器网桥(docker0)Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址称为Container-IP同时Docker网桥是每个容器的默认网关。因为在同一宿主机内的容器都接入同一个网桥这样容器之间就能够通过容器的 Container-IP 直接通信。 Docker网桥是宿主机虚拟出来的并不是真实存在的网络设备外部网络是无法寻址到的这也意味着外部网络无法直接通过 Container-IP 访问到容器。如果容器希望外部访问能够访问到可以通过映射容器端口到宿主主机端口映射即 docker run 创建容器时候通过 -p 或 -P 参数来启用访问容器的时候就通过[宿主机IP]:[容器端口]访问容器。 Docker 网络实现原理补充 Docker 网桥Bridge: Docker 网桥是由 Docker 在宿主机上虚拟的网络设备它充当容器之间通信的桥梁。Docker 网桥通过 Linux 桥接技术实现创建一个虚拟的以太网桥docker0用于连接同一主机上的各个容器。 IP 地址分配 在容器启动时Docker 会为每个容器分配一个 IP 地址这个地址属于 Docker 网桥的子网。这样容器可以通过 Container-IP 直接进行通信实现了隔离和网络互联。 端口映射 外部网络无法直接访问容器的 Container-IP因此 Docker 提供了端口映射功能。通过使用 -p 或 -P 参数可以将容器的端口映射到宿主机上的一个端口使得外部网络可以通过宿主机的 IP 地址和映射的端口访问容器提供的服务。 使用 -p 参数指定映射的宿主机端口例如 -p 43000:80 表示将容器的 80 端口映射到宿主机的 43000 端口。 使用 -P 参数可以随机映射容器端口到宿主机的一个高端口。 查看容器信息和日志 使用 docker ps -a 查看容器的详细信息包括容器的 ID、镜像、启动命令、状态等。 使用 docker logs 容器的ID/名称 查看容器的标准输出和日志信息用于排查容器运行时的问题。 跨主机通信 对于需要在多个 Docker 主机之间通信的场景可以使用容器编排工具如 Docker Swarm 或 Kubernetes实现容器的跨主机通信和协同工作。 这些补充信息可以使你的文档更加详尽帮助读者更好地理解 Docker 网络的实现原理及相关操作。 网络实现实例 用于运行两个Nginx容器每个容器具有不同的端口映射配置。 docker run -d --name test1 -P nginx该命令以分离模式 (-d) 运行一个 Nginx 容器nginx 镜像容器名为 test1。 选项 -P 会自动将容器中公开的端口映射到主机上的随机端口。 docker run -d --name test2 -p 43000:80 nginx该命令以分离模式 (-d) 运行另一个 Nginx 容器nginx 镜像容器名为 test2。 选项 -p 43000:80 指定容器中的端口80映射到主机上的端口43000。 docker ps -a该命令列出所有容器包括那些当前未运行的容器。 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9d3c04f57a68 nginx /docker-entrypoint.… 4 seconds ago Up 3 seconds 0.0.0.0:43000-80/tcp test2 b04895f870e5 nginx /docker-entrypoint.… 17 seconds ago Up 15 seconds 0.0.0.0:49170-80/tcp test1输出显示运行中容器的详细信息包括容器ID、镜像、命令、创建时间、状态和端口映射。 在浏览器中访问Nginx: 使用以下URL在浏览器中访问Nginx实例 http://192.168.80.10:43000 对应 test2 http://192.168.80.10:49170 对应 test1 查看容器日志: 要查看特定容器的日志可以使用以下命令 docker logs 容器ID或名称用实际的容器ID或名称替换 容器ID或名称。 例如 docker logs test1这将显示 test1 容器的输出和日志。 网络模式 查看Docker中的网络列表 docker network ls或者 docker network list这两个命令都会列出当前Docker主机上的所有网络。输出将包含每个网络的ID、名称、驱动程序和作用域等信息。通过查看这个列表可以了解到Docker中已创建的网络并选择适当的网络模式来运行你的容器。 指定容器网络模式 Docker会默认创建三种网络模式bridge、none和host。 bridge模式 默认设置容器会连接到名为bridge的网络。这允许容器相互通信但与主机隔离。通过 --netbridge 指定。 none模式 使用 --netnone 指定表示容器不连接到任何网络。在这种模式下你需要手动配置网络或者容器之间的通信需要通过其他方式实现。 host模式 使用 --nethost 指定容器共享主机的网络命名空间即与主机相同的网络。这意味着容器可以直接访问主机上的网络接口。 container模式 使用 --netcontainer:NAME_or_ID 指定容器与另一个容器共享网络命名空间。这使得它们可以直接使用相同的网络配置。 这些网络模式提供了不同的网络隔离和连接方式允许根据应用程序的需求进行定制。 模式详解 Host模式主机模式 特点 容器不会虚拟出自己的网卡也不会配置自己的IP等而是直接使用宿主机的IP和端口。 Docker使用了Linux的Namespaces技术来进行资源隔离如PID Namespace隔离进程Mount Namespace隔离文件系统Network Namespace隔离网络等。 一个Network Namespace提供了一份独立的网络环境包括网卡、路由、iptable规则等都与其他的Network Namespace隔离。 一个Docker容器一般会分配一个独立的Network Namespace。 但如果启动容器的时候使用host模式那么这个容器将不会获得一个独立的Network Namespace 而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡、配置自己的IP等而是使用宿主机的IP和端口。 命令示例 docker run --name my_container --network host -d nginx用途 适用于需要最大化网络性能容器与宿主机共享相同的网络命名空间。 Container模式容器模式 特点 容器不会创建自己的网卡或配置自己的IP而是与一个指定的容器共享相同的IP和端口范围。 这个模式指定新创建的容器和已经存在的一个容器共享一个Network Namespace而不是和宿主机共享。新创建的容器不会创建自己的网卡配置自己的IP而是和一个指定的容器共享IP、端口范围等。同样两个容器除了网络方面其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过lo网卡设备通信。 命令示例 docker run --name my_container1 -d nginx docker run --name my_container2 --network container:my_container1 -d nginx用途 适用于需要共享相同网络命名空间的容器它们可以直接访问对方的网络配置。 启动一个后台容器 test1使用 CentOS 7 镜像并运行 /bin/bash 命令 docker run -itd --name test1 centos:7 /bin/bash该命令创建了一个后台运行的容器命名为 test1并使用 CentOS 7 镜像启动了一个交互式 Bash Shell。 查看所有容器的状态包括已停止的容器 docker ps -a输出显示了容器的基本信息包括容器ID、镜像、命令、创建时间等。 使用 docker inspect 命令查看容器的进程号PID docker inspect -f {{.State.Pid}} 3ed82355f811此命令显示了容器 test1 的PID这里是25945。 使用 ls -l /proc/PID/ns 查看容器的命名空间编号 ls -l /proc/25945/ns输出显示了容器的各个命名空间包括IPC、挂载Mount、网络Net、PID、用户User和UTS。 启动另一个后台容器 test2使用与 test1 相同的网络命名空间 docker run -itd --name test2 --netcontainer:3ed82355f811 centos:7 /bin/bash此命令将容器 test2 的网络命名空间设置为与 test1 相同。 再次查看所有容器的状态 docker ps -a现在列出了两个容器test1 和 test2。 使用 docker inspect 命令查看容器 test2 的进程号 docker inspect -f {{.State.Pid}} ff96bc43dd27此命令显示了容器 test2 的PID这里是27123。 使用 ls -l /proc/PID/ns 再次查看容器 test2 的命名空间编号 ls -l /proc/27123/ns输出显示了容器 test2 的各个命名空间与容器 test1 的命名空间编号相同表明它们共享了网络命名空间。 通过共享网络命名空间test2 容器与 test1 容器共享相同的网络栈它们可以直接通信就好像它们在同一台主机上运行一样。 None模式无网络模式 特点 关闭了容器的网络功能容器将没有网络接口不能进行网络通信。 使用none模式Docker容器拥有自己的Network Namespace但是并不为Docker容器进行任何网络配置。 也就是说这个Docker容器没有网卡、IP、路由等信息。这种网络模式下容器只有lo回环网络没有其他网卡。这种类型的网络没有办法联网封闭的网络能很好的保证容器的安全性。 命令示例 docker run --name my_container --network none -d nginx用途 适用于一些特殊场景例如不需要网络连接的容器。 Bridge模式桥接模式 特点 默认模式为每个容器分配和设置IP并将容器连接到一个名为docker0的虚拟网桥上。使用iptables NAT表配置容器与宿主机通信。 此模式会为每一个容器分配Network Namespace、设置IP等并将一个主机上的 Docker 容器连接到一个虚拟网桥上。 命令示例 docker run --name my_container --network bridge -d nginx用途 适用于多个容器需要在同一宿主机上运行并需要通过网络相互通信的情况。 虚拟网桥 docker0 Docker进程在主机上启动时会创建一个名为 docker0 的虚拟网桥。 Docker容器连接到这个虚拟网桥使得主机上的所有容器都能够通过这个网桥连接到一个共享的二层网络中类似于物理交换机的作用。 分配IP和设置网关 从 docker0 子网中分配一个IP给每个容器并将 docker0 的IP地址设置为容器的默认网关。 在主机上创建一对虚拟网卡 (veth pair 设备)它们成对出现连接两个网络设备组成了数据通道。 veth pair 设备 Docker将 veth pair 设备的一端放在新创建的容器中并命名为 eth0容器的网卡。 另一端放在主机中命名类似于 veth*并将这个网络设备加入到 docker0 网桥中。 使用 brctl show 命令可以查看网桥上的连接情况。 端口转发和 iptables 当使用 docker run -p 时Docker实际上在主机的 iptables 中设置了 DNATDestination NAT规则以实现端口转发功能。 你可以使用 iptables -t nat -vnL 命令来查看 nat 表中的规则。 这些步骤描述了Docker容器如何在主机上进行网络连接、IP分配、网关设置以及端口转发。这种网络架构使得Docker容器可以方便地与主机和其他容器进行通信同时通过端口转发功能可以将容器的服务映射到主机上的特定端口。 - 自定义网络 特点 用户可以创建自己的自定义网络容器可以连接到这个网络。用户可以配置自定义网络的属性如子网、网关等。 命令示例 docker network create my_network docker run --name my_container --network my_network -d nginx用途 适用于需要更精细控制容器之间通信和隔离程度的场景。可以定义自己的网络拓扑和配置。 直接使用bridge模式是无法支持指定IP运行docker的 在Docker中创建自定义网络并在自定义网络中指定IP运行容器的一系列操作。 创建自定义网络 docker network create --subnet172.16.0.0/16 --opt com.docker.network.bridge.namedocker1 mynetworkdocker network create: 创建一个自定义网络。 --subnet172.16.0.0/16: 指定网络的子网范围为172.16.0.0/16。 --opt com.docker.network.bridge.namedocker1: 使用 --opt 参数指定了自定义网络的桥接名称为 docker1。如果不使用 --opt 参数指定此名称那你在使用 ifconfig -a 命令查看网络信息时看到的是类似 br-110eb56a0b22 这样的名字这显然不怎么好记。 mynetwork: 为自定义网络指定名称为 mynetwork。 这样的操作创建了一个名为 mynetwork 的自定义网络其子网范围为172.16.0.0/16并使用 docker1 作为桥接名称。 查看网络信息 docker1 是执行 ifconfig -a 命令时显示的网桥名称。 mynetwork 是执行 docker network list 命令时显示的bridge网络模式的名称。 运行容器并指定IP docker run -itd --name test4 --net mynetwork --ip 172.16.0.10 centos:7 /bin/bash--name test4: 为容器指定名称为 test4。 --net mynetwork: 将容器连接到名为 mynetwork 的自定义网络。 --ip 172.16.0.10: 为容器指定IP地址为172.16.0.10。 centos:7: 使用CentOS 7镜像启动容器。 /bin/bash: 在容器中运行Bash Shell。 通过这些步骤创建了一个自定义网络 mynetwork并在该网络中启动了一个名为 test4 的容器并指定了容器的IP地址为172.16.0.10。这样可以通过自定义网络的IP地址访问容器并且容器可以在该网络中与其他容器进行通信。 cpu优化概述 1. 资源限制 --cpus限制容器使用的 CPU 数量。 docker run --cpus2 my_container这将限制容器 my_container 最多只能使用两个 CPU 核心。 --cpu-shares设置容器 CPU 使用的权重。 docker run --cpu-shares512 my_container1 docker run --cpu-shares1024 my_container2在这个例子中my_container1 拥有更低的权重512而 my_container2 拥有更高的权重1024即在 CPU 分配上my_container2 在竞争中更有优势。 2. CPU 实时调度策略 --cpu-rt-runtime 和 --cpu-rt-period设置容器的 CPU 实时运行时间和周期。 docker run --cpu-rt-runtime2000000 --cpu-rt-period10000000 my_realtime_container这个例子中my_realtime_container 被设置为具有 2 秒2000000 微秒的实时运行时间并且在 10 秒10000000 微秒的周期内。 3. NUMA 控制 Docker 有一些高级特性可以使用例如 --cpuset-cpus 和 --cpuset-mems 选项可以将容器限制在特定的 NUMA 节点上。 --cpuset-cpus指定容器可以使用的 CPU 核心。 --cpuset-mems指定容器可以使用的 NUMA 节点内存。 示例 docker run --cpus2 --cpu-shares512 --cpu-rt-runtime2000000 --cpu-rt-period10000000 --cpuset-cpus0,1 --cpuset-mems0 my_container这个命令结合了多个 CPU 优化参数并将容器 my_container 限制在 NUMA 节点 0 上的 CPU 核心 0 和 1 上运行。它还设置了 CPU 的分享权重、实时运行时间和周期。 4. CPU 隔离 --cpu-period 和 --cpu-quota用于实现 CPU 周期和配额。这允许你设置 CPU 使用率的上限。 docker run --cpu-period100000 --cpu-quota50000 my_container在这个例子中my_container 的 CPU 使用率被限制在 50%即 0.5 CPU。 5. 进程优先级 nice 和 renice这些工具可以用来设置容器中进程的优先级。你可以为某些任务分配更高的优先级。 docker exec -it my_container nice -n -5 ./my_high_priority_process docker exec -it my_container renice -n -10 -p pid这里nice 设置了某个进程的较高优先级而 renice 则用于改变已经运行的进程的优先级。 6. 实时性能监控和优化 使用各种监控工具如 docker stats、cAdvisor、Prometheus 等来实时监控容器的 CPU 使用情况并根据实际情况进行优化。 示例 docker run --cpus1.5 --cpu-shares512 --cpu-period100000 --cpu-quota50000 --cpuset-cpus0 --cpuset-mems0 my_container这个命令限制了 my_container 使用 1.5 个 CPU 核心并设置了 CPU 分享权重为 512。同时通过周期和配额设置限制了 CPU 使用率为 50%。此外容器被限制在 NUMA 节点 0 上的 CPU 核心 0。 优化容器的 CPU 使用是一项复杂的任务需要根据特定的应用程序需求和可用资源进行调整。这些示例提供了不同参数的用法可根据具体情况进行调整以便在 Docker 中实现更好的 CPU 利用和性能优化。 资源控制 Docker 资源控制是指通过 Docker 平台提供的功能和机制对容器的各种资源如 CPU、内存、磁盘 I/O、网络带宽等进行管理和限制以确保容器在运行过程中能够合理、有效地利用系统资源。 cpu限制 cgroups 是 Linux 内核提供的一种机制用于对一组进程进行资源限制、优先级分配、资源统计和任务控制。这是 Linux 内核中对容器技术的支持的关键组成部分之一。 以下是 cgroups 的主要功能 资源限制 cgroups 允许你对一组进程或任务使用的资源总量进行限制。这可以包括 CPU、内存、磁盘 I/O 等。通过设定资源限制可以确保容器或进程在运行时不会无节制地占用系统资源。 优先级分配 通过分配 CPU 时间片的数量以及磁盘 I/O 带宽大小cgroups 实际上允许控制任务的运行优先级。这对于确保高优先级任务获得足够的系统资源而低优先级任务不能无限制地占用资源非常重要。 资源统计 cgroups 可以用于统计系统资源的使用量如 CPU 时间、内存使用等。这对于监控和性能分析很有用能够帮助了解系统中不同任务的资源消耗情况。 任务控制 cgroups 允许对任务执行挂起、恢复等操作。这使得可以更精细地控制和管理系统中运行的任务。 总体而言cgroups 提供了强大的资源管理和控制机制为容器化技术比如 Docker 和 Kubernetes以及其他多任务环境下的资源隔离和管理提供了基础。这些功能使得管理员能够更精确地控制和调整系统中不同任务的行为以提高系统的效率和可靠性。 设置cpu使用上限 在 Linux 中通过 CFSCompletely Fair Scheduler进行 CPU 资源调度的设置以及如何在容器中限制 CPU 使用率上限的问题。这主要涉及到两个参数--cpu-period 和 --cpu-quota。 --cpu-period 这个参数用于设置 CFS 调度周期的长度。CFS 将 CPU 时间切分为一系列时间片而 --cpu-period 就是设置这个周期的长度。有效范围是 1ms 到 1s对应的 --cpu-period 数值范围是 1000 到 1000000。 docker run --cpu-period100000 my_container以上示例将容器的 CFS 调度周期设置为 100ms。 --cpu-quota 这个参数用于设置在每个调度周期内容器能够使用的 CPU 时间。它的值是一个配额有效范围必须不小于 1ms即 --cpu-quota 的值必须大于等于 1000。 docker run --cpu-quota50000 my_container以上示例将容器的 CPU 配额设置为 50ms。这表示容器在每个 100ms 的调度周期内最多能够使用 50ms 的 CPU 时间。 通过这两个参数的组合可以有效地控制容器的 CPU 使用率。例如如果你希望容器最多使用整个系统的一半 CPU 资源可以将 --cpu-period 设置为 100000100ms而将 --cpu-quota 设置为 5000050ms以实现这一目标。这样容器将被允许在每个周期内使用的 CPU 时间最多为 50ms。 限制cpu示例 Docker 中容器的 CPU 资源限制 docker run -itd --name test5 centos:7 /bin/bashDocker Run 命令: -itd: 这是三个选项的结合。 -i: 交互模式允许你与容器进行交互。 -t: 在新容器内分配一个伪终端pseudo-tty。 -d: 后台运行容器并返回容器的唯一标识符。 --name test5: 为容器指定了一个名字即 test5。 centos:7: 使用的基础镜像即 CentOS 7。 /bin/bash: 容器启动后执行的命令这里是启动 Bash shell。 docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3ed82355f811 centos:7 /bin/bash 0 days ago Up 1 hours testDocker PS -a 命令: 输出显示容器的详细信息其中包括容器 ID、使用的镜像、启动命令、创建时间、状态等。在示例结果中容器名为 test 的容器处于 Up 1 hours 的状态表示容器已经运行了 1 小时。 cd /sys/fs/cgroup/cpu/docker/3ed82355f81151c4568aaa6e7bc60ba6984201c119125360924bf7dfd6eaa42b/cgroup 路径解析: 这里进入了 cgroup 中的路径其中 3ed82355f81151c4568aaa6e7bc60ba6984201c119125360924bf7dfd6eaa42b 是容器的 ID该路径下的文件反映了该容器的 cgroup 参数。 查看 cpu.cfsquotaus: cat cpu.cfs_quota_us输出 -1 表示该 cgroup 未设置 CPU 时间配额即不受限制。 查看 cpu.cfsperiodus: cat cpu.cfs_period_us输出 100000 表示 CPU 时间的周期为 100000 微秒即 100 毫秒。 总结一下容器 test 在 CPU cgroup 中的设置显示出默认的无限制状态即该容器未受到 CPU 时间的限制。这意味着容器可以使用系统上的所有 CPU 时间。如果需要限制容器的 CPU 使用率可以使用 --cpu-quota 和 --cpu-period 等参数进行设置以实现对容器 CPU 资源的精确控制。 cpu.cfsperioduscpu分配的周期(微秒所以文件名中用 us 表示默认为100000。 cpu.cfsquotaus表示该cgroups限制占用的时间微秒默认为-1表示不限制。 如果设为50000表示占用50000/10000050%的CPU。 cpu压力测试 进行CPU压力测试 执行 CPU 资源密集型脚本 使用 docker exec 命令进入容器并创建一个无限循环的 Bash 脚本cpu.sh该脚本会不断地递增变量 i导致 CPU 使用率上升。 docker exec -it 3ed82355f811 /bin/bash在容器内创建并运行以下脚本 vim /cpu.sh #!/bin/bash i0 while true do let i done接着给予该脚本执行权限并运行它 chmod x /cpu.sh ./cpu.sh使用 top 命令观察容器内的 CPU 使用率会显著上升因为这个脚本持续地消耗 CPU 资源。 设置 CPU 时间配额为 50% 使用 Docker 命令 docker run -itd --name test6 --cpu-quota 50000 centos:7 /bin/bash这里创建了一个新容器 test6 并设置了 CPU 时间配额为 50%50000 微秒。这意味着容器 test6 在每 100 毫秒的周期内只能使用 50% 的 CPU 资源。 手动设置 cgroup 参数 你可以直接修改 cgroup 的 cpu.cfs_quota_us 文件来设置容器的 CPU 时间配额。这相当于手动设置 CPU 时间配额。 cd /sys/fs/cgroup/cpu/docker/3ed82355f81151c4568aaa6e7bc60ba6984201c119125360924bf7dfd6eaa42b/ echo 50000 cpu.cfs_quota_us接着再次在容器中运行上述的 cpu.sh 脚本你会发现 CPU 使用率近似于 50%这证明了 cgroups 对 CPU 资源的控制起到了效果。 通过这个示例你可以看到如何使用 Docker 和 cgroups 功能来限制容器的 CPU 资源使用从而确保系统中其他任务也能得到足够的 CPU 资源。 设置CPU资源占用比设置多个容器时才有效 创建两个容器并设置 CPU 份额 使用 docker run 命令创建两个容器分别命名为 c1 和 c2并分别设置不同的 CPU 份额。这里--cpu-shares 选项的值分别为 512 和 1024表示它们的 CPU 份额比例。 docker run -itd --name c1 --cpu-shares 512 centos:7 docker run -itd --name c2 --cpu-shares 1024 centos:7进入容器并进行压力测试 进入容器并使用 yum 安装 stress 工具然后使用 stress 工具模拟 CPU 资源压力。这里的命令会创建四个进程每个进程都会反复计算随机数的平方根产生 CPU 负载。 yum install -y epel-release yum install -y stress stress -c 4查看容器运行状态 使用 docker stats 命令实时查看容器的资源使用情况包括 CPU 使用率、内存使用情况等。 docker statsCONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS c3ee18e65852 c2 66.50% 5.5MiB / 976.3MiB 0.56% 20.4MB / 265kB 115MB / 14.2MB 4 bb02d3b345d8 c1 32.68% 2.625MiB / 976.3MiB 0.27% 20.4MB / 325kB 191MB / 12.7MB 4这个命令输出的结果包含每个容器的 ID、名称、CPU 使用率、内存使用情况、网络 I/O、块 I/O、进程数量等信息。在示例中c1 和 c2 的 CPU 使用率分别为 32.68% 和 66.50%反映了它们的 CPU 份额设置的比例关系。 通过这个例子可以在容器间动态调整 CPU 资源占用比例确保资源按照预期的比例分配给不同的容器。 设置容器绑定指定的CPU 分配虚拟机 4 个 CPU 核心 在虚拟机中首先确保有 4 个可用的 CPU 核心。然后使用 docker run 命令创建一个名为 test7 的容器并通过 --cpuset-cpus 选项将容器绑定到虚拟机的第 1 和第 3 个 CPU 核心。 docker run -itd --name test7 --cpuset-cpus 1,3 centos:7 /bin/bash进入容器并进行压力测试 进入容器并使用 yum 安装 stress 工具然后使用 stress 工具模拟 CPU 资源压力。这里的命令会创建四个进程每个进程都会产生 CPU 负载。 yum install -y epel-release yum install -y stress stress -c 4退出容器查看 CPU 使用情况 退出容器后可以使用 top 命令查看主机上的 CPU 使用情况。按 1 键可以查看每个 CPU 核心的详细信息。 top这将显示实时的 CPU 使用情况你应该能够看到绑定的 CPU 核心在这个例子中是第 1 和第 3 个核心上有相应的 CPU 使用率。 通过这个例子你可以将容器限制在特定的 CPU 核心上以确保它只使用指定的 CPU 资源。 内存限制 内存使用限制示例 使用 -m 选项限制容器内存 使用 -m或 --memory选项可以限制容器可以使用的最大物理内存。在你的例子中通过以下命令创建了一个名为 test8 的容器限制了容器可用的物理内存为 512MB docker run -itd --name test8 -m 512m centos:7 /bin/bash通过这个限制test8 容器在运行时只能使用最多 512MB 的物理内存。 执行以下命令可以查看所有运行中容器的实时资源使用情况 docker statsdocker stats 输出的信息包括 CONTAINER ID容器的唯一标识符。 NAME容器的名称。 CPU %CPU 使用百分比。 MEM USAGE / LIMIT内存使用情况和限制。 MEM %内存使用百分比。 NET I/O网络输入/输出。 BLOCK I/O块输入/输出。 PIDS进程数量。 使用 --memory-swap 选项限制可用的 Swap 空间 --memory-swap 选项是用于限制容器可用的 swap 空间。它需要与 --memory 一起使用。你提到的这个选项是确保 swap 大小包含了可用内存和 swap其计算方式为 --memory-swap --memory swap。 例如使用以下命令 docker run -itd --name test9 -m 300m --memory-swap1g centos:7 /bin/bash这表示容器可以使用 300MB 的物理内存并且可以使用 700MB1GB - 300MB的 swap 空间。 关于 --memory-swap 不同值的含义 如果 --memory-swap 设置为 0 或者不设置则容器可以使用的 swap 大小为 -m 值的两倍。 如果 --memory-swap 的值和 -m 值相同则容器不能使用 swap。 如果 --memory-swap 值为 -1表示容器程序使用的内存受限而可以使用的 swap 空间则没有限制它可以使用宿主机上所有的 swap 空间。 这些选项允许在 Docker 容器中对内存资源进行更细粒度的控制和限制。 磁盘IO配额控制blkio的限制 这些 Docker 命令行选项用于限制容器中设备的读写速度和 IOPS每秒的输入/输出操作次数。 --device-read-bps限制读速度 通过该选项可以限制容器对指定设备的读取速度每秒读取的字节数。单位可以是kb、mb(M)或者gb。例如 docker run -itd --name test9 --device-read-bps /dev/sda:1M centos:7 /bin/bash这个例子中容器 test9 限制了对 /dev/sda 设备的读取速度为每秒 1MB。 --device-write-bps限制写速度 这个选项用于限制容器对指定设备的写入速度每秒写入的字节数。单位可以是kb、mb(M)或者gb。例如 docker run -itd --name test10 --device-write-bps /dev/sda:1mb centos:7 /bin/bash这个例子中容器 test10 限制了对 /dev/sda 设备的写入速度为每秒 1MB。 --device-read-iops限制读取 IOPS 通过该选项你可以限制容器对指定设备的读取 IOPS每秒读取的操作次数。例如 docker run -itd --name test11 --device-read-iops /dev/sdb:100 centos:7 /bin/bash这个例子中容器 test11 限制了对 /dev/sdb 设备的读取 IOPS 为每秒 100 次。 --device-write-iops限制写入 IOPS 这个选项用于限制容器对指定设备的写入 IOPS每秒写入的操作次数。例如 docker run -itd --name test12 --device-write-iops /dev/sdb:50 centos:7 /bin/bash这个例子中容器 test12 限制了对 /dev/sdb 设备的写入 IOPS 为每秒 50 次。 磁盘限制示例 创建容器并限制写速度 使用 docker run 命令创建了一个名为 test10 的容器并通过 --device-write-bps 选项限制了对 /dev/sda 设备的写入速度为每秒 1MB。 docker run -it --name test10 --device-write-bps /dev/sda:1MB centos:7 /bin/bash这个命令会在后台运行一个交互式的容器并将其命名为 test10同时限制了对 /dev/sda 设备的写入速度。 使用 dd 验证写速度 进入容器后使用 dd 命令从 /dev/zero 设备写入数据到 test.out 文件中以验证写入速度。 dd if/dev/zero oftest.out bs1M count10 oflagdirect这个命令从 /dev/zero 设备读取数据写入到 test.out 文件中使用 1MB 的块大小总共写入 10MB 的数据。根据输出写入速度为每秒 1.0 MB/s。 清理 Docker 占用的磁盘空间 使用 docker system prune -a 命令可以清理 Docker 占用的磁盘空间包括删除关闭的容器、无用的数据卷和网络。这对于释放磁盘空间以及清理不再需要的 Docker 资源非常有用。 docker system prune -a这个命令会列出要删除的所有未使用的资源并提示确认是否进行清理。确认后Docker 将删除这些不再需要的资源从而释放磁盘空间。 通过这些步骤成功地创建了一个限制写速度的容器并通过 dd 命令验证了写入速度最后通过 docker system prune -a 清理了不再需要的 Docker 资源。 容器日志占满磁盘空间怎么办 解决方案一清空日志 #!/bin/bash logs$(find /var/lib/docker/containers/ -name *-json.log*) for log in $logs docat /dev/null $log done这个脚本的目的是通过查找 Docker 容器日志文件并将其清空来释放磁盘空间。脚本使用 find 命令查找所有以 -json.log 结尾的日志文件并通过 cat /dev/null $log 将它们的内容清空。 解决方案二设置 Docker 日志文件大小和数量限制 编辑 Docker daemon 的配置文件 /etc/docker/daemon.json并添加以下配置 {registry-mirrors: [http://f613ce8f.m.daocloud.io],log-driver: json-file,log-opts: {max-size: 500m,max-file: 3} }max-size: 500m设置每个日志文件的最大大小为 500MB。 max-file: 3设置最大保留的日志文件数量为 3 个。 修改完配置文件后需要重新加载 Docker daemon systemctl daemon-reload这样设置后Docker 将限制每个容器的日志文件大小并定期轮转日志文件以保持文件数量在指定的范围内。这可以防止日志文件无限增长导致磁盘空间耗尽的问题。 请注意第二个方案是一个更加长期的解决方案可以预防日志文件过大的问题。 端口映射 端口映射机制是 Docker 中重要的网络特性之一。在容器内运行的服务通常需要对外部网络提供访问而端口映射是一种实现容器与外部网络通信的关键方式。 当容器内的服务绑定到特定的端口时通过端口映射Docker 允许将宿主机上的一个端口映射到容器内服务的相应端口。这样一来外部网络可以通过宿主机的 IP 地址和映射的端口来访问容器内的服务。 docker run -d --name test1 -P nginx-d: 表示以后台detached模式运行容器。 --name test1: 为容器指定一个名称为test1。 -P: 随机映射容器内部的端口到主机的高端口从32768开始。这意味着Docker会自动选择一个未被占用的主机端口并将它映射到容器的80端口。 docker run -d --name test2 -p 43000:80 nginx-d: 同样表示以后台detached模式运行容器。 --name test2: 为容器指定一个名称为test2。 -p 43000:80: 指定将主机的43000端口映射到容器的80端口。 docker ps -a显示所有容器的信息包括已停止的容器。 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9d3c04f57a68 nginx /docker-entrypoint.… 4 seconds ago Up 3 seconds 0.0.0.0:43000-80/tcp test2 b04895f870e5 nginx /docker-entrypoint.… 17 seconds ago Up 15 seconds 0.0.0.0:49170-80/tcp test1显示两个容器的基本信息包括它们的状态和端口映射关系。 对于test2容器主机的43000端口映射到容器的80端口。 对于test1容器Docker自动选择了主机的49170端口映射到容器的80端口。 浏览器访问 通过 http://192.168.41.10:43000 可以访问test2容器的Nginx服务。 通过 http://192.168.41.10:49170 可以访问test1容器的Nginx服务。 容器互联 Docker容器互联是指通过Docker提供的连接系统将多个容器连接在一起实现容器之间的通信和共享信息。简单点说就是会在源容器和接收容器之间建立一条隧道接收容器可以看到源容器指定的信息。 容器连接 Docker提供了docker connect命令用于将一个容器连接到另一个容器。 连接会创建一个父子关系其中父容器可以看到子容器。 容器之间的通信 通过容器互联容器之间可以直接使用容器名称进行通信而不需要使用IP地址。 Docker会在连接时设置一些环境变量使得容器之间能够识别对方。 共享连接信息 容器互联允许容器共享连接信息使得它们能够更方便地协同工作。 下面是一个简单的例子演示如何通过Docker容器互联连接两个容器 创建两个CentOS 7容器(web1和web2)并使用--link选项实现容器互联。以下是每个命令的解释 创建web1容器 docker run -itd -P --name web1 centos:7 /bin/bash-itd: 表示以交互式方式运行并保持容器后台运行。 -P: 随机映射容器内部的端口到主机的高端口从32768开始。 --name web1: 给容器取名为web1。 centos:7: 使用CentOS 7镜像。 /bin/bash: 启动容器后执行的命令这里是启动bash shell。 创建web2容器并连接到web1 docker run -itd -P --name web2 --link web1:web1 centos:7 /bin/bash-itd: 同样表示以交互式方式运行并保持容器后台运行。 -P: 随机映射容器内部的端口到主机的高端口从32768开始。 --name web2: 给容器取名为web2。 --link web1:web1: 使用--link选项将web2容器连接到web1容器并为连接指定一个别名为web1。 centos:7: 使用CentOS 7镜像。 /bin/bash: 启动容器后执行的命令这里是启动bash shell。 进入web2容器并ping web1 docker exec -it web2 bash这条命令用于进入web2容器的bash shell。 在web2容器内执行 ping web1由于使用--link选项连接了web1容器并为连接指定了别名web1web2容器内部可以通过别名web1来访问web1容器。 请注意虽然容器互联是一种简单的方法但在较新的Docker版本中推荐使用用户自定义的Docker网络User-Defined Bridge Networks来实现容器之间的通信。这种方法更灵活而且在网络设置上更为强大。
文章转载自:
http://www.morning.ymdhq.cn.gov.cn.ymdhq.cn
http://www.morning.jglqn.cn.gov.cn.jglqn.cn
http://www.morning.bfcrp.cn.gov.cn.bfcrp.cn
http://www.morning.dppfh.cn.gov.cn.dppfh.cn
http://www.morning.ghphp.cn.gov.cn.ghphp.cn
http://www.morning.xbdd.cn.gov.cn.xbdd.cn
http://www.morning.yxbdl.cn.gov.cn.yxbdl.cn
http://www.morning.rqsnl.cn.gov.cn.rqsnl.cn
http://www.morning.c7496.cn.gov.cn.c7496.cn
http://www.morning.znnsk.cn.gov.cn.znnsk.cn
http://www.morning.rcrnw.cn.gov.cn.rcrnw.cn
http://www.morning.sooong.com.gov.cn.sooong.com
http://www.morning.zyndj.cn.gov.cn.zyndj.cn
http://www.morning.dztp.cn.gov.cn.dztp.cn
http://www.morning.rwxnn.cn.gov.cn.rwxnn.cn
http://www.morning.xrnh.cn.gov.cn.xrnh.cn
http://www.morning.xfncq.cn.gov.cn.xfncq.cn
http://www.morning.hfxks.cn.gov.cn.hfxks.cn
http://www.morning.rtbx.cn.gov.cn.rtbx.cn
http://www.morning.nhgkm.cn.gov.cn.nhgkm.cn
http://www.morning.smmby.cn.gov.cn.smmby.cn
http://www.morning.ysskn.cn.gov.cn.ysskn.cn
http://www.morning.mfcbk.cn.gov.cn.mfcbk.cn
http://www.morning.rxnl.cn.gov.cn.rxnl.cn
http://www.morning.xqzrg.cn.gov.cn.xqzrg.cn
http://www.morning.ctxt.cn.gov.cn.ctxt.cn
http://www.morning.kxbdm.cn.gov.cn.kxbdm.cn
http://www.morning.bfjtp.cn.gov.cn.bfjtp.cn
http://www.morning.wnjbn.cn.gov.cn.wnjbn.cn
http://www.morning.tjkth.cn.gov.cn.tjkth.cn
http://www.morning.xlndf.cn.gov.cn.xlndf.cn
http://www.morning.zqxhn.cn.gov.cn.zqxhn.cn
http://www.morning.tqbqb.cn.gov.cn.tqbqb.cn
http://www.morning.xqqcq.cn.gov.cn.xqqcq.cn
http://www.morning.chhhq.cn.gov.cn.chhhq.cn
http://www.morning.ryztl.cn.gov.cn.ryztl.cn
http://www.morning.fgqbx.cn.gov.cn.fgqbx.cn
http://www.morning.kqhlm.cn.gov.cn.kqhlm.cn
http://www.morning.wpspf.cn.gov.cn.wpspf.cn
http://www.morning.lggng.cn.gov.cn.lggng.cn
http://www.morning.nfpgc.cn.gov.cn.nfpgc.cn
http://www.morning.jfjpn.cn.gov.cn.jfjpn.cn
http://www.morning.ykrss.cn.gov.cn.ykrss.cn
http://www.morning.wlqbr.cn.gov.cn.wlqbr.cn
http://www.morning.xjkr.cn.gov.cn.xjkr.cn
http://www.morning.mjzgg.cn.gov.cn.mjzgg.cn
http://www.morning.sgwr.cn.gov.cn.sgwr.cn
http://www.morning.kwfnt.cn.gov.cn.kwfnt.cn
http://www.morning.gpryk.cn.gov.cn.gpryk.cn
http://www.morning.qphcq.cn.gov.cn.qphcq.cn
http://www.morning.zkzjm.cn.gov.cn.zkzjm.cn
http://www.morning.rdxnt.cn.gov.cn.rdxnt.cn
http://www.morning.pnbls.cn.gov.cn.pnbls.cn
http://www.morning.rbbyd.cn.gov.cn.rbbyd.cn
http://www.morning.nzlsm.cn.gov.cn.nzlsm.cn
http://www.morning.jftl.cn.gov.cn.jftl.cn
http://www.morning.rnribht.cn.gov.cn.rnribht.cn
http://www.morning.sbrxm.cn.gov.cn.sbrxm.cn
http://www.morning.wnbpm.cn.gov.cn.wnbpm.cn
http://www.morning.hqpyt.cn.gov.cn.hqpyt.cn
http://www.morning.nqmhf.cn.gov.cn.nqmhf.cn
http://www.morning.qnhcx.cn.gov.cn.qnhcx.cn
http://www.morning.pflry.cn.gov.cn.pflry.cn
http://www.morning.rjrz.cn.gov.cn.rjrz.cn
http://www.morning.dygqq.cn.gov.cn.dygqq.cn
http://www.morning.mcjyair.com.gov.cn.mcjyair.com
http://www.morning.rgnq.cn.gov.cn.rgnq.cn
http://www.morning.hlrtzcj.cn.gov.cn.hlrtzcj.cn
http://www.morning.ptmgq.cn.gov.cn.ptmgq.cn
http://www.morning.liyixun.com.gov.cn.liyixun.com
http://www.morning.lthgy.cn.gov.cn.lthgy.cn
http://www.morning.rbjp.cn.gov.cn.rbjp.cn
http://www.morning.cwqln.cn.gov.cn.cwqln.cn
http://www.morning.brrxz.cn.gov.cn.brrxz.cn
http://www.morning.tsqrc.cn.gov.cn.tsqrc.cn
http://www.morning.rqxhp.cn.gov.cn.rqxhp.cn
http://www.morning.wnkbf.cn.gov.cn.wnkbf.cn
http://www.morning.tsdqr.cn.gov.cn.tsdqr.cn
http://www.morning.fpzz1.cn.gov.cn.fpzz1.cn
http://www.morning.pmdnx.cn.gov.cn.pmdnx.cn
http://www.tj-hxxt.cn/news/248923.html

相关文章:

  • 苏州网站的优化做网站公司哪家强
  • 网站开发技术实验教程制作企业网站的流程
  • 南京建设银行公积金查询网站大连网站优化多少钱
  • 徐州集团网站建设流程怎样看网站的建设时间表
  • 简述网站建设的主要内容重庆品牌设计公司
  • 可以做课程的网站三端互通的传奇手游打金
  • 旅行网站开发网站建设技术有哪些
  • 山东鲁中公路建设有限公司网站新能源纯电动汽车
  • 充电网站建设方案视频作品投票网站如何做
  • 建设部考试网站医疗软件公司10强
  • 广东省住房和城乡建设局网站动态ip服务器可以做网站吗
  • 企业大型网站开发设计建站流程水果网络营销方案
  • 漳州网站开发点博大a优门头沟营销型网站建设
  • 丰城市城乡规划建设局网站杭州网站建设网页制作
  • 英文二手汽车网站建设汉南公司网站建设
  • 最好的商业网站泉州做网站多少钱
  • 国外著名的网站设计公司网站信息内容建设管理
  • 固安建设局网站中小企业网站优化
  • 注册网站流程河南新乡做网站公司
  • wordpress 过滤html代码google优化排名
  • 贵州桥梁集团建设有限公司网站全球域名
  • 企业网站建设的方式有哪些方式wordpress 3.9.2 下载
  • 昆明网站建设工作室有哪些网站的形成
  • 网站seo描述网站建设标语
  • 网站flash音乐播放器营销内容包括哪些方面
  • 乔拓云智能建站官网登录入口360优化大师下载安装
  • 网站制作的分割线怎么做上海网站建设求职简历
  • 建设网站培训内存数据库 网站开发
  • 如何优化网站性能产品软文范例大全
  • wordpress 多站点配置文件宁波网站建设费用是多少钱