做网站数据分析架构,重庆公司建网站流程,网页设计师是什么意思,网站建设项目预算文章目录 一、容器指令1.运行2.启动/停止/重启3.暂停/恢复4.删除 二、生命周期三、资源限制1.内存限额2.CPU限额3.磁盘读写带宽限额 四、cgroup和namespace五、常用命令 一、容器指令
1.运行
按用途容器大致可分为两类#xff1a;服务类容器和工具类的容器。
服务类容器服务类容器和工具类的容器。
服务类容器
服务类容器以daemon的形式运行对外提供服务比如Web Server、数据库等。 通过 -d以后台方式启动这类容器是非常合适的。 如果要排查问题可以通过exec -it进入容器。
创建并启动
docker run -d webserver-image以交互方式启动一个已经创建了的容器
docker exec -it webserver-image /bin/bash工具类容器
工具类容器通常能给我们提供一个临时的工作环境通常以run -it方式运行。执行exit退出终端同时容器停止。 工具类容器多使用基础镜像例如busybox、debian、ubuntu等。
创建并启动
docker run -it ubuntu /bin/bashrestart参数
docker run -d --restartalways webserver-image--restartalways意味着无论容器因何种原因退出包括正常退出都立即重启该参数的形式还可以是 --restarton-failure:3意思是如果启动进程退出代码非0则重启容器最多重启3次
2.启动/停止/重启
当你使用 Docker 时你会频繁地需要停止、启动和重启容器。以下是这些操作的详细说明 停止容器 (docker stop): 用法docker stop container_name_or_id作用停止指定的容器。Docker 会发送一个 SIGTERM 信号给容器然后等待一定时间默认为10秒让容器进行清理工作。如果容器在这段时间内没有停止Docker 会发送一个 SIGKILL 信号强制终止容器。 启动容器 (docker start): 用法docker start container_name_or_id作用启动之前停止的容器。这个命令会重新启动已经存在的容器不会创建新的容器实例。 重启容器 (docker restart): 用法docker restart container_name_or_id作用重启指定的容器。这个命令会先停止容器然后再启动它。
这些命令可以帮助你有效地管理 Docker 容器的生命周期让你能够灵活地控制容器的运行状态。
3.暂停/恢复
当你使用 Docker 时你可能会需要暂停和恢复容器的运行。以下是 docker pause 和 docker unpause 命令的详细说明 暂停容器 (docker pause): 用法docker pause container_name_or_id作用暂停指定的容器。这个命令会暂停容器内所有的进程使其停止运行。暂停后容器内的所有进程都会被挂起直到使用 docker unpause 命令来恢复它们的运行。 恢复容器 (docker unpause): 用法docker unpause container_name_or_id作用恢复之前暂停的容器。这个命令会使被暂停的容器内的所有进程恢复运行。
这些命令可以帮助你在需要时暂停和恢复容器的运行让你能够更灵活地控制容器的状态。
4.删除
docker rm 命令用于删除一个或多个已经停止的容器。以下是该命令的详细说明
用法docker rm container_name_or_id作用删除指定的容器。如果要删除多个容器可以在命令中列出它们的名称或 ID。示例docker rm my_container 或 docker rm container1 container2注意要删除正在运行的容器需要先停止它们然后再使用 docker rm 命令删除。
这个命令可以帮助你清理不再需要的容器释放系统资源。在使用之前请确保你真的不再需要这些容器因为删除后将无法恢复。
docker rm是删除容器而docker rmi是删除镜像。
二、生命周期
Docker 容器的生命周期包括以下几种状态的切换 创建Created当你使用 docker create 命令创建一个容器时容器就处于创建状态。在这个阶段容器已经被创建但还没有被启动。 启动Running当你使用 docker start 命令启动一个已经创建的容器时容器就会进入运行状态。在这个阶段容器内的进程正在运行。 暂停Paused你可以使用 docker pause 命令来暂停一个正在运行的容器使得容器内的所有进程都会被挂起。 恢复Unpaused使用 docker unpause 命令可以恢复一个被暂停的容器使得容器内的进程继续运行。 停止Stopped当你使用 docker stop 命令停止一个运行中的容器时容器会进入停止状态。在这个阶段容器内的进程会被发送 SIGTERM 信号然后等待一段时间后被强制终止。 删除Deleted使用 docker rm 命令可以删除一个已经停止的容器释放其占用的系统资源。
这些状态之间的切换反映了容器在其生命周期中的不同阶段理解这些状态的切换有助于更好地管理和维护 Docker 容器。
三、资源限制
1.内存限额
容器可使用的内存包括两部分物理内存和swap。
-m或 --memory设置内存的使用限额例如100MB,2GB。默认情况下值为-1即无上限。 --memory-swap设置内存swap的使用限额。默认情况下值为-1即无上限。如果在启动容器时只指定 -m而不指定 --memory-swap那么 --memory-swap默认为 -m的两倍。 --vm启动内存工作线程数量。 --vm-bytes每个线程分配多大内存
示例
docker run -it -m 200M --memory-swap300M progrium/stress --vm 1--vm-bytes 280M2.CPU限额
默认设置下所有容器可以平等地使用host CPU资源并且没有限制。 Docker可以通过 -c或 --cpu-shares设置容器使用CPU的权重。如果不指定默认值为1024。
与内存限额不同通过 -c设置的cpu share是一个相对的权重值。某个容器最终能分配到的CPU资源取决于它的cpu share占所有容器cpu share总和的比例。
示例 containerA的cpu share 1024是containerB的两倍。当两个容器都需要CPU资源时containerA可以得到的CPU是containerB的两倍。
docker run --name container_A -c 1024 ubuntu docker run --name container_B -c 512 ubuntu3.磁盘读写带宽限额
bps是byte per second每秒读写的数据量。 iops是io per second每秒IO的次数。
可通过以下参数控制容器的bps和iops ● --device-read-bps限制读某个设备的bps。 ● --device-write-bps限制写某个设备的bps。 ● --device-read-iops限制读某个设备的iops。 ● --device-write-iops限制写某个设备的iops。
示例 限制容器对 /dev/sda 设备的写入带宽为 1MB/s。
docker run --device-write-bps/dev/sda:1mb my_container还可以通过设置 --blkio-weight参数来改变容器block IO的优先级。 –blkio-weight与 --cpu-shares类似设置的是相对权重值默认为500。 在下面的例子中containerA读写磁盘的带宽是containerB的两倍。
示例
docker run -it --name container_A --blkio-weight 600 ubuntu docker run -it --name container_B --blkio-weight 300 ubuntu四、cgroup和namespace
Docker 使用了 Linux 内核提供的两个重要特性来实现容器化cgroupControl Groups和 namespace。以下是对它们的详细说明 cgroup控制组 cgroup 是 Linux 内核提供的一种机制用于限制、账户和隔离一个或多个进程的资源使用。通过 cgroup你可以限制容器对 CPU、内存、磁盘 I/O 等资源的使用。在 Docker 中cgroup 被用来限制容器的资源使用例如限制 CPU 使用率、内存使用量、磁盘 I/O 带宽等。通过 cgroupDocker 可以确保容器在运行时不会过度占用宿主机的资源从而实现资源的隔离和管理。 namespace命名空间 namespace 是 Linux 内核提供的另一种机制用于隔离系统资源使得在一个命名空间中的进程看到的资源与其他命名空间中的进程是隔离的。在 Docker 中namespace 被用来隔离容器的进程空间、网络空间、文件系统空间等。每个容器都有自己独立的命名空间使得它们看到的系统资源是隔离的。通过 namespaceDocker 可以实现容器的隔离使得每个容器都拥有自己独立的运行环境互相之间不会产生影响。
综合起来cgroup 和 namespace 是 Docker 实现容器化的重要基础它们使得 Docker 能够实现资源的隔离、管理和容器的隔离运行。
五、常用命令
最后总结一下docker容器的常用命令 create创建容器 用法docker create [OPTIONS] IMAGE [COMMAND] [ARG...]说明使用指定的镜像创建一个新的容器但不启动它。 run运行容器 用法docker run [OPTIONS] IMAGE [COMMAND] [ARG...]说明创建并启动一个新的容器可以指定各种选项和参数。 pause暂停容器 用法docker pause CONTAINER说明暂停指定的容器内所有的进程。 unpause取消暂停继续运行容器 用法docker unpause CONTAINER说明取消暂停指定的容器使得容器内的进程继续运行。 stop发送SIGTERM停止容器 用法docker stop [OPTIONS] CONTAINER说明发送 SIGTERM 信号停止指定的容器等待一定时间后再发送 SIGKILL 信号强制停止。 kill发送SIGKILL快速停止容器 用法docker kill [OPTIONS] CONTAINER说明发送 SIGKILL 信号快速停止指定的容器。 start启动容器 用法docker start [OPTIONS] CONTAINER说明启动之前停止的容器。 restart重启容器 用法docker restart [OPTIONS] CONTAINER说明重启指定的容器。 attachattach到容器启动进程的终端 用法docker attach [OPTIONS] CONTAINER说明attach 到正在运行的容器中的主进程的标准输入、输出和错误输出。 exec在容器中启动新进程通常使用-it参数 用法docker exec [OPTIONS] CONTAINER COMMAND [ARG...]说明在运行的容器中执行新的命令。 logs显示容器启动进程的控制台输出用-f持续打印 用法docker logs [OPTIONS] CONTAINER说明获取容器的日志输出使用 -f 选项可以持续地打印日志。 rm从磁盘中删除容器 用法docker rm [OPTIONS] CONTAINER说明删除指定的容器释放其占用的磁盘空间。
这些命令涵盖了 Docker 容器的创建、管理、运行和监控等方方面面是使用 Docker 进行容器化应用开发和部署的重要工具。