云原生系列 【轻松入门容器基础操作】
✅作者简介:
CSDN 内容合伙人,全栈领域新星创作者,阿里云专家博主,华为云云 享专家博主,掘金后端评审团成员
💕前言:
最近云原生领域热火朝天,那么云原生是什么?何为云原生?云原生用来干什么的?今天学长通过华为的沙箱实验操作带领大家走进“云”时代~~
目录
4. 容器生命周期管理收起
4.1 容器生命周期
(1)运行一个 centos 容器。
(2)运行另外一个 centos 容器,并在容器内运行命令保持容器运行状态:
(3)docker attach 进入容器。
注意:请使用第(2)步中的标红框的容器 ID 替换命令中的【容器 ID】,后续都用此 ID 进行替换。
执行完命令后,可以看到此容器已开始输出“hello world” (4)完成后,在实验室桌面上打开一个新的终端,并参照 1.1 步骤完成弹性云服务器 ECS 的登录。 (5)码头工人暂停和码头工人取消暂停:
说明:容器状态变更为 Paused,并且此容器已停止输出“hello world”。
说明:容器状态恢复正常,在第一个终端可以查看到容器恢复输出“hello world”。 (6)码头工人停止和码头工人启动:
说明:容器状态变更为 Exited,并且已经无法在 docker container ls 命令中查询到该容器,必须配合-a 参数才能查询到。
(7)docker exec 进入容器。
说明:docker exec 需要配合-it 参数在容器内分配交互式终端,此时需要指明在容器内启动终端类型,常见类型有 sh 和 bash。 可以在容器内完成一些简单的命令操作,最后使用 exit 命令退出容器。
(8)docker cp 命令实现宿主机与容器之间的文件拷贝。
docker exec 进入容器,并验证文件拷贝成功,输入 exit 退出容器。
(9)docker rm 删除容器。
说明:docker rm 删除容器前,需要停止容器,也可通过-f 参数强制删除容器。 (10)docker rmi 删除容器镜像。
注意:请使用上一个命令的 nginx IMAGE ID 替换该下个命令中的【容器镜像 ID】。
说明:如果容器镜像正在被容器使用时没法删除,需要删除所有关联容器之后才可删除容器镜像。
4.2 容器资源限额
①运行一个压力测试容器,实践容器内存分配限额。
注意:出现上图,Ctrl+c 结束
说明:stress 是一个集成 Linux 压测实测工具的容器,可以实现对 CPU、memory、IO 等资源的压力测试。 (2)运行一个压力测试容器,实践容器内存和 swap 分配限额。
注意:Ctrl+c 结束
(3)运行一个压力测试容器,实践容器 CPU 使用限额。
运行压力容器后,从实验室桌面再打开一个新的操作终端(参考 1.1 步骤重新登录弹性云服务器 ECS),运行 top 命令,可以看到该容器的 CPU 利用率被限制在 60%。
(4)在新终端 Ctrl+c 后,然后运行压力测试容器,实践容器 CPU 权重限额。
依次运行三个压力测试容器,让宿主机 CPU 使用出现竞争。
如果在操作终端运行 top 命令, 可以看到三个容器的 CPU 利用率满足权重比例。
注意:后续在此终端上操作,请关闭其他已打开终端!
(5)ctrl+c 结束后,运行一个测试容器,实践容器 IO 限额。
运行测试容器,同时利用-it 参数在运行容器同时分配操作终端。在容器内利用 dd 命令测试磁盘的写能力,可以看到容器内磁盘写入带宽满足 IO 限额。
4.3 退出当前容器,删除本节实验所涉及到的容器
依次删除该步骤涉及到的容器。
4.4 C 组
(1)运行压力测试容器,验证内存限额 cgroup 配置。 运行压力测试容器,配置其内存和 swap 分配限额。
按照容器 ID,查询 cgroup 内存子系统验证其内存限额配置。(cgroup 内存子系统所在路径为/sys/fs/cgroup/memory/docker/容器长 ID/)内存限额配置在 memory.limit_in_bytes 和 memory.memsw.limit_in_bytes 文件内。
注意:请使用上图中红框内 ID 替换命令中的【容器长 ID】
(2)运行压力测试容器,验证 CPU 使用限额 cgroup 配置。
按照容器 ID,查询 cgroup cpu 子系统验证其 CPU 使用限额配置。(cgroup cpu 子系统所在路径为/sys/fs/cgroup/cpu/docker/容器长 ID/)CPU 使用限额配置在 cpu.cfs_quota_us 和 cpu.cfs_period_us 文件内。
注意:请使用第 2 步查询到的容器长 ID 替换命令中的【容器长 ID】
(3)运行压力测试容器,验证 CPU 权重限额 cgroup 配置。
依次运行三个压力测试容器,让宿主机 CPU 使用出现竞争,并配置其各自 CPU 权重。
按照容器 ID,查询 cgroup cpu 子系统验证其 CPU 权重限额配置。(cgroup cpu 子系统所在路径为/sys/fs/cgroup/cpu/docker/容器长 ID/)CPU 权重限额配置在 cpu.shares 文件内。
注意:请依次替换容器长 ID 替换命令中的【容器长 ID】
查询三次不同的结果分别显示 2048,1024,512。
(4)运行测试容器,验证 IO 限额 cgroup 配置。
运行测试容器,配置 IO 写入带宽限额。按照容器 ID,查询 cgroup blkio 子系统验证其 IO 写入带宽限额配置。(cgroup blkio 子系统所在路径为/sys/fs/cgroup/blkio/)IO 写入带宽限额配置在 blkio.throttle.write_bps_device 文件内。
说明:此文件内的 253:0 是/dev/VDA 的设备号,可以在宿主机通过 lsblk 命令查询。
其中 MAJ 为主设备号(Major),MIN 为次设备号(Minor)。
4.5 退出当前容器,删除本节实验所涉及到的容器
依次删除该步骤涉及到的容器。
4.6 命名空间
(1)UTS Namespace 创建测试容器,分别在容器和宿主机验证主机名。
说明:此处-h 参数设置容器主机名。 docker exec 进入容器验证容器主机名。
退出容器,验证宿主机主机名。
(2)PID Namespace docker exec 命令进入容器验证容器进程信息。
退出容器,验证宿主机进程信息。
(3)User Namespace 运行测试容器,在容器内创建用户。退出容器,然后在宿主机验证用户名信息。
退出容器,在宿主机验证该用户名信息。
\5. 容器网络收起
5.1 容器网络模型
(1)运行一个容器,配置其网络模型为 host 并验证。
在容器内查看网络信息。
退出容器,在宿主机验证网络信息。
说明:当容器使用 host 网络模型,容器和宿主机共享网络命名空间,因此网络信息完全一致。
(2)运行一个容器,配置其网络模型为 bridge 并验证。
说明:当使用默认 docker0 网桥时,--network=bridge 可省略不写。 (3)查看 docker0 网桥信息,验证容器网络信息配置。
5.2 删除本节实验所涉及到的容器
依次删除该步骤涉及到的容器。
5.3 Docker bridge 网络
①创建用户自定义网桥并指定子网和网关。
如图所示,返回网络 ID。 查看网桥信息。
注意:请使用前一步返回的网络 ID 替换命令中的【网络 ID】。
②运行容器并挂载到第一步的自定义网桥。
(3)运行一个容器挂载在默认 docker0 网桥,再挂载到第一步的自定义网桥。
注意:请使用第一步返回的网络 ID 替换命令中的【网络 ID】,使用第三步返回的容器 ID 替换命令中的容器 ID。
④验证第三步中的容器和第二步中的容器互通性。
注意:请使用第三步返回的容器 ID 替换命令中的【容器 ID】,使用第二步中的 IP Address 替换命令中的【容器 IP】。
5.4 退出当前容器,删除本节实验所涉及到的容器。
依次删除该步骤涉及到的容器。
版权声明: 本文为 InfoQ 作者【叶秋学长】的原创文章。
原文链接:【http://xie.infoq.cn/article/febbc8598eea9f3e0464ea3df】。未经作者许可,禁止转载。
评论