diff --git a/content/zh/docs/A-Tune/A-Tune.md b/content/zh/docs/A-Tune/A-Tune.md new file mode 100644 index 0000000000000000000000000000000000000000..6fa93cc924a7466b2baedc7db9b3d611b18be8b9 --- /dev/null +++ b/content/zh/docs/A-Tune/A-Tune.md @@ -0,0 +1 @@ +本文档介绍openEuler系统性能自优化软件A-Tune的安装部署和使用方法,以指导用户快速了解并使用A-Tune。 \ No newline at end of file diff --git a/content/zh/docs/A-Tune/analysis.md b/content/zh/docs/A-Tune/analysis.md new file mode 100644 index 0000000000000000000000000000000000000000..d6263be507075d6a800b7c00bd688024d4f53fd2 --- /dev/null +++ b/content/zh/docs/A-Tune/analysis.md @@ -0,0 +1,45 @@ +# analysis + +## 功能描述 + +采集系统的实时统计数据进行负载类型识别,并进行自动优化。 + +## 命令格式 + +**atune-adm analysis** \[OPTIONS\] + +## 参数说明 + +- OPTIONS + + + + + + + + + + +

参数

+

描述

+

--model, -m

+

用户自训练产生的新模型

+
+ + +## 使用示例 + +- 使用默认的模型进行分类识别 + + ``` + # atune-adm analysis + ``` + +- 使用自训练的模型进行识别 + + ``` + # atune-adm analysis --model /usr/libexec/atuned/analysis/models/new-model.m + ``` + + diff --git a/content/zh/docs/A-Tune/check.md b/content/zh/docs/A-Tune/check.md new file mode 100644 index 0000000000000000000000000000000000000000..3baa376ddc4714e1e002019d4f40b84c86be2e54 --- /dev/null +++ b/content/zh/docs/A-Tune/check.md @@ -0,0 +1,32 @@ +# check + +## 功能描述 + +检查系统当前的cpu、bios、os、网卡等信息。 + +## 命令格式 + +**atune-adm check** + +## 使用示例 + +``` +# atune-adm check + cpu information: + cpu:0 version: Kunpeng 920-6426 speed: 2600000000 HZ cores: 64 + cpu:1 version: Kunpeng 920-6426 speed: 2600000000 HZ cores: 64 + system information: + DMIBIOSVersion: 0.59 + OSRelease: 4.19.36-vhulk1906.3.0.h356.eulerosv2r8.aarch64 + network information: + name: eth0 product: HNS GE/10GE/25GE RDMA Network Controller + name: eth1 product: HNS GE/10GE/25GE Network Controller + name: eth2 product: HNS GE/10GE/25GE RDMA Network Controller + name: eth3 product: HNS GE/10GE/25GE Network Controller + name: eth4 product: HNS GE/10GE/25GE RDMA Network Controller + name: eth5 product: HNS GE/10GE/25GE Network Controller + name: eth6 product: HNS GE/10GE/25GE RDMA Network Controller + name: eth7 product: HNS GE/10GE/25GE Network Controller + name: docker0 product: +``` + diff --git a/content/zh/docs/A-Tune/collection.md b/content/zh/docs/A-Tune/collection.md new file mode 100644 index 0000000000000000000000000000000000000000..60d34af41b233f24442c9dbab14050a3ec935da0 --- /dev/null +++ b/content/zh/docs/A-Tune/collection.md @@ -0,0 +1,70 @@ +# collection + +## 功能描述 + +采集业务运行时系统的全局资源使用情况以及OS的各项状态信息,并将收集的结果保存到csv格式的输出文件中,作为模型训练的输入数据集。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>- 本命令依赖采样工具perf,mpstat,vmstat,iostat,sar。 +>- CPU型号目前仅支持鲲鹏920,可通过dmidecode -t processor检查CPU型号。 + +## 命令格式 + +**atune-adm collection** + +## 参数说明 + +- OPTIONS + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

参数

+

描述

+

--filename, -f

+

生成的用于训练的csv文件名:名称-时间戳.csv

+

--output_path, -o

+

生成的csv文件的存放路径,需提供绝对路径

+

--disk, -b

+

业务运行时实际使用的磁盘,如/dev/sda

+

--network, -n

+

业务运行时使用的网络接口,如eth0

+

--workload_type, -t

+

标记业务的负载类型,作为训练时使用的标签

+

--duration, -d

+

业务运行时采集数据的时间,单位秒,默认采集时间1200秒

+

--interval,-i

+

采集数据的时间间隔,单位秒,默认采集间隔5秒

+
+ + +## 使用示例 + +``` +# atune-adm collection --filename name --interval 5 --duration 1200 --output_path /home/data --disk sda --network eth0 --workload_type test_type +``` + diff --git a/content/zh/docs/A-Tune/define.md b/content/zh/docs/A-Tune/define.md new file mode 100644 index 0000000000000000000000000000000000000000..610ef8a0179b46a58dadf35b3cf08f4ce29c9fb8 --- /dev/null +++ b/content/zh/docs/A-Tune/define.md @@ -0,0 +1,49 @@ +# define + +## 功能描述 + +添加用户自定义的workload\_type,及对应的profile优化项。 + +## 命令格式 + +**atune-adm define** + +## 使用示例 + +新增一个workload type,workload type的名称为test\_type,profile name的名称为test\_name,优化项的配置文件为example.conf。 + +``` +# atune-adm define test_type test_name ./example.conf +``` + +example.conf 可以参考如下方式书写(以下各优化项非必填,仅供参考),也可通过**atune-adm info**查看已有的profile是如何书写的。 + +``` +[main] +# list its parent profile +[tip] +# the recommended optimization, which should be performed manunaly +[check] +# check the environment +[affinity.irq] +# to change the affinity of irqs +[affinity.task] +# to change the affinity of tasks +[bios] +# to change the bios config +[bootloader.grub2] +# to change the grub2 config +[kernel_config] +# to change the kernel config +[script] +# the script extention of cpi +[sysctl] +# to change the /proc/sys/* config +[sysfs] +# to change the /sys/* config +[systemctl] +# to change the system service config +[ulimit] +# to change the resources limit of user +``` + diff --git a/content/zh/docs/A-Tune/figures/zh-cn_image_0213178479.png b/content/zh/docs/A-Tune/figures/zh-cn_image_0213178479.png new file mode 100644 index 0000000000000000000000000000000000000000..d245d48dc07e2b01734e21ec1952e89fa9269bdb Binary files /dev/null and b/content/zh/docs/A-Tune/figures/zh-cn_image_0213178479.png differ diff --git a/content/zh/docs/Virtualization/figures/zh-cn_image_0183148773.png b/content/zh/docs/A-Tune/figures/zh-cn_image_0213178480.png similarity index 100% rename from content/zh/docs/Virtualization/figures/zh-cn_image_0183148773.png rename to content/zh/docs/A-Tune/figures/zh-cn_image_0213178480.png diff --git a/content/zh/docs/A-Tune/figures/zh-cn_image_0214540398.png b/content/zh/docs/A-Tune/figures/zh-cn_image_0214540398.png new file mode 100644 index 0000000000000000000000000000000000000000..cea2292307b57854aa629ec102a5bc1b16d244a0 Binary files /dev/null and b/content/zh/docs/A-Tune/figures/zh-cn_image_0214540398.png differ diff --git a/content/zh/docs/A-Tune/figures/zh-cn_image_0227497000.png b/content/zh/docs/A-Tune/figures/zh-cn_image_0227497000.png new file mode 100644 index 0000000000000000000000000000000000000000..db9b5ce8b6d211d54ea36930504cca415ddfb8ca Binary files /dev/null and b/content/zh/docs/A-Tune/figures/zh-cn_image_0227497000.png differ diff --git a/content/zh/docs/A-Tune/figures/zh-cn_image_0227497343.png b/content/zh/docs/A-Tune/figures/zh-cn_image_0227497343.png new file mode 100644 index 0000000000000000000000000000000000000000..6db5a0793fe3068c7519d9a157abc856560e71b2 Binary files /dev/null and b/content/zh/docs/A-Tune/figures/zh-cn_image_0227497343.png differ diff --git a/content/zh/docs/A-Tune/figures/zh-cn_image_0231122163.png b/content/zh/docs/A-Tune/figures/zh-cn_image_0231122163.png new file mode 100644 index 0000000000000000000000000000000000000000..0a19e61233edce44c9ccfa4d8bb806238babb187 Binary files /dev/null and b/content/zh/docs/A-Tune/figures/zh-cn_image_0231122163.png differ diff --git a/content/zh/docs/A-Tune/info.md b/content/zh/docs/A-Tune/info.md new file mode 100644 index 0000000000000000000000000000000000000000..97f826accf66f1ae2d73e50a3f1a943bff8ca056 --- /dev/null +++ b/content/zh/docs/A-Tune/info.md @@ -0,0 +1,95 @@ +# info + +## 功能描述 + +查看workload\_type对应的profile内容。 + +## 命令格式 + +**atune-adm info** _ + +## 使用示例 + +查看webserver的profile内容: + +``` +# atune-adm info webserver + +*** ssl_webserver: + +# +# webserver tuned configuration +# +[main] +#TODO CONFIG + +[kernel_config] +#TODO CONFIG + +[bios] +#TODO CONFIG + +[sysfs] +#TODO CONFIG + +[sysctl] +fs.file-max=6553600 +fs.suid_dumpable = 1 +fs.aio-max-nr = 1048576 +kernel.shmmax = 68719476736 +kernel.shmall = 4294967296 +kernel.shmmni = 4096 +kernel.sem = 250 32000 100 128 +net.ipv4.tcp_tw_reuse = 1 +net.ipv4.tcp_syncookies = 1 +net.ipv4.ip_local_port_range = 1024 65500 +net.ipv4.tcp_max_tw_buckets = 5000 +net.core.somaxconn = 65535 +net.core.netdev_max_backlog = 262144 +net.ipv4.tcp_max_orphans = 262144 +net.ipv4.tcp_max_syn_backlog = 262144 +net.ipv4.tcp_timestamps = 0 +net.ipv4.tcp_synack_retries = 1 +net.ipv4.tcp_syn_retries = 1 +net.ipv4.tcp_fin_timeout = 1 +net.ipv4.tcp_keepalive_time = 60 +net.ipv4.tcp_mem = 362619 483495 725238 +net.ipv4.tcp_rmem = 4096 87380 6291456 +net.ipv4.tcp_wmem = 4096 16384 4194304 +net.core.wmem_default = 8388608 +net.core.rmem_default = 8388608 +net.core.rmem_max = 16777216 +net.core.wmem_max = 16777216 + +[systemctl] +sysmonitor=stop +irqbalance=stop + +[bootloader.grub2] +selinux=0 +iommu.passthrough=1 + +[tip] +bind your master process to the CPU near the network = affinity +bind your network interrupt to the CPU that has this network = affinity +relogin into the system to enable limits setting = OS + +[script] +openssl_hpre = 0 +prefetch = off + +[ulimit] +{user}.hard.nofile = 102400 +{user}.soft.nofile = 102400 + +[affinity.task] +#TODO CONFIG + +[affinity.irq] +#TODO CONFIG + +[check] +#TODO CONFIG + +``` + diff --git a/content/zh/docs/A-Tune/list.md b/content/zh/docs/A-Tune/list.md new file mode 100644 index 0000000000000000000000000000000000000000..8bf3a6918545e636d61c9fe6d67c6ec8684710c9 --- /dev/null +++ b/content/zh/docs/A-Tune/list.md @@ -0,0 +1,43 @@ +# list + +## 功能描述 + +查询系统当前支持的workload\_type和对应的profile,以及当前处于active状态的profile。 + +## 命令格式 + +**atune-adm list** + +## 使用示例 + +``` +# atune-adm list + +Support WorkloadTypes: ++-----------------------------------+------------------------+-----------+ +| WorkloadType | ProfileName | Active | ++===================================+========================+===========+ +| default | default | true | ++-----------------------------------+------------------------+-----------+ +| webserver | ssl_webserver | false | ++-----------------------------------+------------------------+-----------+ +| big_database | database | false | ++-----------------------------------+------------------------+-----------+ +| big_data | big_data | false | ++-----------------------------------+------------------------+-----------+ +| in-memory_computing | in-memory_computing | false | ++-----------------------------------+------------------------+-----------+ +| in-memory_database | in-memory_database | false | ++-----------------------------------+------------------------+-----------+ +| single_computer_intensive_jobs | compute-intensive | false | ++-----------------------------------+------------------------+-----------+ +| communication | rpc_communication | false | ++-----------------------------------+------------------------+-----------+ +| idle | default | false | ++-----------------------------------+------------------------+-----------+ + +``` + +>![](public_sys-resources/icon-note.gif) **说明:** +>Active为true表示当前激活的profile,示例表示当前激活的是default类型对应的profile。 + diff --git a/content/zh/docs/A-Tune/profile.md b/content/zh/docs/A-Tune/profile.md new file mode 100644 index 0000000000000000000000000000000000000000..2425f92efb9adc0a3074a8fff6f1cb10080fc2c0 --- /dev/null +++ b/content/zh/docs/A-Tune/profile.md @@ -0,0 +1,22 @@ +# profile + +## 功能描述 + +手动激活workload\_type对应的profile,使得workload\_type处于active状态。 + +## 命令格式 + +**atune-adm profile **_<_WORKLOAD\_TYPE_\>_ + +## 参数说明 + +WORKLOAD\_TYPE支持的类型参考list命令查询结果。 + +## 使用示例 + +激活webserver对应的profile配置。 + +``` +# atune-adm profile webserver +``` + diff --git a/content/zh/docs/A-Tune/public_sys-resources/icon-caution.gif b/content/zh/docs/A-Tune/public_sys-resources/icon-caution.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and b/content/zh/docs/A-Tune/public_sys-resources/icon-caution.gif differ diff --git a/content/zh/docs/A-Tune/public_sys-resources/icon-danger.gif b/content/zh/docs/A-Tune/public_sys-resources/icon-danger.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and b/content/zh/docs/A-Tune/public_sys-resources/icon-danger.gif differ diff --git a/content/zh/docs/A-Tune/public_sys-resources/icon-note.gif b/content/zh/docs/A-Tune/public_sys-resources/icon-note.gif new file mode 100644 index 0000000000000000000000000000000000000000..6314297e45c1de184204098efd4814d6dc8b1cda Binary files /dev/null and b/content/zh/docs/A-Tune/public_sys-resources/icon-note.gif differ diff --git a/content/zh/docs/A-Tune/public_sys-resources/icon-notice.gif b/content/zh/docs/A-Tune/public_sys-resources/icon-notice.gif new file mode 100644 index 0000000000000000000000000000000000000000..86024f61b691400bea99e5b1f506d9d9aef36e27 Binary files /dev/null and b/content/zh/docs/A-Tune/public_sys-resources/icon-notice.gif differ diff --git a/content/zh/docs/A-Tune/public_sys-resources/icon-tip.gif b/content/zh/docs/A-Tune/public_sys-resources/icon-tip.gif new file mode 100644 index 0000000000000000000000000000000000000000..93aa72053b510e456b149f36a0972703ea9999b7 Binary files /dev/null and b/content/zh/docs/A-Tune/public_sys-resources/icon-tip.gif differ diff --git a/content/zh/docs/A-Tune/public_sys-resources/icon-warning.gif b/content/zh/docs/A-Tune/public_sys-resources/icon-warning.gif new file mode 100644 index 0000000000000000000000000000000000000000..6e90d7cfc2193e39e10bb58c38d01a23f045d571 Binary files /dev/null and b/content/zh/docs/A-Tune/public_sys-resources/icon-warning.gif differ diff --git a/content/zh/docs/A-Tune/rollback.md b/content/zh/docs/A-Tune/rollback.md new file mode 100644 index 0000000000000000000000000000000000000000..1636bd126ad251839ef7a2a1b6be5104329d0913 --- /dev/null +++ b/content/zh/docs/A-Tune/rollback.md @@ -0,0 +1,16 @@ +# rollback + +## 功能描述 + +回退当前的配置到系统的初始配置。 + +## 命令格式 + +**atune-adm rollback** + +## 使用示例 + +``` +# atune-adm rollback +``` + diff --git a/content/zh/docs/A-Tune/train.md b/content/zh/docs/A-Tune/train.md new file mode 100644 index 0000000000000000000000000000000000000000..bd1f908154a7d4891a1b4b4a94b439018115242b --- /dev/null +++ b/content/zh/docs/A-Tune/train.md @@ -0,0 +1,43 @@ +# train + +## 功能描述 + +使用采集的数据进行模型的训练。训练时至少采集两种workload\_type的数据,否则训练会出错。 + +## 命令格式 + +**atune-adm train** + +## 参数说明 + +- OPTIONS + + + + + + + + + + + + + +

参数

+

描述

+

--data_path, -d

+

存放模型训练所需的csv文件的目录

+

--output_file, -o

+

训练生成的新模型

+
+ + +## 使用示例 + +使用data目录下的csv文件作为训练输入,生成的新模型new-model.m存放在model目录下。 + +``` +# atune-adm train --data_path /home/data --output_file /usr/libexec/atuned/analysis/models/new-model.m +``` + diff --git a/content/zh/docs/A-Tune/tuning.md b/content/zh/docs/A-Tune/tuning.md new file mode 100644 index 0000000000000000000000000000000000000000..6a4c49835f62668d58bc9ace7e6adbf1b91119d7 --- /dev/null +++ b/content/zh/docs/A-Tune/tuning.md @@ -0,0 +1,465 @@ +# tuning + +## 功能描述 + +使用指定的项目文件对参数进行动态空间的搜索,找到当前环境配置下的最优解。 + +## 命令格式 + +>![](public_sys-resources/icon-note.gif) **说明:** +>在运行命令前,需要满足如下条件: +>1. 编辑好服务端yaml配置文件,且需要服务端管理员将该配置文件放到服务端的/etc/atuned/tuning/目录下。 +>2. 编辑好客户端yaml配置文件并放在客户端任一目录。 + +**atune-adm tuning** \[OPTIONS\] + +## 参数说明 + +- OPTIONS + + + + + + + + + + + + + +

参数

+

描述

+

--restore, -r

+

恢复tuning优化前的初始配置

+

--project, -p

+

指定需要恢复的yaml文件中的项目名称

+
+ + >![](public_sys-resources/icon-note.gif) **说明:** + >当使用参数时,上述两个参数需要同时使用,且-p参数后需要跟具体的项目名称。 + + +- PROJECT\_YAML:客户端yaml配置文件。 + +## 配置说明 + +**表 1** 服务端yaml文件 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

配置名称

+

配置说明

+

参数类型

+

取值范围

+

project

+

项目名称。

+

字符串

+

-

+

startworkload

+

待调优服务的启动脚本。

+

字符串

+

-

+

stopworkload

+

待调优服务的停止脚本。

+

字符串

+

-

+

maxiterations

+

最大调优迭代次数,用于限制客户端的迭代次数。一般来说,调优迭代次数越多,优化效果越好,但所需时间越长。用户必须根据实际的业务场景进行配置。

+

整型

+

>10

+

object

+

需要调节的参数项及信息。

+

object 配置项请参见表2

+

-

+

-

+
+ +**表 2** object项配置说明 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

配置名称

+

配置说明

+

参数类型

+

取值范围

+

name

+

待调参数名称

+

字符串

+

-

+

desc

+

待调参数描述

+

字符串

+

-

+

get

+

查询参数值的脚本

+

-

+

-

+

set

+

设置参数值的脚本

+

-

+

-

+

needrestart

+

参数生效是否需要重启业务

+

枚举

+

"true", "false"

+

type

+

参数的类型,目前支持discrete, continuous两种类型,对应离散型、连续型参数

+

枚举

+

"discrete", "continuous"

+

dtype

+

该参数仅在type为discrete类型时配置,目前支持int和string两种类型

+

枚举

+

int, string

+

scope

+

参数设置范围,仅在type为discrete且dtype为int时或者type为continuous时生效

+

整型

+

用户自定义,取值在该参数的合法范围

+

step

+

参数值步长,dtype为int时使用

+

整型

+

用户自定义

+

items

+

参数值在scope定义范围之外的枚举值,dtype为int时使用

+

整型

+

用户自定义,取值在该参数的合法范围

+

options

+

参数值的枚举范围,dtype为string时使用

+

字符串

+

用户自定义,取值在该参数的合法范围

+

ref

+

参数的推荐初始值

+

整型或字符串

+

用户自定义,取值在该参数的合法范围

+
+ +**表 3** 客户端yaml文件配置说明 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

配置名称

+

配置说明

+

参数类型

+

取值范围

+

project

+

项目名称,需要与服务端对应配置文件中的project匹配

+

字符串

+

-

+

iterations

+

调优迭代次数

+

整型

+

>=10

+

benchmark

+

性能测试脚本

+

-

+

-

+

evaluations

+

性能测试评估指标

+

evaluations 配置项请参见表4

+

-

+

-

+
+ +**表 4** evaluations项配置说明 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

配置名称

+

配置说明

+

参数类型

+

取值范围

+

name

+

评价指标名称

+

字符串

+

-

+

get

+

获取性能评估结果的脚本

+

-

+

-

+

type

+

评估结果的正负类型,positive代表最小化性能值,negative代表最大化对应性能值

+

枚举

+

"positive","negative"

+

weight

+

该指标的权重百分比,0-100

+

整型

+

0-100

+

threshold

+

该指标的最低性能要求

+

整型

+

用户指定

+
+ +## 配置示例 + +服务端yaml文件配置示例: + +``` +project: "example" +maxiterations: 10 +startworkload: "" +stopworkload: "" +object : + - + name : "vm.swappiness" + info : + desc : "the vm.swappiness" + get : "sysctl -a | grep vm.swappiness" + set : "sysctl -w vm.swappiness=$value" + needrestart: "false" + type : "continuous" + scope : + - 0 + - 10 + ref : 1 + - + name : "irqbalance" + info : + desc : "system irqbalance" + get : "systemctl status irqbalance" + set : "systemctl $value sysmonitor;systemctl $value irqbalance" + needrestart: "false" + type : "discrete" + options: + - "start" + - "stop" + dtype : "string" + ref : "start" + - + name : "net.tcp_min_tso_segs" + info : + desc : "the minimum tso number" + get : "cat /proc/sys/net/ipv4/tcp_min_tso_segs" + set : "echo $value > /proc/sys/net/ipv4/tcp_min_tso_segs" + needrestart: "false" + type : "continuous" + scope: + - 1 + - 16 + ref : 2 + - + name : "prefetcher" + info : + desc : "" + get : "cat /sys/class/misc/prefetch/policy" + set : "echo $value > /sys/class/misc/prefetch/policy" + needrestart: "false" + type : "discrete" + options: + - "0" + - "15" + dtype : "string" + ref : "15" + - + name : "kernel.sched_min_granularity_ns" + info : + desc : "Minimal preemption granularity for CPU-bound tasks" + get : "sysctl kernel.sched_min_granularity_ns" + set : "sysctl -w kernel.sched_min_granularity_ns=$value" + needrestart: "false" + type : "continuous" + scope: + - 5000000 + - 50000000 + ref : 10000000 + - + name : "kernel.sched_latency_ns" + info : + desc : "" + get : "sysctl kernel.sched_latency_ns" + set : "sysctl -w kernel.sched_latency_ns=$value" + needrestart: "false" + type : "continuous" + scope: + - 10000000 + - 100000000 + ref : 16000000 + +``` + +客户端yaml文件配置示例: + +``` +project: "example" +iterations : 10 +benchmark : "sh /home/Benchmarks/mysql/tunning_mysql.sh" +evaluations : + - + name: "tps" + info: + get: "echo -e '$out' |grep 'transactions:' |awk '{print $3}' | cut -c 2-" + type: "negative" + weight: 100 + threshold: 100 +``` + +## 使用示例 + +- 进行tuning调优 + + ``` + # atune-adm tuning example-client.yaml + ``` + +- 恢复tuning调优前的初始配置,example为yaml文件中的项目名称 + + ``` + # atune-adm tuning --restore --project example + ``` + + diff --git a/content/zh/docs/A-Tune/undefine.md b/content/zh/docs/A-Tune/undefine.md new file mode 100644 index 0000000000000000000000000000000000000000..6b57dd1fd2df2bec6a2fabeaea3c97fa81fd27e1 --- /dev/null +++ b/content/zh/docs/A-Tune/undefine.md @@ -0,0 +1,18 @@ +# undefine + +## 功能描述 + +删除用户自定义的workload\_type。 + +## 命令格式 + +**atune-adm undefine** + +## 使用示例 + +删除自定义的负载类型test\_type。 + +``` +# atune-adm undefine test_type +``` + diff --git a/content/zh/docs/A-Tune/update.md b/content/zh/docs/A-Tune/update.md new file mode 100644 index 0000000000000000000000000000000000000000..44aaa83d79ec486f992e0d64cd850885676086d4 --- /dev/null +++ b/content/zh/docs/A-Tune/update.md @@ -0,0 +1,18 @@ +# update + +## 功能描述 + +将workload\_type原来的优化项更新为new.conf中的内容。 + +## 命令格式 + +**atune-adm update** + +## 使用示例 + +更新负载类型为test\_type,优化项名称为test\_name的优化项为new.conf。 + +``` +# atune-adm update test_type test_name ./new.conf +``` + diff --git a/content/zh/docs/A-Tune/upgrade.md b/content/zh/docs/A-Tune/upgrade.md new file mode 100644 index 0000000000000000000000000000000000000000..a22ebd983f8d7b00ea0903e3764b7d409a139425 --- /dev/null +++ b/content/zh/docs/A-Tune/upgrade.md @@ -0,0 +1,25 @@ +# upgrade + +## 功能描述 + +更新系统的数据库。 + +## 命令格式 + +**atune-adm upgrade** + +## 参数说明 + +- DB\_FILE + + 新的数据库文件路径 + + +## 使用示例 + +数据库更新为new\_sqlite.db。 + +``` +# atune-adm upgrade ./new_sqlite.db +``` + diff --git "a/content/zh/docs/A-Tune/\344\275\277\347\224\250\346\226\271\346\263\225.md" "b/content/zh/docs/A-Tune/\344\275\277\347\224\250\346\226\271\346\263\225.md" new file mode 100644 index 0000000000000000000000000000000000000000..aaf6620d3a922f438525c0034fa32ec9607632cf --- /dev/null +++ "b/content/zh/docs/A-Tune/\344\275\277\347\224\250\346\226\271\346\263\225.md" @@ -0,0 +1,3 @@ +# 使用方法 + +用户可以通过命令行客户端atune-adm使用A-Tune提供的功能。本章介绍A-Tune客户端包含的功能和使用方法。 diff --git "a/content/zh/docs/A-Tune/\345\210\206\346\236\220\350\264\237\350\275\275\347\261\273\345\236\213\345\271\266\350\207\252\344\274\230\345\214\226.md" "b/content/zh/docs/A-Tune/\345\210\206\346\236\220\350\264\237\350\275\275\347\261\273\345\236\213\345\271\266\350\207\252\344\274\230\345\214\226.md" new file mode 100644 index 0000000000000000000000000000000000000000..e76149ff0f4f2f9d6e948a599c791f0c5d345b1a --- /dev/null +++ "b/content/zh/docs/A-Tune/\345\210\206\346\236\220\350\264\237\350\275\275\347\261\273\345\236\213\345\271\266\350\207\252\344\274\230\345\214\226.md" @@ -0,0 +1 @@ +# 分析负载类型并自优化 \ No newline at end of file diff --git "a/content/zh/docs/A-Tune/\345\211\215\350\250\200.md" "b/content/zh/docs/A-Tune/\345\211\215\350\250\200.md" new file mode 100644 index 0000000000000000000000000000000000000000..adf753c6898e05bd31c6e3283407f62a0ad12651 --- /dev/null +++ "b/content/zh/docs/A-Tune/\345\211\215\350\250\200.md" @@ -0,0 +1,36 @@ +# 前言 + +## 概述 + +本文档介绍openEuler系统性能自优化软件A-Tune的安装部署和使用方法,以指导用户快速了解并使用A-Tune。 + +## 读者对象 + +本文档适用于使用openEuler系统并希望了解和使用A-Tune的社区开发者、开源爱好者以及相关合作伙伴。使用人员需要具备基本的Linux操作系统知识。 + +## 符号约定 + +在本文中可能出现下列标志,它们所代表的含义如下。 + + + + + + + + + + + + + +

符号

+

说明

+

+

用于传递设备或环境安全警示信息。如不避免则可能会导致设备损坏、数据丢失、设备性能降低或其它不可预知的结果。

+

“须知”不涉及人身伤害。

+

+

对正文中重点信息的补充说明。

+

“说明”不是安全警示信息,不涉及人身、设备及环境伤害信息。

+
+ diff --git "a/content/zh/docs/A-Tune/\345\217\202\346\225\260\350\207\252\350\260\203\344\274\230.md" "b/content/zh/docs/A-Tune/\345\217\202\346\225\260\350\207\252\350\260\203\344\274\230.md" new file mode 100644 index 0000000000000000000000000000000000000000..4737c6df3e63358c6a585b2d885284b56132bbd2 --- /dev/null +++ "b/content/zh/docs/A-Tune/\345\217\202\346\225\260\350\207\252\350\260\203\344\274\230.md" @@ -0,0 +1,3 @@ +# 参数自调优 + +A-Tune提供了最佳配置的自动搜索能力,免去人工反复做参数调整、性能评价的调优过程,极大地提升最优配置的搜寻效率。 \ No newline at end of file diff --git "a/content/zh/docs/A-Tune/\345\220\257\345\212\250A-Tune.md" "b/content/zh/docs/A-Tune/\345\220\257\345\212\250A-Tune.md" new file mode 100644 index 0000000000000000000000000000000000000000..07144b2478fb8c2c3e925331d838598471db8f6c --- /dev/null +++ "b/content/zh/docs/A-Tune/\345\220\257\345\212\250A-Tune.md" @@ -0,0 +1,22 @@ +# 启动A-Tune + +A-Tune安装完成后,需要启动A-Tune服务才能使用。 + +- 启动atuned服务: + + ``` + # systemctl start atuned + ``` + + +- 查询atuned服务状态: + + ``` + # systemctl status atuned + ``` + + 若回显为如下,则服务启动成功。 + + ![](figures/zh-cn_image_0214540398.png) + + diff --git "a/content/zh/docs/A-Tune/\345\233\236\346\273\232profile.md" "b/content/zh/docs/A-Tune/\345\233\236\346\273\232profile.md" new file mode 100644 index 0000000000000000000000000000000000000000..209316a4c407aaa548b18945e5ef466d3a304900 --- /dev/null +++ "b/content/zh/docs/A-Tune/\345\233\236\346\273\232profile.md" @@ -0,0 +1 @@ +# 回滚profile \ No newline at end of file diff --git "a/content/zh/docs/A-Tune/\345\256\211\350\243\205A-Tune.md" "b/content/zh/docs/A-Tune/\345\256\211\350\243\205A-Tune.md" new file mode 100644 index 0000000000000000000000000000000000000000..f8f643da827b7b1d2fbfcb2062b5550309b0ac3c --- /dev/null +++ "b/content/zh/docs/A-Tune/\345\256\211\350\243\205A-Tune.md" @@ -0,0 +1,3 @@ +# 安装A-Tune + +本章介绍A-Tune的安装模式和安装方法。 \ No newline at end of file diff --git "a/content/zh/docs/A-Tune/\345\256\211\350\243\205\344\270\216\351\203\250\347\275\262.md" "b/content/zh/docs/A-Tune/\345\256\211\350\243\205\344\270\216\351\203\250\347\275\262.md" new file mode 100644 index 0000000000000000000000000000000000000000..3d3cdaa8255536c7b548bf57bbb8fff15675af2f --- /dev/null +++ "b/content/zh/docs/A-Tune/\345\256\211\350\243\205\344\270\216\351\203\250\347\275\262.md" @@ -0,0 +1,3 @@ +# 安装与部署 + +本章介绍如何安装和部署A-Tune。 diff --git "a/content/zh/docs/A-Tune/\345\256\211\350\243\205\346\223\215\344\275\234.md" "b/content/zh/docs/A-Tune/\345\256\211\350\243\205\346\223\215\344\275\234.md" new file mode 100644 index 0000000000000000000000000000000000000000..7f60914b875d6b3d72f5c4bb27924e6a620a2bb8 --- /dev/null +++ "b/content/zh/docs/A-Tune/\345\256\211\350\243\205\346\223\215\344\275\234.md" @@ -0,0 +1,53 @@ +# 安装操作 + +安装A-Tune的操作步骤如下: + +1. 挂载openEuler的iso文件。 + + ``` + # mount openEuler-20.03-LTS-aarch64-dvd.iso /mnt + ``` + +2. 配置本地yum源。 + + ``` + # vim /etc/yum.repos.d/local.repo + ``` + + 配置内容如下所示: + + ``` + [local] + name=local + baseurl=file:///mnt + gpgcheck=0 + enabled=1 + ``` + +3. 安装A-Tune服务端。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >本步骤会同时安装服务端和客户端软件包,对于单机部署模式,请跳过**步骤4**。 + + ``` + # yum install atune -y + ``` + +4. 若为分布式部署,请安装A-Tune客户端。 + + ``` + # yum install atune-client -y + ``` + +5. 验证是否安装成功。 + + ``` + # rpm -qa | grep atune + atune-client-xxx + atune-db-xxx + atune-xxx + ``` + + 有如上回显信息表示安装成功。 + + diff --git "a/content/zh/docs/A-Tune/\345\256\211\350\243\205\346\250\241\345\274\217\344\273\213\347\273\215.md" "b/content/zh/docs/A-Tune/\345\256\211\350\243\205\346\250\241\345\274\217\344\273\213\347\273\215.md" new file mode 100644 index 0000000000000000000000000000000000000000..a3f22743b2d16653e0de4199ecc8bd56050a2575 --- /dev/null +++ "b/content/zh/docs/A-Tune/\345\256\211\350\243\205\346\250\241\345\274\217\344\273\213\347\273\215.md" @@ -0,0 +1,17 @@ +# 安装模式介绍 + +A-Tune支持单机模式和分布式模式安装: + +- 单机模式 + + client和server安装到同一台机器上。 + +- 分布式模式 + + client和server分别安装在不同的机器上。 + + +两种安装模式的简单图示如下: + +![](figures/zh-cn_image_0231122163.png) + diff --git "a/content/zh/docs/A-Tune/\345\270\270\350\247\201\351\227\256\351\242\230\344\270\216\350\247\243\345\206\263\346\226\271\346\263\225.md" "b/content/zh/docs/A-Tune/\345\270\270\350\247\201\351\227\256\351\242\230\344\270\216\350\247\243\345\206\263\346\226\271\346\263\225.md" new file mode 100644 index 0000000000000000000000000000000000000000..242115221f93dbe37e291e82afb0f63524c47eb1 --- /dev/null +++ "b/content/zh/docs/A-Tune/\345\270\270\350\247\201\351\227\256\351\242\230\344\270\216\350\247\243\345\206\263\346\226\271\346\263\225.md" @@ -0,0 +1,55 @@ +# 常见问题与解决方法 + +**问题1:train命令训练模型出错,提示“training data faild”**。 + +原因:collection命令只采集一种类型的数据。 + +解决方法:至少采集两种数据类型的数据进行训练。 + +**问题2:atune-adm无法连接atuned服务。** + +可能原因: + +1. 检查atuned服务是否启动,并检查atuned侦听地址。 + + ``` + # systemctl status atuned + # netstat -nap | atuned + ``` + +2. 防火墙阻止了atuned的侦听端口。 +3. 系统配置了http代理导致无法连接。 + +解决方法: + +1. 如果atuned没有启动,启动该服务,参考命令如下: + + ``` + # systemctl start atuned + ``` + +2. 分别在atuned和atune-adm的服务器上执行如下命令,允许侦听端口接收网络包,其中60001为atuned的侦听端口号。 + + ``` + # iptables -I INPUT -p tcp --dport 60001 -j ACCEPT + # iptables -I INPUT -p tcp --sport 60001 -j ACCEPT + ``` + + +1. 不影响业务的前提下删除http代理,或对侦听IP不进行http代理,命令如下: + + ``` + # no_proxy=$no_proxy,侦听地址 + ``` + + +**问题3:atuned服务无法启动,提示“Job for atuned.service failed because a timeout was exceeded.”**。 + +原因:hosts文件中缺少localhost配置 + +解决方法:在/etc/hosts文件中127.0.0.1这一行添加上localhost + +``` +127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 +``` + diff --git "a/content/zh/docs/A-Tune/\346\200\273\344\275\223\350\257\264\346\230\216.md" "b/content/zh/docs/A-Tune/\346\200\273\344\275\223\350\257\264\346\230\216.md" new file mode 100644 index 0000000000000000000000000000000000000000..9549cf71c1b2b257af768b84d9a0d367de3299eb --- /dev/null +++ "b/content/zh/docs/A-Tune/\346\200\273\344\275\223\350\257\264\346\230\216.md" @@ -0,0 +1,17 @@ +# 总体说明 + +- atune-adm支持的命令可以通过 **atune-adm help/--help/-h** 查询。 +- 使用方法中所有命令的使用举例都是在单机部署模式下,如果是在分布式部署模式下,需要指定服务器IP和端口号,例如: + + ``` + # atune-adm -a 192.168.3.196 -p 60001 list + ``` + +- define、update、undefine、collection、train、upgrade不支持远程执行。 +- 命令格式中,\[ \] 表示参数可选,<\> 表示参数必选,具体参数由实际情况确定。 +- 命令格式中,各命令含义如下: + - WORKLOAD\_TYPE:用户自定义负载类型的名称,负载支持的类型参考list命令查询结果。 + - PROFILE\_NAME:用户自定义profile的名称 + - PROFILE\_PATH:用户自定义profile的路径 + + diff --git "a/content/zh/docs/A-Tune/\346\224\257\346\214\201\347\211\271\346\200\247\344\270\216\344\270\232\345\212\241\346\250\241\345\236\213.md" "b/content/zh/docs/A-Tune/\346\224\257\346\214\201\347\211\271\346\200\247\344\270\216\344\270\232\345\212\241\346\250\241\345\236\213.md" new file mode 100644 index 0000000000000000000000000000000000000000..7d64cbc20fd28dd6cfd66256e18a44f9c9fec4fe --- /dev/null +++ "b/content/zh/docs/A-Tune/\346\224\257\346\214\201\347\211\271\346\200\247\344\270\216\344\270\232\345\212\241\346\250\241\345\236\213.md" @@ -0,0 +1,146 @@ +# 支持特性与业务模型 + +## 支持特性 + +A-Tune支持的主要特性、特性成熟度以及使用建议请参见[表1](#table1919220557576)。 + +**表 1** 特性成熟度 + + + + + + + + + + + + + + + + + + + + +

特性

+

成熟度

+

使用建议

+

七大类11款应用负载类型自动优化

+

已测试

+

试用

+

自定义负载类型和业务模型

+

已测试

+

试用

+

参数自调优

+

已测试

+

试用

+
+ +## 支持业务模型 + +根据应用的负载特征,A-Tune将业务分为七大类,各类型的负载特征和A-Tune支持的应用请参见[表2](#table2819164611311)。 + +**表 2** 支持的业务类型和应用 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

负载模型

+

业务类型

+

负载特征

+

支持的应用

+

default

+

默认类型

+

CPU、内存带宽、网络、IO各维度资源使用率都不高

+

N/A

+

webserver

+

https应用

+

CPU使用率高

+

Nginx

+

big_database

+

数据库

+
  • 关系型数据库

    读: CPU、内存带宽、网络使用率高

    +

    写:IO使用率高

    +
+
  • 非关系型数据库

    CPU、IO使用率高

    +
+

MongoDB、MySQL、PostgreSQL、MariaDB

+

big_data

+

大数据

+

CPU、IO使用率较高

+

Hadoop、Spark

+

in-memory_computing

+

内存密集型应用

+

CPU、内存带宽使用率高

+

SPECjbb2015

+

in-memory_database

+

计算+网络密集型应用

+

CPU单核使用率高,多实例下网络使用率高

+

Redis

+

single_computer_intensive_jobs

+

计算密集型应用

+

CPU单核使用率高,部分子项内存带宽使用率高

+

SPECCPU2006

+

communication

+

网络密集型应用

+

CPU、网络使用率高

+

Dubbo

+

idle

+

系统idle

+

系统处于空闲状态,无任何应用运行

+

N/A

+
+ diff --git "a/content/zh/docs/A-Tune/\346\233\264\346\226\260profile.md" "b/content/zh/docs/A-Tune/\346\233\264\346\226\260profile.md" new file mode 100644 index 0000000000000000000000000000000000000000..5c23974200450fbf4229324e199b825f61def001 --- /dev/null +++ "b/content/zh/docs/A-Tune/\346\233\264\346\226\260profile.md" @@ -0,0 +1,3 @@ +# 更新profile + +用户根据需要更新已有profile。 \ No newline at end of file diff --git "a/content/zh/docs/A-Tune/\346\233\264\346\226\260\346\225\260\346\215\256\345\272\223.md" "b/content/zh/docs/A-Tune/\346\233\264\346\226\260\346\225\260\346\215\256\345\272\223.md" new file mode 100644 index 0000000000000000000000000000000000000000..40d2cde3c3216215436cf926a1ba328b39487db0 --- /dev/null +++ "b/content/zh/docs/A-Tune/\346\233\264\346\226\260\346\225\260\346\215\256\345\272\223.md" @@ -0,0 +1 @@ +# 更新数据库 \ No newline at end of file diff --git "a/content/zh/docs/A-Tune/\346\234\257\350\257\255\345\222\214\347\274\251\347\225\245\350\257\255.md" "b/content/zh/docs/A-Tune/\346\234\257\350\257\255\345\222\214\347\274\251\347\225\245\350\257\255.md" new file mode 100644 index 0000000000000000000000000000000000000000..d50d0a7cc6581c884c8681d83b8262a870ddfa84 --- /dev/null +++ "b/content/zh/docs/A-Tune/\346\234\257\350\257\255\345\222\214\347\274\251\347\225\245\350\257\255.md" @@ -0,0 +1,24 @@ +# 术语和缩略语 + +**表 1** 术语表 + + + + + + + + + + + + + +

术语

+

含义

+

workload_type

+

负载类型,用于标记具有相同特征的一类业务

+

profile

+

优化项集合,最佳的参数配置

+
+ diff --git "a/content/zh/docs/A-Tune/\346\236\266\346\236\204.md" "b/content/zh/docs/A-Tune/\346\236\266\346\236\204.md" new file mode 100644 index 0000000000000000000000000000000000000000..07492b4a32fe8567feef1afd66fd87c037debf2d --- /dev/null +++ "b/content/zh/docs/A-Tune/\346\236\266\346\236\204.md" @@ -0,0 +1,10 @@ +# 架构 + +A-Tune核心技术架构如下图,主要包括智能决策、系统画像和交互系统三层。 + +- 智能决策层:包含感知和决策两个子系统,分别完成对应用的智能感知和对系统的调优决策。 +- 系统画像层:主要包括标注和学习系统,标注系统用于业务模型的聚类,学习系统用于业务模型的学习和分类。 +- 交互系统层:用于各类系统资源的监控和配置,调优策略执行在本层进行。 + +![](figures/zh-cn_image_0227497343.png) + diff --git "a/content/zh/docs/A-Tune/\346\237\245\350\257\242profile.md" "b/content/zh/docs/A-Tune/\346\237\245\350\257\242profile.md" new file mode 100644 index 0000000000000000000000000000000000000000..40ef5f9d822578efab6e8aee18355eec0e4125ad --- /dev/null +++ "b/content/zh/docs/A-Tune/\346\237\245\350\257\242profile.md" @@ -0,0 +1,2 @@ +# 查询profile + diff --git "a/content/zh/docs/A-Tune/\346\237\245\350\257\242\350\264\237\350\275\275\347\261\273\345\236\213.md" "b/content/zh/docs/A-Tune/\346\237\245\350\257\242\350\264\237\350\275\275\347\261\273\345\236\213.md" new file mode 100644 index 0000000000000000000000000000000000000000..3afdd929a141f52d1e2f6605457d4dc8c30b26bc --- /dev/null +++ "b/content/zh/docs/A-Tune/\346\237\245\350\257\242\350\264\237\350\275\275\347\261\273\345\236\213.md" @@ -0,0 +1 @@ +# 查询负载类型 \ No newline at end of file diff --git "a/content/zh/docs/A-Tune/\346\263\225\345\276\213\347\224\263\346\230\216.md" "b/content/zh/docs/A-Tune/\346\263\225\345\276\213\347\224\263\346\230\216.md" new file mode 100644 index 0000000000000000000000000000000000000000..e0afc931b0742f0c617aa266282ebba12b41e6e8 --- /dev/null +++ "b/content/zh/docs/A-Tune/\346\263\225\345\276\213\347\224\263\346\230\216.md" @@ -0,0 +1,14 @@ +# 法律申明 + +**版权所有 © 2020 华为技术有限公司。** + +您对“本文档”的复制,使用,修改及分发受知识共享\(Creative Commons\)署名—相同方式共享4.0国际公共许可协议\(以下简称“CC BY-SA 4.0”\)的约束。为了方便用户理解,您可以通过访问[https://creativecommons.org/licenses/by-sa/4.0/](https://creativecommons.org/licenses/by-sa/4.0/) 了解CC BY-SA 4.0的概要 \(但不是替代\)。CC BY-SA 4.0的完整协议内容您可以访问如下网址获取:[https://creativecommons.org/licenses/by-sa/4.0/legalcode](https://creativecommons.org/licenses/by-sa/4.0/legalcode)。 + +**商标声明** + +A-Tune、openEuler为华为技术有限公司的商标。本文档提及的其他所有商标或注册商标,由各自的所有人拥有。 + +**免责声明** + +本文档仅作为使用指导,除非适用法强制规定或者双方有明确书面约定, 华为技术有限公司对本文档中的所有陈述、信息和建议不做任何明示或默示的声明或保证,包括但不限于不侵权,时效性或满足特定目的的担保。 + diff --git "a/content/zh/docs/A-Tune/\346\277\200\346\264\273profile.md" "b/content/zh/docs/A-Tune/\346\277\200\346\264\273profile.md" new file mode 100644 index 0000000000000000000000000000000000000000..9360233286e2ce62b7bed3bc6a5ab8a64196e37a --- /dev/null +++ "b/content/zh/docs/A-Tune/\346\277\200\346\264\273profile.md" @@ -0,0 +1 @@ +# 激活profile \ No newline at end of file diff --git "a/content/zh/docs/A-Tune/\347\216\257\345\242\203\345\207\206\345\244\207.md" "b/content/zh/docs/A-Tune/\347\216\257\345\242\203\345\207\206\345\244\207.md" new file mode 100644 index 0000000000000000000000000000000000000000..8dc449cdd12df59b0f7e27b2bd49649948ba9567 --- /dev/null +++ "b/content/zh/docs/A-Tune/\347\216\257\345\242\203\345\207\206\345\244\207.md" @@ -0,0 +1,4 @@ +# 环境准备 + +安装openEuler系统,安装方法参考《openEuler 20.03 LTS 安装指南》。 + diff --git "a/content/zh/docs/A-Tune/\347\256\200\344\273\213.md" "b/content/zh/docs/A-Tune/\347\256\200\344\273\213.md" new file mode 100644 index 0000000000000000000000000000000000000000..45a82a0347a6224e11a4cc3a9d7faa22391ce283 --- /dev/null +++ "b/content/zh/docs/A-Tune/\347\256\200\344\273\213.md" @@ -0,0 +1,14 @@ +# 简介 + +操作系统作为衔接应用和硬件的基础软件,如何调整系统和应用配置,充分发挥软硬件能力,从而使业务性能达到最优,对用户至关重要。然而,运行在操作系统上的业务类型成百上千,应用形态千差万别,对资源的要求各不相同。当前硬件和基础软件组成的应用环境涉及高达7000多个配置对象,随着业务复杂度和调优对象的增加,调优所需的时间成本呈指数级增长,导致调优效率急剧下降,调优成为了一项极其复杂的工程,给用户带来巨大挑战。 + +其次,操作系统作为基础设施软件,提供了大量的软硬件管理能力,每种能力适用场景不尽相同,并非对所有的应用场景都通用有益,因此,不同的场景需要开启或关闭不同的能力,组合使用系统提供的各种能力,才能发挥应用程序的最佳性能。 + +另外,实际业务场景成千上万,计算、网络、存储等硬件配置也层出不穷,实验室无法遍历穷举所有的应用和业务场景,以及不同的硬件组合。 + +为了应对上述挑战,openEuler推出了A-Tune。 + +A-Tune是一款基于AI开发的系统性能优化引擎,它利用人工智能技术,对业务场景建立精准的系统画像,感知并推理出业务特征,进而做出智能决策,匹配并推荐最佳的系统参数配置组合,使业务处于最佳运行状态。 + +![](figures/zh-cn_image_0227497000.png) + diff --git "a/content/zh/docs/A-Tune/\347\263\273\347\273\237\344\277\241\346\201\257\346\237\245\350\257\242.md" "b/content/zh/docs/A-Tune/\347\263\273\347\273\237\344\277\241\346\201\257\346\237\245\350\257\242.md" new file mode 100644 index 0000000000000000000000000000000000000000..da65f1b9c45b7883f00b9a3eb9fe713f729d96be --- /dev/null +++ "b/content/zh/docs/A-Tune/\347\263\273\347\273\237\344\277\241\346\201\257\346\237\245\350\257\242.md" @@ -0,0 +1 @@ +# 系统信息查询 diff --git "a/content/zh/docs/A-Tune/\350\207\252\345\256\232\344\271\211\346\250\241\345\236\213.md" "b/content/zh/docs/A-Tune/\350\207\252\345\256\232\344\271\211\346\250\241\345\236\213.md" new file mode 100644 index 0000000000000000000000000000000000000000..eebe018db70f43d30fdd3c1a621760732cf6a941 --- /dev/null +++ "b/content/zh/docs/A-Tune/\350\207\252\345\256\232\344\271\211\346\250\241\345\236\213.md" @@ -0,0 +1,10 @@ +# 自定义模型 + +A-Tune支持用户定义并学习新模型。定义新模型的操作流程如下: + +1. 用define命令定义workload\_type和profile +2. 用collection命令收集workload\_type对应的画像数据 +3. 用train命令训练得到模型 + + + diff --git "a/content/zh/docs/A-Tune/\350\256\244\350\257\206A-Tune.md" "b/content/zh/docs/A-Tune/\350\256\244\350\257\206A-Tune.md" new file mode 100644 index 0000000000000000000000000000000000000000..92b835d57b3eb1afe194e91c6e4dfc5ac406ac1c --- /dev/null +++ "b/content/zh/docs/A-Tune/\350\256\244\350\257\206A-Tune.md" @@ -0,0 +1 @@ +# 认识A-Tune \ No newline at end of file diff --git "a/content/zh/docs/A-Tune/\350\275\257\347\241\254\344\273\266\350\246\201\346\261\202.md" "b/content/zh/docs/A-Tune/\350\275\257\347\241\254\344\273\266\350\246\201\346\261\202.md" new file mode 100644 index 0000000000000000000000000000000000000000..b13b53bc7031d57ff920e73827657f823d600e7d --- /dev/null +++ "b/content/zh/docs/A-Tune/\350\275\257\347\241\254\344\273\266\350\246\201\346\261\202.md" @@ -0,0 +1,10 @@ +# 软硬件要求 + +## 硬件要求 + +- 鲲鹏920处理器 + +## 软件要求 + +- 操作系统:openEuler 20.03 LTS + diff --git "a/content/zh/docs/A-Tune/\351\203\250\347\275\262A-Tune.md" "b/content/zh/docs/A-Tune/\351\203\250\347\275\262A-Tune.md" new file mode 100644 index 0000000000000000000000000000000000000000..0a55b929bfb339f3816de21817360959a63863a7 --- /dev/null +++ "b/content/zh/docs/A-Tune/\351\203\250\347\275\262A-Tune.md" @@ -0,0 +1,3 @@ +# 部署A-Tune + +本章介绍A-Tune的配置部署。 diff --git "a/content/zh/docs/A-Tune/\351\205\215\347\275\256\344\273\213\347\273\215.md" "b/content/zh/docs/A-Tune/\351\205\215\347\275\256\344\273\213\347\273\215.md" new file mode 100644 index 0000000000000000000000000000000000000000..b25ceb47ae5d04515c9aa216bc336c232854e1fd --- /dev/null +++ "b/content/zh/docs/A-Tune/\351\205\215\347\275\256\344\273\213\347\273\215.md" @@ -0,0 +1,101 @@ +# 配置介绍 + +A-Tune配置文件/etc/atuned/atuned.cnf的配置项说明如下: + +- A-Tune服务启动配置 + + 可根据需要进行修改。 + + - protocol:系统grpc服务使用的协议,unix或tcp,unix为本地socket通信方式,tcp为socket监听端口方式。默认为unix。 + + - address:系统grpc服务的侦听地址,默认为unix socket,若为分布式部署,需修改为侦听的ip地址。 + - port:系统grpc服务的侦听端口,范围为0\~65535未使用的端口。如果protocol配置是unix,则不需要配置。 + - rest\_port:系统restservice的侦听端口, 范围为0\~65535未使用的端口。 + - sample\_num:系统执行analysis流程时采集样本的数量。 + +- system信息 + + system为系统执行相关的优化需要用到的参数信息,必须根据系统实际情况进行修改。 + + - disk:执行analysis流程时需要采集的对应磁盘的信息或执行磁盘相关优化时需要指定的磁盘。 + - network:执行analysis时需要采集的对应的网卡的信息或执行网卡相关优化时需要指定的网卡。 + - user:执行ulimit相关优化时用到的用户名。目前只支持root用户。 + - tls:开启A-Tune的gRPC和http服务SSL/TLS证书校验,默认不开启。开启TLS后atune-adm命令在使用前需要设置以下环境变量方可与服务端进行通讯: + - export ATUNE\_TLS=yes + - export ATUNE\_CLICERT=<客户端证书路径\> + + - tlsservercertfile:gPRC服务端证书路径。 + - tlsserverkeyfile:gPRC服务端秘钥路径。 + - tlshttpcertfile:http服务端证书路径。 + - tlshttpkeyfile:http服务端秘钥路径。 + - tlshttpcacertfile:http服务端CA证书路径。 + +- 日志信息 + + 根据情况修改日志的路径和级别,默认的日志信息在/var/log/messages中。 + +- monitor信息 + + 为系统启动时默认采集的系统硬件信息。 + + +## 配置示例 + +``` +#################################### server ############################### +# atuned config +[server] +# the protocol grpc server running on +# ranges: unix or tcp +protocol = unix + +# the address that the grpc server to bind to +# default is unix socket /var/run/atuned/atuned.sock +# ranges: /var/run/atuned/atuned.sock or ip +address = /var/run/atuned/atuned.sock + +# the atuned grpc listening port, default is 60001 +# the port can be set between 0 to 65535 which not be used +port = 60001 + +# the rest service listening port, default is 8383 +# the port can be set between 0 to 65535 which not be used +rest_port = 8383 + +# when run analysis command, the numbers of collected data. +# default is 20 +sample_num = 20 + +# Enable gRPC and http server authentication SSL/TLS +# default is false +# tls = true +# tlsservercertfile = /etc/atuned/server.pem +# tlsserverkeyfile = /etc/atuned/server.key +# tlshttpcertfile = /etc/atuned/http/server.pem +# tlshttpkeyfile = /etc/atuned/http/server.key +# tlshttpcacertfile = /etc/atuned/http/cacert.pem + +#################################### log ############################### +# Either "debug", "info", "warn", "error", "critical", default is "info" +level = info + +#################################### monitor ############################### +[monitor] +# With the module and format of the MPI, the format is {module}_{purpose} +# The module is Either "mem", "net", "cpu", "storage" +# The purpose is "topo" +module = mem_topo, cpu_topo + +#################################### system ############################### +# you can add arbitrary key-value here, just like key = value +# you can use the key in the profile +[system] +# the disk to be analysis +disk = sda + +# the network to be analysis +network = enp189s0f0 + +user = root +``` + diff --git "a/content/zh/docs/A-Tune/\351\231\204\345\275\225.md" "b/content/zh/docs/A-Tune/\351\231\204\345\275\225.md" new file mode 100644 index 0000000000000000000000000000000000000000..a805be53175a481cec789f63e397f0346e0359d6 --- /dev/null +++ "b/content/zh/docs/A-Tune/\351\231\204\345\275\225.md" @@ -0,0 +1,2 @@ +# 附录 + diff --git a/content/zh/docs/Container/Attach.md b/content/zh/docs/Container/Attach.md index 3fd648438966bf4ce8a0e7eb696f801ebe681652..c80613f2fdddc5c4f42245dde8464489369369b1 100644 --- a/content/zh/docs/Container/Attach.md +++ b/content/zh/docs/Container/Attach.md @@ -1,64 +1,19 @@ -# Attach +# attach -## 接口原型 +用法:**docker attach \[OPTIONS\] CONTAINER** -``` -rpc Attach(AttachRequest) returns (AttachResponse) {} -``` - -## 接口描述 +功能:附加到一个运行着的容器 -接管容器的1号进程,采用的gRPC通讯方式从CRI服务端获取url,再通过获得的url与websocket服务端建立长连接,实现与容器的交互。 +选项: -## 参数: AttachRequest +--no-stdin=false 不附加STDIN - - - - - - - - - - - - - - - - - - - - -

参数成员

-

描述

-

string container_id

-

容器ID

-

bool tty

-

是否在TTY中执行命令

-

bool stdin

-

是否流式标准输入

-

bool stdout

-

是否流式标准输出

-

bool stderr

-

是否流式输出标准错误

-
+--sig-proxy=true 代理所有到容器内部的信号,不代理SIGCHLD, SIGKILL, SIGSTOP -## 返回值: ExecResponse +示例: - - - - - - - - -

返回值

-

描述

-

string url

-

attach流服务器的完全限定URL

-
+``` +$ sudo docker attach attach_test +root@2988b8658669:/# ls bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var +``` diff --git "a/content/zh/docs/Container/CNI\351\205\215\347\275\256\345\217\202\346\225\260.md" "b/content/zh/docs/Container/CNI\351\205\215\347\275\256\345\217\202\346\225\260.md" index 573d66dc75a08070a5f9dc2b746bb35848861a91..f2a72e856e4b4002700b4b4b75bfdad565795e45 100644 --- "a/content/zh/docs/Container/CNI\351\205\215\347\275\256\345\217\202\346\225\260.md" +++ "b/content/zh/docs/Container/CNI\351\205\215\347\275\256\345\217\202\346\225\260.md" @@ -271,7 +271,7 @@

可选

- +

capabilities

@@ -280,7 +280,7 @@

可选

- + diff --git "a/content/zh/docs/Container/CRI\346\216\245\345\217\243.md" "b/content/zh/docs/Container/CRI\346\216\245\345\217\243.md" index 11b1a7c3d53cc4c318d5302bd8ada21a31bc1e5f..095db4ad8fb339e8b28847567d0fa424a2a03c44 100644 --- "a/content/zh/docs/Container/CRI\346\216\245\345\217\243.md" +++ "b/content/zh/docs/Container/CRI\346\216\245\345\217\243.md" @@ -1,4 +1,2 @@ # CRI接口 - - diff --git a/content/zh/docs/Container/ContainerStats.md b/content/zh/docs/Container/ContainerStats.md index 1b10ec7036de1563cf50e57e08ff9db301e39185..e6a43d3d310b918c667ec6fbe46208c1565dab63 100644 --- a/content/zh/docs/Container/ContainerStats.md +++ b/content/zh/docs/Container/ContainerStats.md @@ -8,9 +8,9 @@ rpc ContainerStats(ContainerStatsRequest) returns (ContainerStatsResponse) {} ## 接口描述 -返回单个容器占用资源信息 +返回单个容器占用资源信息,仅支持runtime类型为lcr的容器。 -## 参数: ContainerStatsRequest +## 参数

参数成员

@@ -26,7 +26,7 @@ rpc ContainerStats(ContainerStatsRequest) returns (ContainerStatsResponse) {}
-## 返回值: ContainerStatsResponse +## 返回值 - diff --git a/content/zh/docs/Container/ContainerStatus.md b/content/zh/docs/Container/ContainerStatus.md index 545b854649f9c759b34ed4c2399af2817502de72..ad0b0a5ea7a46df2618c6df002653a9a69844e40 100644 --- a/content/zh/docs/Container/ContainerStatus.md +++ b/content/zh/docs/Container/ContainerStatus.md @@ -10,9 +10,7 @@ rpc ContainerStatus(ContainerStatusRequest) returns (ContainerStatusResponse) {} 返回容器状态信息,如果容器不存在,则返回错误。 -## 注意事项 - -## 参数: ContainerStatusRequest +## 参数

返回值

@@ -36,7 +36,7 @@ rpc ContainerStats(ContainerStatsRequest) returns (ContainerStatsResponse) {}

ContainerStats stats

容器信息,具体内容参考左侧链接。注:disk和inodes只支持oci格式镜像起的容器查询

+

容器信息。注:disk和inodes只支持oci格式镜像起的容器查询

参数成员

@@ -33,7 +31,7 @@ rpc ContainerStatus(ContainerStatusRequest) returns (ContainerStatusResponse) {}
-## 返回值: ContainerStatusResponse +## 返回值

返回值

diff --git a/content/zh/docs/Container/CreateContainer.md b/content/zh/docs/Container/CreateContainer.md index 804fe38dec1825d39039e4b04d0130e8fbbc0334..4d0fd786c56c66cd02795635c4f085da2e2ee4bf 100644 --- a/content/zh/docs/Container/CreateContainer.md +++ b/content/zh/docs/Container/CreateContainer.md @@ -6,15 +6,15 @@ grpc::Status CreateContainer(grpc::ServerContext *context, const runtime::Create ## 接口描述 -在PodSandbox内创建一个容器 +在PodSandbox内创建一个容器。 ## 注意事项 -1. 请求CreateContainerRequest 中的sandbox\_config与传递给RunPodSandboxRequest以创建PodSandbox的配置相同。 它再次传递,只是为了方便参考。 PodSandboxConfig是不可变的,在pod的整个生命周期内保持不变。 +- 请求CreateContainerRequest 中的sandbox\_config与传递给RunPodSandboxRequest以创建PodSandbox的配置相同。 它再次传递,只是为了方便参考。 PodSandboxConfig是不可变的,在pod的整个生命周期内保持不变。 +- 由于容器命名以[ContainerMetadata](接口-2.md#zh-cn_topic_0182207110_li17135914132319)中的字段为来源,且以下划线"\_"为分割字符,因此限制metadata中的数据不能包含下划线,否则会出现sandbox运行成功,但无法使用[ListContainers](ListContainers.md#ZH-CN_TOPIC_0184808103)接口查询的现象。 +- CreateContainerRequest中无runtime\_handler字段,创建container时的runtime类型和其对应的sandbox的runtime相同。 -2. 由于容器命名以[ContainerMetadata](接口-2.md#zh-cn_topic_0182207110_li17135914132319)中的字段为来源,且以下划线"\_"为分割字符,因此限制metadata中的数据不能包含下划线,否则会出现sandbox运行成功,但无法使用[ListContainers](ListContainers.md#ZH-CN_TOPIC_0184808103)接口查询的现象。 - -## 参数: CreateContainerRequest +## 参数

参数成员

@@ -40,7 +40,7 @@ grpc::Status CreateContainer(grpc::ServerContext *context, const runtime::Create
-## 补充 :annotations +## 补充 可用于存储和检索任意元数据的非结构化键值映射。有一些字段由于cri接口没有提供特定的参数,可通过该字段将参数传入 @@ -61,7 +61,7 @@ grpc::Status CreateContainer(grpc::ServerContext *context, const runtime::Create
-## 返回值 :CreateContainerResponse +## 返回值

返回值

diff --git "a/content/zh/docs/Container/DAEMON\345\244\232\347\253\257\345\217\243\347\232\204\347\273\221\345\256\232.md" "b/content/zh/docs/Container/DAEMON\345\244\232\347\253\257\345\217\243\347\232\204\347\273\221\345\256\232.md" index 9c156a810a778d965be5a9db55e4937995869ba0..11f93e14c4b18772ee7bdae8e26ec2d28473550c 100644 --- "a/content/zh/docs/Container/DAEMON\345\244\232\347\253\257\345\217\243\347\232\204\347\273\221\345\256\232.md" +++ "b/content/zh/docs/Container/DAEMON\345\244\232\347\253\257\345\217\243\347\232\204\347\273\221\345\256\232.md" @@ -2,7 +2,7 @@ ## 描述 -daemon端可以绑定多个unix socket或者tcp端口,并在这些端口上监听,客户端可以通过这些端口和daemon端进行交互。 +daemon端可以绑定多个unix socket或者tcp端口,并在这些端口上侦听,客户端可以通过这些端口和daemon端进行交互。 ## 接口 @@ -24,7 +24,7 @@ daemon端可以绑定多个unix socket或者tcp端口,并在这些端口上监 OPTIONS='-H unix:///var/run/isulad.sock --host tcp://127.0.0.1:6789' ``` -如果用户在daemon.json文件及iSulad中均未指定hosts,则daemon在启动之后将默认监听unix:///var/run/isulad.sock。 +如果用户在daemon.json文件及iSulad中均未指定hosts,则daemon在启动之后将默认侦听unix:///var/run/isulad.sock。 ## 限制 diff --git "a/content/zh/docs/Container/Docker\345\256\271\345\231\250.md" "b/content/zh/docs/Container/Docker\345\256\271\345\231\250.md" index cd31432808cc5cde414f3528bcbd7e0bd421922a..05f03370e68b2f6121f4174956a6bf033bd70d98 100644 --- "a/content/zh/docs/Container/Docker\345\256\271\345\231\250.md" +++ "b/content/zh/docs/Container/Docker\345\256\271\345\231\250.md" @@ -1,3 +1,2 @@ # Docker容器 - diff --git a/content/zh/docs/Container/Exec.md b/content/zh/docs/Container/Exec.md index 1a15e28036e6cf471d93aafe4bda2be2a7691129..061dc0130121f5fb63111132b9e5b963c262b7e7 100644 --- a/content/zh/docs/Container/Exec.md +++ b/content/zh/docs/Container/Exec.md @@ -14,60 +14,60 @@ rpc Exec(ExecRequest) returns (ExecResponse) {} 执行执行一条单独的命令,也能打开终端与容器交互。stdin/stdout/stderr之一必须是真的。如果tty为真,stderr必须是假的。 不支持多路复用, 在这种情况下, stdout和stderr的输出将合并为单流。 -## 参数: ExecRequest +## 参数 - - - - - - - - - - - - - - - - - - - - - - +

参数成员

-

描述

-

string container_id

-

容器ID

-

repeated string cmd

-

待执行的命令

-

bool tty

-

是否在TTY中执行命令

-

bool stdin

-

是否流式标准输入

-

bool stdout

-

是否流式标准输出

-

bool stderr

-

是否流式输出标准错误

-
+ + + + + + + + + + + + + + + + + + + + +

参数成员

+

描述

+

string container_id

+

容器ID

+

repeated string cmd

+

待执行的命令

+

bool tty

+

是否在TTY中执行命令

+

bool stdin

+

是否流式标准输入

+

bool stdout

+

是否流式标准输出

+

bool stderr

+

是否流式输出标准错误

+
-## 返回值: ExecResponse +## 返回值 - - - - - - - +

返回值

-

描述

-

string url

-

exec流服务器的完全限定URL

-
+ + + + + +

返回值

+

描述

+

string url

+

exec流服务器的完全限定URL

+
diff --git a/content/zh/docs/Container/ExecSync.md b/content/zh/docs/Container/ExecSync.md index b7f8b07c11c0aaef73df81033e1150631daaa887..664567372c8374577edba261fd4faaa1fc6af097 100644 --- a/content/zh/docs/Container/ExecSync.md +++ b/content/zh/docs/Container/ExecSync.md @@ -14,7 +14,7 @@ rpc ExecSync(ExecSyncRequest) returns (ExecSyncResponse) {} 执行执行一条单独的命令,不能打开终端与容器交互。 -## 参数:ExecSyncRequest +## 参数

参数成员

@@ -40,7 +40,7 @@ rpc ExecSync(ExecSyncRequest) returns (ExecSyncResponse) {}
-## 返回值: ExecSyncResponse +## 返回值

返回值

diff --git a/content/zh/docs/Container/ImageFsInfo.md b/content/zh/docs/Container/ImageFsInfo.md index 5a748bdb367f63cf82fadc6bbd6c21ef007a6bb7..bb456ca4ab92dae243debbdab84804e1d588d4a6 100644 --- a/content/zh/docs/Container/ImageFsInfo.md +++ b/content/zh/docs/Container/ImageFsInfo.md @@ -16,19 +16,7 @@ rpc ImageFsInfo(ImageFsInfoRequest) returns (ImageFsInfoResponse) {} ## 参数 - - - - - - - - -

参数成员

-

描述

-

-

-
+无 ## 返回值 diff --git a/content/zh/docs/Container/ListContainerStats.md b/content/zh/docs/Container/ListContainerStats.md index e87db4ecbc19abe837d7c790c931293599d4a290..88963f0ba941924eb99922648bd7ced2025dfc3f 100644 --- a/content/zh/docs/Container/ListContainerStats.md +++ b/content/zh/docs/Container/ListContainerStats.md @@ -10,7 +10,7 @@ rpc ListContainerStats(ListContainerStatsRequest) returns (ListContainerStatsRes 返回多个容器占用资源信息,支持条件过滤 -## 参数: ListContainerStatsRequest +## 参数 -

参数成员

@@ -20,13 +20,13 @@ rpc ListContainerStats(ListContainerStatsRequest) returns (ListContainerStatsRes

ContainerStatsFilter filter

条件过滤参数,具体内容参考左侧链接

+

条件过滤参数

-## 返回值: ListContainerStatsResponse +## 返回值 - diff --git a/content/zh/docs/Container/ListContainers.md b/content/zh/docs/Container/ListContainers.md index ac86c8f6960701c6b0abd222a03dfb77ee8a27ad..30e46e7aabb0673f314bdc770ce409be661c85f5 100644 --- a/content/zh/docs/Container/ListContainers.md +++ b/content/zh/docs/Container/ListContainers.md @@ -10,9 +10,7 @@ rpc ListContainers(ListContainersRequest) returns (ListContainersResponse) {} 返回container信息的列表,支持条件过滤。 -## 注意事项 - -## 参数: ListContainersRequest +## 参数

返回值

@@ -36,7 +36,7 @@ rpc ListContainerStats(ListContainerStatsRequest) returns (ListContainerStatsRes

repeated ContainerStats stats

容器信息的列表,具体内容参考左侧链接。注:disk和inodes只支持oci格式镜像启动的容器查询

+

容器信息的列表。注:disk和inodes只支持oci格式镜像启动的容器查询

-

参数成员

@@ -22,13 +20,13 @@ rpc ListContainers(ListContainersRequest) returns (ListContainersResponse) {}

ContainerFilter filter

条件过滤参数,具体内容参考左侧链接

+

条件过滤参数

-## 返回值: ListContainersResponse +## 返回值

返回值

diff --git a/content/zh/docs/Container/ListImages.md b/content/zh/docs/Container/ListImages.md index abd0e1bb952c4e9510f03f030858e38e9e61a21d..bc18449bad1acc4db90f87d8e14394151ee82fe1 100644 --- a/content/zh/docs/Container/ListImages.md +++ b/content/zh/docs/Container/ListImages.md @@ -14,8 +14,8 @@ rpc ListImages(ListImagesRequest) returns (ListImagesResponse) {} 为统一接口,对于embedded格式镜像,可以通过cri images查询到。但是因embedded镜像不是标准OCI镜像,因此查询得到的结果有以下限制: -1. 因embedded镜像无镜像ID,显示的镜像ID为 镜像的config digest。 -2. 因embedded镜像本身无digest仅有config的digest,且格式不符合OCI镜像规范,因此无法显示digest。 +- 因embedded镜像无镜像ID,显示的镜像ID为镜像的config digest。 +- 因embedded镜像本身无digest仅有config的digest,且格式不符合OCI镜像规范,因此无法显示digest。 ## 参数 diff --git a/content/zh/docs/Container/ListPodSandbox.md b/content/zh/docs/Container/ListPodSandbox.md index ea0d7fc3f474bf2adef7f48861fb0519d39d1141..705bab804d0c2bcd492d2c58359c2a5d3bca46c1 100644 --- a/content/zh/docs/Container/ListPodSandbox.md +++ b/content/zh/docs/Container/ListPodSandbox.md @@ -10,9 +10,7 @@ rpc ListPodSandbox(ListPodSandboxRequest) returns (ListPodSandboxResponse) {} 返回sandbox信息的列表,支持条件过滤。 -## 注意事项 - -## 参数: ListPodSandboxRequest +## 参数 -

参数成员

@@ -22,13 +20,13 @@ rpc ListPodSandbox(ListPodSandboxRequest) returns (ListPodSandboxResponse) {}

PodSandboxFilter filter

条件过滤参数,具体内容参考左侧链接

+

条件过滤参数

-## 返回值: ListPodSandboxResponse +## 返回值

返回值

diff --git a/content/zh/docs/Container/PodSandboxStatus.md b/content/zh/docs/Container/PodSandboxStatus.md index 43b21a9ba82a552572e1635368faffb286f40835..966501d16f0fb6d909efd8a814cb04ef80c0565e 100644 --- a/content/zh/docs/Container/PodSandboxStatus.md +++ b/content/zh/docs/Container/PodSandboxStatus.md @@ -10,9 +10,7 @@ rpc PodSandboxStatus(PodSandboxStatusRequest) returns (PodSandboxStatusResponse) 查询sandbox的状态,如果sandbox不存在,返回错误。 -## 注意事项 - -## 参数: PodSandboxStatusRequest +## 参数

参数成员

@@ -33,7 +31,7 @@ rpc PodSandboxStatus(PodSandboxStatusRequest) returns (PodSandboxStatusResponse)
-## 返回值: PodSandboxStatusResponse +## 返回值

返回值

diff --git a/content/zh/docs/Container/PortForward.md b/content/zh/docs/Container/PortForward.md deleted file mode 100644 index 0bca28f016653dda482d56c2004cbac828306d44..0000000000000000000000000000000000000000 --- a/content/zh/docs/Container/PortForward.md +++ /dev/null @@ -1,4 +0,0 @@ -# PortForward - -暂不支持 - diff --git a/content/zh/docs/Container/RemoveContainer.md b/content/zh/docs/Container/RemoveContainer.md index 384ea07aa9b56a9c11dd6fd51890eb5fe6755e0a..25fae7f722525f406f6680ae92f2d625e750131c 100644 --- a/content/zh/docs/Container/RemoveContainer.md +++ b/content/zh/docs/Container/RemoveContainer.md @@ -10,9 +10,7 @@ rpc RemoveContainer(RemoveContainerRequest) returns (RemoveContainerResponse) {} 删除一个容器,如果容器正在运行,必须强制停止,如果容器已经被删除,不能返回错误。 -## 注意事项 - -## 参数: RemoveContainerRequest +## 参数

参数成员

@@ -28,19 +26,7 @@ rpc RemoveContainer(RemoveContainerRequest) returns (RemoveContainerResponse) {}
-## 返回值: RemoveContainerResponse +## 返回值 - - - - - - - - -

返回值

-

描述

-

-

-
+无 diff --git a/content/zh/docs/Container/RemoveImage.md b/content/zh/docs/Container/RemoveImage.md index efe1c50003ea170dccb5fb9276767bf1fe2dacee..9f136317404559c08db82f834fcb804f49f6c947 100644 --- a/content/zh/docs/Container/RemoveImage.md +++ b/content/zh/docs/Container/RemoveImage.md @@ -32,17 +32,5 @@ rpc RemoveImage(RemoveImageRequest) returns (RemoveImageResponse) {} ## 返回值 - - - - - - - - -

返回值

-

描述

-

-

-
+无 diff --git a/content/zh/docs/Container/RemovePodSandbox.md b/content/zh/docs/Container/RemovePodSandbox.md index 26e377e748e6f9059dedb7b309b80b628f37d75e..89e16bc77e6c12972fbefe128f4132ddb0e9a1cc 100644 --- a/content/zh/docs/Container/RemovePodSandbox.md +++ b/content/zh/docs/Container/RemovePodSandbox.md @@ -14,7 +14,7 @@ rpc RemovePodSandbox(RemovePodSandboxRequest) returns (RemovePodSandboxResponse) 1. 删除sandbox时,不会删除sandbox的网络资源,在删除pod前必须先调用StopPodSandbox才能清理网络资源,调用者应当保证在删除sandbox之前至少调用一次StopPodSandbox。 -## 参数: RemovePodSandboxRequest +## 参数

参数成员

@@ -30,7 +30,7 @@ rpc RemovePodSandbox(RemovePodSandboxRequest) returns (RemovePodSandboxResponse)
-## 返回值: RemovePodSandboxResponse +## 返回值

返回值

diff --git a/content/zh/docs/Container/RunPodSandbox.md b/content/zh/docs/Container/RunPodSandbox.md index 077d512ce5bf0954deddaeb307439658bb0c537d..d1504ba973e763ba0742156341cffa980d8ac937 100644 --- a/content/zh/docs/Container/RunPodSandbox.md +++ b/content/zh/docs/Container/RunPodSandbox.md @@ -15,7 +15,7 @@ rpc RunPodSandbox(RunPodSandboxRequest) returns (RunPodSandboxResponse) {} 1. 启动sandbox的默认镜像为rnd-dockerhub.huawei.com/library/pause-$\{machine\}:3.0, 其中$\{machine\}为架构,在x86\_64上,machine的值为amd64,在arm64上,machine的值为aarch64,当前rnd-dockerhub仓库上只有amd64和aarch64镜像可供下载,若机器上无此镜像,请确保机器能从rnd-dockerhub下载,若要使用其它镜像,请参考[iSulad部署配置](部署配置.md#ZH-CN_TOPIC_0184808042)中的pod-sandbox-image指定镜像。 2. 由于容器命名以[PodSandboxMetadata](接口-2.md#zh-cn_topic_0182207110_li2359918134912)中的字段为来源,且以下划线"\_"为分割字符,因此限制metadata中的数据不能包含下划线,否则会出现sandbox运行成功,但无法使用[ListPodSandbox](ListPodSandbox.md#ZH-CN_TOPIC_0184808098)接口查询的现象。 -## 参数:RunPodSandboxRequest +## 参数 - + + +

参数成员

@@ -25,13 +25,18 @@ rpc RunPodSandbox(RunPodSandboxRequest) returns (RunPodSandboxResponse) {}

PodSandboxConfig config

sandbox的配置,具体参数含义参考左侧链接。

+

sandbox的配置

+

string runtime_handler

+

指定创建sandbox的runtime运行时,当前支持lcr、kata-runtime运行时类型。

-## 返回值:RunPodSandboxResponse +## 返回值 - diff --git "a/content/zh/docs/Container/Runtime\346\234\215\345\212\241.md" "b/content/zh/docs/Container/Runtime\346\234\215\345\212\241.md" index b78529a9ea7fbc1ae13c396e625fb8031c964f72..c6d36bddbc5351c34d5f8db78df1cc190a689d43 100644 --- "a/content/zh/docs/Container/Runtime\346\234\215\345\212\241.md" +++ "b/content/zh/docs/Container/Runtime\346\234\215\345\212\241.md" @@ -3,4 +3,3 @@ Runtime服务中包含操作pod和容器的接口,以及查询runtime自身配置和状态信息的接口。 - diff --git "a/content/zh/docs/Container/SELinux\345\256\211\345\205\250\351\205\215\347\275\256\345\234\272\346\231\257.md" "b/content/zh/docs/Container/SELinux\345\256\211\345\205\250\351\205\215\347\275\256\345\234\272\346\231\257.md" new file mode 100644 index 0000000000000000000000000000000000000000..d42f1521fd2b7a87eb85bcf04f11f841beec17c9 --- /dev/null +++ "b/content/zh/docs/Container/SELinux\345\256\211\345\205\250\351\205\215\347\275\256\345\234\272\346\231\257.md" @@ -0,0 +1,2 @@ +# SELinux安全配置场景 + diff --git a/content/zh/docs/Container/StartContainer.md b/content/zh/docs/Container/StartContainer.md index 1879276a2faad3d111dcf283e76dc099af51f3f4..6ec1007dc7d89478043ba083130c83f831cf94f1 100644 --- a/content/zh/docs/Container/StartContainer.md +++ b/content/zh/docs/Container/StartContainer.md @@ -10,9 +10,7 @@ rpc StartContainer(StartContainerRequest) returns (StartContainerResponse) {} 启动一个容器。 -## 注意事项 - -## 参数: StartContainerRequest +## 参数

返回值

@@ -41,7 +46,7 @@ rpc RunPodSandbox(RunPodSandboxRequest) returns (RunPodSandboxResponse) {}

string pod_sandbox_id

成功,返回response数据,具体参数参考左侧链接

+

成功,返回response数据

参数成员

@@ -28,7 +26,7 @@ rpc StartContainer(StartContainerRequest) returns (StartContainerResponse) {}
-## 返回值: StartContainerResponse +## 返回值

返回值

diff --git a/content/zh/docs/Container/Status.md b/content/zh/docs/Container/Status.md index bf891a9ba574f337ffd1cee18d43d4b7472567b4..0e6dda29409ebf0f0d91c5f64784e2da388fcf47 100644 --- a/content/zh/docs/Container/Status.md +++ b/content/zh/docs/Container/Status.md @@ -8,13 +8,13 @@ rpc Status(StatusRequest) returns (StatusResponse) {}; ## 接口描述 -获取runtime和pod的网络状态,在获取网络状态时,会触发网络配置的刷新。 +获取runtime和pod的网络状态,在获取网络状态时,会触发网络配置的刷新。仅支持runtime类型为lcr的容器。 ## 注意事项 如果网络配置刷新失败,不会影响原有配置;只有刷新成功时,才会覆盖原有配置。 -## 参数: StatusRequest +## 参数

参数成员

@@ -30,7 +30,7 @@ rpc Status(StatusRequest) returns (StatusResponse) {};
-## 返回值: StatusResponse +## 返回值

返回值

diff --git a/content/zh/docs/Container/StopContainer.md b/content/zh/docs/Container/StopContainer.md index cec16a6f06315ce72d55cf68bec470f9918d64bc..51775b58810d24df743948b8610577ff4678b14f 100644 --- a/content/zh/docs/Container/StopContainer.md +++ b/content/zh/docs/Container/StopContainer.md @@ -10,9 +10,7 @@ rpc StopContainer(StopContainerRequest) returns (StopContainerResponse) {} 停止一个running的容器,支持配置优雅停止时间timeout,如果容器已经停止,不能返回错误。 -## 注意事项 - -## 参数: StopContainerRequest +## 参数

参数成员

@@ -33,19 +31,7 @@ rpc StopContainer(StopContainerRequest) returns (StopContainerResponse) {}
-## 返回值: StopContainerResponse +## 返回值 - - - - - - - - -

返回值

-

描述

-

-

-
+无 diff --git a/content/zh/docs/Container/StopPodSandbox.md b/content/zh/docs/Container/StopPodSandbox.md index 14b709b35462c31fd1f2017367d90cdec70ea9a3..a5141d74d63dbfa89295d179fb0cfbc9b49c6015 100644 --- a/content/zh/docs/Container/StopPodSandbox.md +++ b/content/zh/docs/Container/StopPodSandbox.md @@ -10,9 +10,7 @@ rpc StopPodSandbox(StopPodSandboxRequest) returns (StopPodSandboxResponse) {} 停止pod sandbox,停止sandbox容器,回收分配给sandbox的网络资源(比如IP地址)。如果有任何running的容器属于该sandbox,则必须被强制停止。 -## 注意事项 - -## 参数: StopPodSandboxRequest +## 参数

参数成员

@@ -28,7 +26,7 @@ rpc StopPodSandbox(StopPodSandboxRequest) returns (StopPodSandboxResponse) {}
-## 返回值: StopPodSandboxResponse +## 返回值

返回值

diff --git a/content/zh/docs/Container/UpdateContainerResources.md b/content/zh/docs/Container/UpdateContainerResources.md index d11b44f187706c7ec076bb4cc1d96db67994a4cf..ee20086d0a698856e3795f888696e47eeb6c6972 100644 --- a/content/zh/docs/Container/UpdateContainerResources.md +++ b/content/zh/docs/Container/UpdateContainerResources.md @@ -12,11 +12,10 @@ rpc UpdateContainerResources(UpdateContainerResourcesRequest) returns (UpdateCon ## 注意事项 -1. 该接口仅用于更新容器的资源配置,不能用于更新Pod的资源配置。 +- 该接口仅用于更新容器的资源配置,不能用于更新Pod的资源配置。 +- 当前不支持更新容器oom\_score\_adj配置。 -2. 当前不支持更新容器oom\_score\_adj配置 - -## 参数: UpdateContainerResourcesRequest +## 参数

参数成员

@@ -37,19 +36,7 @@ rpc UpdateContainerResources(UpdateContainerResourcesRequest) returns (UpdateCon
-## 返回值: UpdateContainerResourcesResponse +## 返回值 - - - - - - - - -

返回值

-

描述

-

-

-
+无 diff --git a/content/zh/docs/Container/UpdateRuntimeConfig.md b/content/zh/docs/Container/UpdateRuntimeConfig.md index 397721ab7e234c15a96220bf85656a591467707c..96caaf851b445865efc1fc81cb085c07d1c7b4f4 100644 --- a/content/zh/docs/Container/UpdateRuntimeConfig.md +++ b/content/zh/docs/Container/UpdateRuntimeConfig.md @@ -14,7 +14,7 @@ rpc UpdateRuntimeConfig(UpdateRuntimeConfigRequest) returns (UpdateRuntimeConfig 接口操作不会对系统管理信息修改,只是记录一条日志。 -## 参数: UpdateRuntimeConfigRequest +## 参数

参数成员

@@ -30,19 +30,7 @@ rpc UpdateRuntimeConfig(UpdateRuntimeConfigRequest) returns (UpdateRuntimeConfig
-## 返回值: UpdateRuntimeConfigResponse +## 返回值 - - - - - - - - -

返回值

-

描述

-

-

-
+无 diff --git a/content/zh/docs/Container/attach-1.md b/content/zh/docs/Container/attach-1.md index bffed307cf3a4ab55b66d4f51af2ac3db6d7809d..c5844661eb01c849459051eafb2f3d9a086f350a 100644 --- a/content/zh/docs/Container/attach-1.md +++ b/content/zh/docs/Container/attach-1.md @@ -1,19 +1,64 @@ -# attach +# Attach -用法:**docker attach \[OPTIONS\] CONTAINER** +## 接口原型 -功能:附加到一个运行着的容器 +``` +rpc Attach(AttachRequest) returns (AttachResponse) {} +``` -选项: +## 接口描述 ---no-stdin=false 不附加STDIN +接管容器的1号进程,采用的gRPC通讯方式从CRI服务端获取url,再通过获得的url与websocket服务端建立长连接,实现与容器的交互。仅支持runtime类型为lcr的容器。 ---sig-proxy=true 代理所有到容器内部的信号,不代理SIGCHLD, SIGKILL, SIGSTOP +## 参数 -示例: + + + + + + + + + + + + + + + + + + + + +

参数成员

+

描述

+

string container_id

+

容器ID

+

bool tty

+

是否在TTY中执行命令

+

bool stdin

+

是否流式标准输入

+

bool stdout

+

是否流式标准输出

+

bool stderr

+

是否流式输出标准错误

+
-``` -$ sudo docker attach attach_test -root@2988b8658669:/# ls bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var -``` +## 返回值 + + + + + + + + + +

返回值

+

描述

+

string url

+

attach流服务器的完全限定URL

+
diff --git a/content/zh/docs/Container/build.md b/content/zh/docs/Container/build.md index 7330667d575c594015f2786aa2ab7138231454bf..033adb0c2ed7ddfe1bf2ae4aa926e6016e34358a 100644 --- a/content/zh/docs/Container/build.md +++ b/content/zh/docs/Container/build.md @@ -67,12 +67,16 @@ Dockerfile介绍: Dockerfile是一个镜像的表示,可以通过Dockerfile来描述构建镜像的步骤,并自动构建一个容器,所有的 Dockerfile 命令格式都是:**INSTRUCTION arguments** +   + **FROM命令** 格式:FROM 或 FROM : 功能:该命令指定基本镜像,是所有Dockerfile文件的第一个命令,如果没有指定基本镜像的tag,使用默认tag名latest。 +   + **RUN命令** 格式:RUN \(the command is run in a shell - \`/bin/sh -c\`\) 或者 @@ -85,58 +89,78 @@ docker run image command docker commit container\_id +   + **注释** 使用\#注释 +   + **MAINTAINER命令** 格式:MAINTAINER 功能:命令用来指定维护者的姓名和联系方式 +   + **ENTRYPOINT命令** 格式:ENTRYPOINT cmd param1 param2 ... 或者ENTRYPOINT \["cmd", "param1", "param2"...\] 功能:设置在容器启动时执行命令 +   + **USER命令** 格式:USER name 功能:指定 memcached 的运行用户 +   + **EXPOSE命令** 格式:EXPOSE \[...\] 功能:开放镜像的一个或多个端口 +   + **ENV命令** 格式:ENV 功能:设置环境变量,设置了后,后续的RUN命令都可以使用 +   + **ADD命令** 格式:ADD 功能:从src复制文件到container的dest路径, 是相对被构建的源目录的相对路径,可以是文件或目录的路径,也可以是一个远程的文件url, 是container中的绝对路径 +   + **VOLUME命令** 格式:VOLUME \[""\] 功能:创建一个挂载点用于共享目录 +   + **WORKDIR命令** 格式:workdir 功能:配置RUN, CMD, ENTRYPOINT 命令设置当前工作路径可以设置多次,如果是相对路径,则相对前一个 WORKDIR 命令 +   + **CMD命令** 格式:CMD \["executable","param1","param2"\] \(like an exec, preferred form\) @@ -147,6 +171,8 @@ CMD command param1 param2 \(as a shell\) 功能:一个Dockerfile里只能有一个CMD,如果有多个,只有最后一个生效 +   + **ONBUILD命令** 格式:ONBUILD \[其它指令\] @@ -156,7 +182,7 @@ CMD command param1 param2 \(as a shell\) 下面是Dockerfile的一个完整例子,该Dockerfile将构建一个安装了sshd服务的image -
FROM ubuntu:14.04
+
FROM busybox
 ENV  http_proxy http://192.168.0.226:3128
 ENV  https_proxy https://192.168.0.226:3128
 RUN apt-get update && apt-get install -y openssh-server
@@ -173,13 +199,13 @@ ENTRYPOINT /usr/sbin/sshd -D
1. 以上文的Dockerfile构建一个image ``` - $ sudo docker build -t ubuntu:latest + $ sudo docker build -t busybox:latest ``` 2. 通过以下命令可以看到这个生成的image: ``` - docker images | grep ubuntu + docker images | grep busybox ``` diff --git "a/content/zh/docs/Container/capabilities\345\256\211\345\205\250\351\205\215\347\275\256\345\234\272\346\231\257.md" "b/content/zh/docs/Container/capabilities\345\256\211\345\205\250\351\205\215\347\275\256\345\234\272\346\231\257.md" index a13d2a4b42f883d187c3089b556b48073bba65c7..5a0af99775c40198cb62323db72cda12c200775a 100644 --- "a/content/zh/docs/Container/capabilities\345\256\211\345\205\250\351\205\215\347\275\256\345\234\272\346\231\257.md" +++ "b/content/zh/docs/Container/capabilities\345\256\211\345\205\250\351\205\215\347\275\256\345\234\272\346\231\257.md" @@ -1,2 +1 @@ # capabilities安全配置场景 - diff --git a/content/zh/docs/Container/commit.md b/content/zh/docs/Container/commit.md index 16e1a00e5096e413ffca3729912a37da0fc62411..b79edf74ac289e0d9fad47c5e316f37102c57e9a 100644 --- a/content/zh/docs/Container/commit.md +++ b/content/zh/docs/Container/commit.md @@ -25,3 +25,5 @@ REPOSITORY TAG IMAGE ID CREATED busybox latest e02e811dd08f 2 years ago 1.09MB ``` +   + diff --git a/content/zh/docs/Container/create.md b/content/zh/docs/Container/create.md index 842456908f78183005d721a0e086d661cbd7d932..20f82a1c1fbe19c1fb6610ae21358a6a00c0afd5 100644 --- a/content/zh/docs/Container/create.md +++ b/content/zh/docs/Container/create.md @@ -380,9 +380,9 @@ 示例: -创建了一个名为ubuntu的容器,创建之后的容器用docker start命令启动。 +创建了一个名为busybox的容器,创建之后的容器用docker start命令启动。 ``` -$ sudo docker create -ti --name=ubuntu ubuntu /bin/bash +$ sudo docker create -ti --name=busybox busybox /bin/bash ``` diff --git "a/content/zh/docs/Container/daemon-umask\351\205\215\347\275\256.md" "b/content/zh/docs/Container/daemon-umask\351\205\215\347\275\256.md" index 171fe4c3cf8610987dd797f5a043d529f709e919..025fb20c13dbf59446875843fc61222dccef0244 100644 --- "a/content/zh/docs/Container/daemon-umask\351\205\215\347\275\256.md" +++ "b/content/zh/docs/Container/daemon-umask\351\205\215\347\275\256.md" @@ -1,6 +1,6 @@ # daemon umask配置 -容器主进程和exec进程的默认umask为0022,为了满足安全性需求,避免容器受到攻击,修改runc了实现,将默认umask修改为0027。修改后others群组将无法访问新建文件或目录。 +容器主进程和exec进程的默认umask为0022,为了满足安全性需求,避免容器受到攻击,修改runc的实现,将默认umask修改为0027。修改后others群组将无法访问新建文件或目录。 docker启动容器时的默认umask值为0027,可以在dockerd启动时,使用--exec-opt native.umask=normal参数将容器启动时的umask修改为0022。 diff --git "a/content/zh/docs/Container/daemon\345\220\257\345\212\250\346\227\266\351\227\264.md" "b/content/zh/docs/Container/daemon\345\220\257\345\212\250\346\227\266\351\227\264.md" index a3dee78ec97b5edab5f3c3c96493616ffc9ed65a..15819abada90943834bdb6bcede4036d57aec741 100644 --- "a/content/zh/docs/Container/daemon\345\220\257\345\212\250\346\227\266\351\227\264.md" +++ "b/content/zh/docs/Container/daemon\345\220\257\345\212\250\346\227\266\351\227\264.md" @@ -4,7 +4,9 @@ Docker服务由systemd管理,systemd对各个服务的启动时间有限制, - 如果使用devicemapper且为第一次启动,docker daemon需要对该设备做文件系统初始化操作,而该操作会进行大量磁盘IO操作,在磁盘性能不佳或存在大量IO竞争时,很可能会导致docker daemon启动超时。devicemapper设备只需要初始化一次,后续docker daemon启动时不再需要重复初始化。 - 如果当前系统资源占用太高,导致系统卡顿,系统所有的操作都会变慢,也可能会出现docker服务启动超时的情况。 -- daemon重启过程中,需要遍历并读取docker工作目录下每一个容器的配置文件、容器init层和可写层的配置,如果当前系统存在过多容器(包含created和exited的容器)、并且磁盘读写性能受限,也会出现daemon遍历文件过久导致docker服务启动超时的情况。 +- daemon重启过程中,需要遍历并读取docker工作目录下每一个容器的配置文件、容器init层和可写层的配置,如果当前系统存在过多容器(包含created和exited的容器),并且磁盘读写性能受限,也会出现daemon遍历文件过久导致docker服务启动超时的情况。 + +   出现服务启动超时情况,建议对以下两种情况进行排查调整: diff --git a/content/zh/docs/Container/diff.md b/content/zh/docs/Container/diff.md index 205522807a26e585868e7cfcfa3ec32991b824bf..601c746dff2693ba2584551bfc97a9ff4e2d67bc 100644 --- a/content/zh/docs/Container/diff.md +++ b/content/zh/docs/Container/diff.md @@ -15,3 +15,5 @@ A /root/.bash_history A /test ``` +   + diff --git "a/content/zh/docs/Container/docker\351\225\234\345\203\217\347\256\241\347\220\206.md" "b/content/zh/docs/Container/docker\351\225\234\345\203\217\347\256\241\347\220\206.md" index 75ed01c322c92988678c6d359b8e171d3cb65d68..962ea2a53d6ca9bfe5b82daf8053cfb3a2df1454 100644 --- "a/content/zh/docs/Container/docker\351\225\234\345\203\217\347\256\241\347\220\206.md" +++ "b/content/zh/docs/Container/docker\351\225\234\345\203\217\347\256\241\347\220\206.md" @@ -1,3 +1 @@ # docker镜像管理 - - diff --git "a/content/zh/docs/Container/embedded\351\225\234\345\203\217\347\256\241\347\220\206.md" "b/content/zh/docs/Container/embedded\351\225\234\345\203\217\347\256\241\347\220\206.md" index d30286481017cc873e8f609d2da66a347f3d24f7..058ed02322ca7a49156190859df96bea4dc7f628 100644 --- "a/content/zh/docs/Container/embedded\351\225\234\345\203\217\347\256\241\347\220\206.md" +++ "b/content/zh/docs/Container/embedded\351\225\234\345\203\217\347\256\241\347\220\206.md" @@ -1,3 +1 @@ # embedded镜像管理 - - diff --git a/content/zh/docs/Container/events.md b/content/zh/docs/Container/events.md index 5b7221ca674a79624360e262012d2a090a148575..684ddeb4a10eef354664f7d2c89c6b4244d5abd2 100644 --- a/content/zh/docs/Container/events.md +++ b/content/zh/docs/Container/events.md @@ -23,3 +23,5 @@ $ sudo docker events 2019-08-28T16:23:09.924121158+08:00 container resize 53450588a20800d8231aa1dc4439a734e16955387efb5f259c47737dba9e2b5e (height=48, image=busybox:latest, name=eager_wu, width=210) ``` +   + diff --git a/content/zh/docs/Container/exec-1.md b/content/zh/docs/Container/exec-1.md index 82742669654620a596ac9eb78580903361833f70..54855cbcf4897bddc95d6486b3cf5abab70153ba 100644 --- a/content/zh/docs/Container/exec-1.md +++ b/content/zh/docs/Container/exec-1.md @@ -1,26 +1,73 @@ -# exec +# Exec -用法:**docker exec \[OPTIONS\] CONTAINER COMMAND \[ARG...\]** +## 接口原型 -功能:在一个运行的容器内执行命令 +``` +rpc Exec(ExecRequest) returns (ExecResponse) {} +``` -选项: +## 接口描述 --d, --detach=false 在后台运行 +在容器中执行命令,采用的gRPC通讯方式从CRI服务端获取url,再通过获得的url与websocket服务端建立长连接,实现与容器的交互。 --i, --interactive=false 保持容器的STDIN打开 +## 注意事项 --t, --tty=false 分配一个虚拟终端 +执行执行一条单独的命令,也能打开终端与容器交互。stdin/stdout/stderr之一必须是真的。如果tty为真,stderr必须是假的。 不支持多路复用, 在这种情况下, stdout和stderr的输出将合并为单流。 ---privileged 以特权模式执行命令 +## 参数 --u, --user 指定用户名或者UID + + + + + + + + + + + + + + + + + + + + + + + +

参数成员

+

描述

+

string container_id

+

容器ID

+

repeated string cmd

+

待执行的命令

+

bool tty

+

是否在TTY中执行命令

+

bool stdin

+

是否流式标准输入

+

bool stdout

+

是否流式标准输出

+

bool stderr

+

是否流式输出标准错误

+
-示例: +## 返回值 -``` -$ sudo docker exec -ti exec_test ls -bin etc lib media opt root sbin sys tmp var -dev home lib64 mnt proc run srv test usr -``` + + + + + + + + +

返回值

+

描述

+

string url

+

exec流服务器的完全限定URL

+
diff --git a/content/zh/docs/Container/export.md b/content/zh/docs/Container/export.md index 71cad0ad6a58e6ba2fee4fa7253c6dc4160a976d..08af037393e439613dc5070efcab57219a5813cb 100644 --- a/content/zh/docs/Container/export.md +++ b/content/zh/docs/Container/export.md @@ -16,3 +16,5 @@ $ ls busybox.tar ``` +   + diff --git a/content/zh/docs/Container/history.md b/content/zh/docs/Container/history.md index 107fffd092185a87b7b5eb2d493651589edac39f..f77e342b37313724b8c4ed5808aafb46443a2418 100644 --- a/content/zh/docs/Container/history.md +++ b/content/zh/docs/Container/history.md @@ -21,3 +21,5 @@ be4672959e8b 15 minutes ago bash 23B 21970dfada48 4 weeks ago 128MB Imported from - ``` +   + diff --git "a/content/zh/docs/Container/iSula\345\256\271\345\231\250\345\274\225\346\223\216.md" "b/content/zh/docs/Container/iSula\345\256\271\345\231\250\345\274\225\346\223\216.md" index ba5a421cf1aec25275bc6d2aabe8f7d7add74a52..0dd7ea15a487b06c72079787b2689c9226200350 100644 --- "a/content/zh/docs/Container/iSula\345\256\271\345\231\250\345\274\225\346\223\216.md" +++ "b/content/zh/docs/Container/iSula\345\256\271\345\231\250\345\274\225\346\223\216.md" @@ -1,4 +1 @@ # iSula容器引擎 - - - diff --git "a/content/zh/docs/Container/iSula\345\256\271\345\231\250\345\274\225\346\223\216\347\232\204\351\205\215\347\275\256.md" "b/content/zh/docs/Container/iSula\345\256\271\345\231\250\345\274\225\346\223\216\347\232\204\351\205\215\347\275\256.md" new file mode 100644 index 0000000000000000000000000000000000000000..03794b86c9bb1e9bafb49daab756fd15243b5699 --- /dev/null +++ "b/content/zh/docs/Container/iSula\345\256\271\345\231\250\345\274\225\346\223\216\347\232\204\351\205\215\347\275\256.md" @@ -0,0 +1,34 @@ +# iSula容器引擎的配置 + +与docker-engine容器引擎类似,为了让iSula容器引擎支持新的容器运行时kata-runtime,需要通过以下步骤对iSula容器引擎进行配置: + +1. 请保证环境上所有的软件包(iSulad、kata-containers)都已经安装完毕。 +2. 停止isulad。 + + ``` + systemctl stop isulad + ``` + +3. 修改iSula容器引擎的配置文件/etc/isulad/daemon.json,并新增如下配置: + + ``` + { + "runtimes": { + "kata-runtime": { + "path": "/usr/bin/kata-runtime", + "runtime-args": [ + "--kata-config", + "/usr/share/defaults/kata-containers/configuration.toml" + ] + } + } + } + ``` + +4. 重新启动isulad。 + + ``` + systemctl start isulad + ``` + + diff --git a/content/zh/docs/Container/images.md b/content/zh/docs/Container/images.md index fa6de983d45c61dd278b5e8a7242706f3f49b61b..3209e26f5024a595158974e34a8c40354f32246f 100644 --- a/content/zh/docs/Container/images.md +++ b/content/zh/docs/Container/images.md @@ -22,3 +22,5 @@ REPOSITORY TAG IMAGE ID CREATED busybox latest e02e811dd08f 2 years ago 1.09MB ``` +   + diff --git a/content/zh/docs/Container/import.md b/content/zh/docs/Container/import.md index ad2dc4050725dfcab5a71d3f87d3e77470f948bc..67104ef5886b92e4758bd0bdabbb357e9219938e 100644 --- a/content/zh/docs/Container/import.md +++ b/content/zh/docs/Container/import.md @@ -18,3 +18,5 @@ REPOSITORY TAG IMAGE ID CREATED busybox test a79d8ae12403 2 seconds ago 1.3MB ``` +   + diff --git a/content/zh/docs/Container/info.md b/content/zh/docs/Container/info.md index b16f2615804b855a15e6df3795b2b5fcae730b42..d17248145d9aaaeb72f6d36d9e6c04cdd24f49dd 100644 --- a/content/zh/docs/Container/info.md +++ b/content/zh/docs/Container/info.md @@ -35,3 +35,5 @@ Storage Driver: devicemapper ...... ``` +   + diff --git a/content/zh/docs/Container/inspect.md b/content/zh/docs/Container/inspect.md index ebf246f03de0e7b671071d5905f50b02af26b350..dd7c2776c7ab132fe11d9e7bc15ddabba7edf03b 100644 --- a/content/zh/docs/Container/inspect.md +++ b/content/zh/docs/Container/inspect.md @@ -42,10 +42,12 @@ ...... ``` -2. 按照给定格式返回一个容器的指定信息,下面的例子返回ubuntu\_test容器IP地址 +    + +2. 按照给定格式返回一个容器的指定信息,下面的例子返回busybox\_test容器IP地址 ``` - $ sudo docker inspect -f {{.NetworkSettings.IPAddress}} ubuntu_test + $ sudo docker inspect -f {{.NetworkSettings.IPAddress}} busybox_test 172.17.0.91 ``` diff --git a/content/zh/docs/Container/logs.md b/content/zh/docs/Container/logs.md index 386c4a631f0a339e3db5fc048b3273c169b565ec..51cdd2c41a1c56c05752d23de9cc44c334c5cf4e 100644 --- a/content/zh/docs/Container/logs.md +++ b/content/zh/docs/Container/logs.md @@ -30,6 +30,8 @@ {"level":"info","ts":1566979103.4577134,"caller":"all-in-one/main.go:256","msg":"Listening for Zipkin HTTP traffic","zipkin.http-port":9411} ``` +    + 2. 加上-f选项,实时打印jaegertracing容器的日志信息 ``` @@ -41,4 +43,6 @@ {"level":"info","ts":1566979103.3922884,"caller":"all-in-one/main.go:186","msg":"Starting agent"} ``` +    + diff --git "a/content/zh/docs/Container/namespace\345\214\226\345\206\205\346\240\270\345\217\202\346\225\260\345\217\257\345\206\231.md" "b/content/zh/docs/Container/namespace\345\214\226\345\206\205\346\240\270\345\217\202\346\225\260\345\217\257\345\206\231.md" index 2f6ede86bdb6574aeb77dc6009fbfa7fd1cef412..12143c332edde681d3dd13191b71d575d9956f15 100644 --- "a/content/zh/docs/Container/namespace\345\214\226\345\206\205\346\240\270\345\217\202\346\225\260\345\217\257\345\206\231.md" +++ "b/content/zh/docs/Container/namespace\345\214\226\345\206\205\346\240\270\345\217\202\346\225\260\345\217\257\345\206\231.md" @@ -8,6 +8,8 @@ 在允许用户在容器内修改时,部分内核参数是全局有效的,某个容器修改后,会影响主机上所有的程序,安全性降低。 +   + 系统容器提供--ns-change-opt参数,可以指定namespace化的内核参数在容器内动态设置,当前仅支持net、ipc。 ## 参数说明 diff --git a/content/zh/docs/Container/pause-unpause.md b/content/zh/docs/Container/pause-unpause.md index 0e4daf6e7fc1c5c7ad778b99d12795ca85366f9d..9550bae91eb4734d778a91d40957c1ab475df602 100644 --- a/content/zh/docs/Container/pause-unpause.md +++ b/content/zh/docs/Container/pause-unpause.md @@ -24,6 +24,8 @@ $ sudo curl -v 127.0.0.1:5000 ``` +    + 2. 暂停这个容器内的进程 ``` @@ -40,4 +42,6 @@ 此时步骤2中的curl访问将恢复运行,请求状态码返回200 OK。 +    + diff --git "a/content/zh/docs/Container/proc\346\226\207\344\273\266\347\263\273\347\273\237\351\232\224\347\246\273\357\274\210lxcfs\357\274\211.md" "b/content/zh/docs/Container/proc\346\226\207\344\273\266\347\263\273\347\273\237\351\232\224\347\246\273\357\274\210lxcfs\357\274\211.md" index 18f177a5a42f700b770effb07815f5c597baa84d..4a63d21cfe7c98c75b5cffb8774e7a2dd403c5de 100644 --- "a/content/zh/docs/Container/proc\346\226\207\344\273\266\347\263\273\347\273\237\351\232\224\347\246\273\357\274\210lxcfs\357\274\211.md" +++ "b/content/zh/docs/Container/proc\346\226\207\344\273\266\347\263\273\347\273\237\351\232\224\347\246\273\357\274\210lxcfs\357\274\211.md" @@ -6,12 +6,12 @@ ## 接口说明 -系统容器对外提供两个工具包:一个是lxcfs软件,另外一个是配合lxcfs一起使用的isulad-lxcfs-toolkit工具。其中lxcfs作为宿主机daemon进程常驻,isulad-lxcfs-toolkit通过hook机制将宿主机的lxcfs文件系统绑定挂载到容器。 +系统容器对外提供两个工具包:一个是lxcfs软件,另外一个是配合lxcfs一起使用的lxcfs-toolkit工具。其中lxcfs作为宿主机daemon进程常驻,lxcfs-toolkit通过hook机制将宿主机的lxcfs文件系统绑定挂载到容器。 -isulad-lxcfs-toolkit命令行格式如下: +lxcfs-toolkit命令行格式如下: ``` -isulad-lxcfs-toolkit [OPTIONS] COMMAND [COMMAND_OPTIONS] +lxcfs-toolkit [OPTIONS] COMMAND [COMMAND_OPTIONS] ``` @@ -76,10 +76,10 @@ isulad-lxcfs-toolkit [OPTIONS] COMMAND [COMMAND_OPTIONS] ## 使用示例 -1. 首先需要安装lxcfs和isulad-lxcfs-toolkit这两个包,并启动lxcfs服务。 +1. 首先需要安装lxcfs和lxcfs-toolkit这两个包,并启动lxcfs服务。 ``` - [root@localhost ~]# yum install lxcfs isulad-lxcfs-toolkit + [root@localhost ~]# yum install lxcfs lxcfs-toolkit [root@localhost ~]# systemctl start lxcfs ``` diff --git a/content/zh/docs/Container/pull.md b/content/zh/docs/Container/pull.md index b1135d43d8f1586e6a374d0d3998ca7e391c631b..d1df4a8b32a518d9dcca42da4f1af67effd6e582 100644 --- a/content/zh/docs/Container/pull.md +++ b/content/zh/docs/Container/pull.md @@ -6,7 +6,7 @@ 选项: --a, --all-tags=false 下载一个镜像仓库的所有镜像(一个镜像仓库可以被打多个标签,比如一个ubuntu镜像库,可能有多个标签如ubuntu:14.04,ubuntu:13.10,ubuntu:latest等,使用-a选项后,将所有标签的ubuntu镜像拉取下来) +-a, --all-tags=false 下载一个镜像仓库的所有镜像(一个镜像仓库可以被打多个标签,比如一个busybox镜像库,可能有多个标签如busybox:14.04,busybox:13.10,busybox:latest等,使用-a选项后,将所有标签的busybox镜像拉取下来) 示例: diff --git a/content/zh/docs/Container/push.md b/content/zh/docs/Container/push.md index e1e3c08d89804e2c83c5bfb2a59530e87ab23abf..d68f02b91ebb1b9641a2991c7a25a269743e717b 100644 --- a/content/zh/docs/Container/push.md +++ b/content/zh/docs/Container/push.md @@ -9,16 +9,16 @@ 示例: 1. 将一个image推送到私有镜像库192.168.1.110:5000中 -2. 将要推送的镜像打标签(docker tag命令将在下文介绍),本例中要推送的镜像为ubuntu:sshd +2. 将要推送的镜像打标签(docker tag命令将在下文介绍),本例中要推送的镜像为busybox:sshd ``` - $ sudo docker tag ubuntu:sshd 192.168.1.110:5000/ubuntu:sshd + $ sudo docker tag ubuntu:sshd 192.168.1.110:5000/busybox:sshd ``` 3. 将打好标签的镜像推送到私有镜像库中 ``` - $ sudo docker push 192.168.1.110:5000/ubuntu:sshd + $ sudo docker push 192.168.1.110:5000/busybox:sshd ``` 推送的时候会自动检测所依赖的层在镜像库中是否已存在,如果以存在,跳过该层。 diff --git a/content/zh/docs/Container/rename.md b/content/zh/docs/Container/rename.md index 020170c84d6c07c98492dc7636d7704b0b72a28f..2382acb22f61b6b7cc9619de127d4bfd1b040dec 100644 --- a/content/zh/docs/Container/rename.md +++ b/content/zh/docs/Container/rename.md @@ -1,11 +1,9 @@ # rename -用法:**docker rename \[OPTIONS\] OLD\_NAME NEW\_NAME** +用法:**docker rename OLD\_NAME NEW\_NAME** 功能:重命名容器 -选项: - 示例: 示例中,用docker run创建并启动一个容器,使用docker rename对容器重命名,并查看容器名是否改变。 @@ -20,3 +18,5 @@ CONTAINER ID IMAGE COMMAND CREATED b15976967abb busybox:latest "bash" 34 seconds ago Up 33 seconds new_name ``` +   + diff --git a/content/zh/docs/Container/restart.md b/content/zh/docs/Container/restart.md index d34ab4d6f17bbafe0d357f16e25e53bf4cf9d4e9..3f523956ac56de0e1a753b42e6f5c12bbce43c58 100644 --- a/content/zh/docs/Container/restart.md +++ b/content/zh/docs/Container/restart.md @@ -11,7 +11,7 @@ 示例: ``` -$ sudo docker restart ubuntu +$ sudo docker restart busybox ``` >![](public_sys-resources/icon-note.gif) **说明:** diff --git a/content/zh/docs/Container/rmi.md b/content/zh/docs/Container/rmi.md index ce833dc9288aedea7b2915ef1c75807744674c48..6fc24244f1fe87c3beb02cb2cb24dcc76e3fad81 100644 --- a/content/zh/docs/Container/rmi.md +++ b/content/zh/docs/Container/rmi.md @@ -13,6 +13,6 @@ 示例: ``` -$ sudo docker rmi 192.168.1.110:5000/ubuntu:sshd +$ sudo docker rmi 192.168.1.110:5000/busybox:sshd ``` diff --git a/content/zh/docs/Container/run.md b/content/zh/docs/Container/run.md index 8bf72a84529027470ec1f7c63e0a5c2856b6f90b..e6a635f11d430288bbc80420419b7eed7b7ee174 100644 --- a/content/zh/docs/Container/run.md +++ b/content/zh/docs/Container/run.md @@ -14,9 +14,9 @@ 示例: -使用ubuntu镜像运行一个容器,在容器启动后执行/bin/bash +使用busybox镜像运行一个容器,在容器启动后执行/bin/sh ``` -$ sudo docker run -ti ubuntu /bin/bash +$ sudo docker run -ti busybox /bin/sh ``` diff --git a/content/zh/docs/Container/search.md b/content/zh/docs/Container/search.md index 72140e46715ea4471ceecd54d975d6d1542c85ff..0428d224c409c504205691219b62861b76c76f29 100644 --- a/content/zh/docs/Container/search.md +++ b/content/zh/docs/Container/search.md @@ -27,6 +27,8 @@ tiangolo/nginx-rtmp Docker image with Nginx using the nginx-rtmp… 51 [OK] ``` +    + 2. 在私有镜像库中搜寻busybox,在私有镜像库中搜寻时要加上私有镜像库的地址 ``` diff --git "a/content/zh/docs/Container/seccomp\345\256\211\345\205\250\351\205\215\347\275\256\345\234\272\346\231\257.md" "b/content/zh/docs/Container/seccomp\345\256\211\345\205\250\351\205\215\347\275\256\345\234\272\346\231\257.md" index 9d16b35135e28cb1462620260822a9bf886fcf4a..a9880f179bf22300e3e070291efd5936b8bfb009 100644 --- "a/content/zh/docs/Container/seccomp\345\256\211\345\205\250\351\205\215\347\275\256\345\234\272\346\231\257.md" +++ "b/content/zh/docs/Container/seccomp\345\256\211\345\205\250\351\205\215\347\275\256\345\234\272\346\231\257.md" @@ -1 +1,2 @@ # seccomp安全配置场景 + diff --git a/content/zh/docs/Container/start.md b/content/zh/docs/Container/start.md index 3a9d3be66c82eed6a20f203a4fc3e54e49a51eae..fbf3e4035461c96c66fe3dfa0184ca97b4267e66 100644 --- a/content/zh/docs/Container/start.md +++ b/content/zh/docs/Container/start.md @@ -12,11 +12,11 @@ 实例: -启动一个名为ubuntu的容器,添加-i -a选项附加标准输入输出,容器启动后直接进入容器内部,输入exit可以退出容器。 +启动一个名为busybox的容器,添加-i -a选项附加标准输入输出,容器启动后直接进入容器内部,输入exit可以退出容器。 如果启动容器时不加-i -a选项,容器将在后台启动。 ``` -$ sudo docker start -i -a ubuntu +$ sudo docker start -i -a busybox ``` diff --git a/content/zh/docs/Container/stats.md b/content/zh/docs/Container/stats.md index 55fad0f28448d4fd4b25f43d30687070783004e0..b9682e4a68c3078e97aaf10736f5d42e731151e3 100644 --- a/content/zh/docs/Container/stats.md +++ b/content/zh/docs/Container/stats.md @@ -22,3 +22,5 @@ CONTAINER ID NAME CPU % MEM USAGE / LIMI deb9e49fdef1 hardcore_montalcini 0.01% 12.79MiB / 125.8GiB 0.01% 0B / 0B 0B / 0B 9 ``` +   + diff --git a/content/zh/docs/Container/stop.md b/content/zh/docs/Container/stop.md index d3c6cc2165c6396275d7b6f29495e5fb85240caa..d3f2fa65342176311fa881102678fd5fd0ef7c1d 100644 --- a/content/zh/docs/Container/stop.md +++ b/content/zh/docs/Container/stop.md @@ -11,6 +11,6 @@ 示例: ``` -$ sudo docker stop -t=15 ubuntu +$ sudo docker stop -t=15 busybox ``` diff --git a/content/zh/docs/Container/update.md b/content/zh/docs/Container/update.md index 365ccf932280bc712d9963f6bcccf2547a2374ff..79569c50d1c51141ad755a9c19d0d35491049311 100644 --- a/content/zh/docs/Container/update.md +++ b/content/zh/docs/Container/update.md @@ -87,7 +87,7 @@ 示例: -变更一个容器名为ubuntu的cpu和mem配置,包括容器获得主机CPU的相对权重值为512,容器中进程允许运行的CPU核心为0,1,2,3,容器运行内存限制为512m。 +变更一个容器名为busybox的cpu和mem配置,包括容器获得主机CPU的相对权重值为512,容器中进程允许运行的CPU核心为0,1,2,3,容器运行内存限制为512m。 ``` $ sudo docker update --cpu-shares 512 --cpuset-cpus=0,3 --memory 512m ubuntu diff --git a/content/zh/docs/Container/version.md b/content/zh/docs/Container/version.md index cd026e3722ec66af1dd2d2482a2e667e372ee063..d6499380f876b3808146a9e3db34c39e42344596 100644 --- a/content/zh/docs/Container/version.md +++ b/content/zh/docs/Container/version.md @@ -32,3 +32,5 @@ Server: Experimental: false ``` +   + diff --git a/content/zh/docs/Container/wait.md b/content/zh/docs/Container/wait.md index ab92053435fbb03c7825c3e4c95d3e3a35381439..e0721d1285b40d46cb75bcde8f68f99609011907 100644 --- a/content/zh/docs/Container/wait.md +++ b/content/zh/docs/Container/wait.md @@ -8,18 +8,18 @@ 示例: -先开启一个名为ubuntu的容器 +先开启一个名为busybox的容器 ``` -$ sudo docker start -i -a ubuntu +$ sudo docker start -i -a busybox ``` 执行docker wait ``` -$ sudo docker wait ubuntu +$ sudo docker wait busybox 0 ``` -将阻塞等待ubuntu容器的退出,退出ubuntu容器后将看到打印退出码“0”。 +将阻塞等待busybox容器的退出,退出busybox容器后将看到打印退出码“0”。 diff --git a/content/zh/docs/Container/zh-cn_bookmap_0183409509.md b/content/zh/docs/Container/zh-cn_bookmap_0183409509.md deleted file mode 100644 index fdf5e4d5b7a69c103f5e4978d9ab999ce5002a3f..0000000000000000000000000000000000000000 --- a/content/zh/docs/Container/zh-cn_bookmap_0183409509.md +++ /dev/null @@ -1,301 +0,0 @@ -# openEuler 1.0 容器用户指南 - -- [法律声明](法律声明.md) -- [前言](前言.md) -- [iSula容器引擎](iSula容器引擎.md) - - [概述](概述.md) - - [安装与部署](安装与部署.md) - - [安装方法](安装方法.md) - - [部署配置](部署配置.md) - - [部署方式](部署方式.md) - - [存储说明](存储说明.md) - - [约束限制](约束限制.md) - - [DAEMON多端口的绑定](DAEMON多端口的绑定.md) - - [配置TLS认证与开启远程访问](配置TLS认证与开启远程访问.md) - - - [卸载](卸载.md) - - - [使用方法](使用方法.md) - - [容器管理](容器管理.md) - - [创建容器](创建容器.md) - - [启动容器](启动容器.md) - - [运行容器](运行容器.md) - - [停止容器](停止容器.md) - - [强制停止容器](强制停止容器.md) - - [删除容器](删除容器.md) - - [接入容器](接入容器.md) - - [重命名容器](重命名容器.md) - - [在容器中执行新命令](在容器中执行新命令.md) - - [查询单个容器信息](查询单个容器信息.md) - - [查询所有容器信息](查询所有容器信息.md) - - [重启容器](重启容器.md) - - [等待容器退出](等待容器退出.md) - - [查看容器中进程信息](查看容器中进程信息.md) - - [查看容器使用的资源](查看容器使用的资源.md) - - [获取容器日志](获取容器日志.md) - - [容器与主机之间数据拷贝](容器与主机之间数据拷贝.md) - - - [支持CNI网络](支持CNI网络.md) - - [描述](描述.md) - - [接口](接口.md) - - [CNI网络配置说明](CNI网络配置说明.md) - - [加入CNI网络列表](加入CNI网络列表.md) - - [退出CNI网络列表](退出CNI网络列表.md) - - - [使用限制](使用限制.md) - - - [容器资源管理](容器资源管理.md) - - [资源的共享](资源的共享.md) - - [限制运行时的CPU资源](限制运行时的CPU资源.md) - - [限制运行时的内存](限制运行时的内存.md) - - [限制运行时的IO资源](限制运行时的IO资源.md) - - [限制容器rootfs存储空间](限制容器rootfs存储空间.md) - - [限制容器内文件句柄数](限制容器内文件句柄数.md) - - [限制容器内可以创建的进程/线程数](限制容器内可以创建的进程-线程数.md) - - [配置容器内的ulimit值](配置容器内的ulimit值.md) - - - [特权容器](特权容器.md) - - [场景说明](场景说明.md) - - [使用限制](使用限制-0.md) - - [使用指导](使用指导.md) - - - [CRI接口](CRI接口.md) - - [描述](描述-1.md) - - [接口](接口-2.md) - - [Runtime服务](Runtime服务.md) - - [RunPodSandbox](RunPodSandbox.md) - - [StopPodSandbox](StopPodSandbox.md) - - [RemovePodSandbox](RemovePodSandbox.md) - - [PodSandboxStatus](PodSandboxStatus.md) - - [ListPodSandbox](ListPodSandbox.md) - - [CreateContainer](CreateContainer.md) - - [StartContainer](StartContainer.md) - - [StopContainer](StopContainer.md) - - [RemoveContainer](RemoveContainer.md) - - [ListContainers](ListContainers.md) - - [ContainerStatus](ContainerStatus.md) - - [UpdateContainerResources](UpdateContainerResources.md) - - [ExecSync](ExecSync.md) - - [Exec](Exec.md) - - [Attach](Attach.md) - - [PortForward](PortForward.md) - - [ContainerStats](ContainerStats.md) - - [ListContainerStats](ListContainerStats.md) - - [UpdateRuntimeConfig](UpdateRuntimeConfig.md) - - [Status](Status.md) - - - [Image服务](Image服务.md) - - [ListImages](ListImages.md) - - [ImageStatus](ImageStatus.md) - - [PullImage](PullImage.md) - - [RemoveImage](RemoveImage.md) - - [ImageFsInfo](ImageFsInfo.md) - - - - [约束](约束.md) - - - [镜像管理](镜像管理.md) - - [docker镜像管理](docker镜像管理.md) - - [登录到镜像仓库](登录到镜像仓库.md) - - [从镜像仓库退出登录](从镜像仓库退出登录.md) - - [从镜像仓库拉取镜像](从镜像仓库拉取镜像.md) - - [删除镜像](删除镜像.md) - - [加载镜像](加载镜像.md) - - [列出镜像](列出镜像.md) - - [检视镜像](检视镜像.md) - - [双向认证](双向认证.md) - - - [embedded镜像管理](embedded镜像管理.md) - - [加载镜像](加载镜像-3.md) - - [列出镜像](列出镜像-4.md) - - [检视镜像](检视镜像-5.md) - - [删除镜像](删除镜像-6.md) - - - - [容器健康状态检查](容器健康状态检查.md) - - [场景说明](场景说明-7.md) - - [配置方法](配置方法.md) - - [检查规则](检查规则.md) - - [使用限制](使用限制-8.md) - - - [查询信息](查询信息.md) - - [查询服务版本信息](查询服务版本信息.md) - - [查询系统级信息](查询系统级信息.md) - - - [安全特性](安全特性.md) - - [seccomp安全配置场景](seccomp安全配置场景.md) - - [场景说明](场景说明-9.md) - - [使用限制](使用限制-10.md) - - [使用指导](使用指导-11.md) - - - [capabilities安全配置场景](capabilities安全配置场景.md) - - [场景说明](场景说明-12.md) - - [使用限制](使用限制-13.md) - - [使用指导](使用指导-14.md) - - - - [支持OCI hooks](支持OCI-hooks.md) - - [描述](描述-15.md) - - [接口](接口-16.md) - - [使用限制](使用限制-17.md) - - - - [附录](附录.md) - - [命令行参数说明](命令行参数说明.md) - - [CNI配置参数](CNI配置参数.md) - - -- [系统容器](系统容器.md) - - [概述](概述-18.md) - - [安装指导](安装指导.md) - - [使用指南](使用指南.md) - - [简介](简介.md) - - [指定rootfs创建容器](指定rootfs创建容器.md) - - [通过systemd启动容器](通过systemd启动容器.md) - - [容器内reboot/shutdown](容器内reboot-shutdown.md) - - [cgroup路径可配置](cgroup路径可配置.md) - - [namespace化内核参数可写](namespace化内核参数可写.md) - - [共享内存通道](共享内存通道.md) - - [动态加载内核模块](动态加载内核模块.md) - - [环境变量持久化](环境变量持久化.md) - - [最大句柄数限制](最大句柄数限制.md) - - [安全性和隔离性](安全性和隔离性.md) - - [user namespace多对多](user-namespace多对多.md) - - [用户权限控制](用户权限控制.md) - - [proc文件系统隔离(lxcfs)](proc文件系统隔离(lxcfs).md) - - - [容器资源动态管理(isulad-tools)](容器资源动态管理(isulad-tools).md) - - [设备管理](设备管理.md) - - [网卡管理](网卡管理.md) - - [路由管理](路由管理.md) - - [挂卷管理](挂卷管理.md) - - - - [附录](附录-19.md) - - [命令行接口列表](命令行接口列表.md) - - -- [安全容器](安全容器.md) - - [概述](概述-20.md) - - [安装部署](安装部署.md) - - [安装方法](安装方法-21.md) - - [部署配置](部署配置-22.md) - - [docker-engine容器引擎的配置](docker-engine容器引擎的配置.md) - - [安全容器全局配置文件configuration.toml](安全容器全局配置文件configuration-toml.md) - - - - [使用方法](使用方法-23.md) - - [管理安全容器的生命周期](管理安全容器的生命周期.md) - - [启动安全容器](启动安全容器.md) - - [停止安全容器](停止安全容器.md) - - [删除安全容器](删除安全容器.md) - - [在容器中执行一条新的命令](在容器中执行一条新的命令.md) - - - [为安全容器配置资源](为安全容器配置资源.md) - - [资源的共享](资源的共享-24.md) - - [限制CPU资源](限制CPU资源.md) - - [限制内存资源](限制内存资源.md) - - [限制Blkio资源](限制Blkio资源.md) - - [限制文件描述符资源](限制文件描述符资源.md) - - - [为安全容器配置网络](为安全容器配置网络.md) - - [监控安全容器](监控安全容器.md) - - - [附录](附录-25.md) - - [configuration.toml配置说明](configuration-toml配置说明.md) - - [接口列表](接口列表.md) - - -- [Docker容器](Docker容器.md) - - [概述](概述-26.md) - - [安装部署](安装部署-27.md) - - [安装配置介绍及注意事项](安装配置介绍及注意事项.md) - - [基本安装配置](基本安装配置.md) - - [配置daemon参数](配置daemon参数.md) - - [daemon运行目录配置](daemon运行目录配置.md) - - [daemon自带网络配置](daemon自带网络配置.md) - - [daemon umask配置](daemon-umask配置.md) - - [daemon启动时间](daemon启动时间.md) - - [关联组件journald](关联组件journald.md) - - [关联组件firewalld](关联组件firewalld.md) - - [关联组件iptables](关联组件iptables.md) - - [关联组件audit](关联组件audit.md) - - [安全配置seccomp](安全配置seccomp.md) - - [禁止修改docker daemon的私有目录](禁止修改docker-daemon的私有目录.md) - - [普通用户大量部署容器场景下的配置注意事项](普通用户大量部署容器场景下的配置注意事项.md) - - - [存储驱动配置](存储驱动配置.md) - - [配置overlay2存储驱动](配置overlay2存储驱动.md) - - [配置devicemapper存储驱动](配置devicemapper存储驱动.md) - - - [强杀docker相关后台进程的影响](强杀docker相关后台进程的影响.md) - - [信号量残留](信号量残留.md) - - [网卡残留](网卡残留.md) - - [重启容器失败](重启容器失败.md) - - [服务无法正常重启](服务无法正常重启.md) - - - [系统掉电影响](系统掉电影响.md) - - - - [容器管理](容器管理-28.md) - - [创建容器](创建容器-29.md) - - [创建容器使用hook-spec](创建容器使用hook-spec.md) - - [创建容器配置健康检查](创建容器配置健康检查.md) - - [停止与删除容器](停止与删除容器.md) - - [容器信息查询](容器信息查询.md) - - [修改操作](修改操作.md) - - - [镜像管理](镜像管理-30.md) - - [创建镜像](创建镜像.md) - - [查看镜像](查看镜像.md) - - [删除镜像](删除镜像-31.md) - - - [命令行参考](命令行参考.md) - - [容器引擎](容器引擎.md) - - [容器管理](容器管理-32.md) - - [attach](attach.md) - - [commit](commit.md) - - [cp](cp.md) - - [create](create.md) - - [diff](diff.md) - - [exec](exec.md) - - [export](export.md) - - [inspect](inspect.md) - - [logs](logs.md) - - [pause/unpause](pause-unpause.md) - - [port](port.md) - - [ps](ps.md) - - [rename](rename.md) - - [restart](restart.md) - - [rm](rm.md) - - [run](run.md) - - [start](start.md) - - [stats](stats.md) - - [stop](stop.md) - - [top](top.md) - - [update](update.md) - - [wait](wait.md) - - - [镜像管理](镜像管理-33.md) - - [build](build.md) - - [history](history.md) - - [images](images.md) - - [import](import.md) - - [load](load.md) - - [login](login.md) - - [logout](logout.md) - - [pull](pull.md) - - [push](push.md) - - [rmi](rmi.md) - - [save](save.md) - - [search](search.md) - - [tag](tag.md) - - - [统计信息](统计信息.md) - - [events](events.md) - - [info](info.md) - - [version](version.md) - - - - diff --git "a/content/zh/docs/Container/\344\270\272\345\256\211\345\205\250\345\256\271\345\231\250\351\205\215\347\275\256\347\275\221\347\273\234.md" "b/content/zh/docs/Container/\344\270\272\345\256\211\345\205\250\345\256\271\345\231\250\351\205\215\347\275\256\347\275\221\347\273\234.md" index 2c687926bd9363201d665055f661c1cf1e5b68fa..373fca5d1588c7453a4dca54fe73895426e7fe39 100644 --- "a/content/zh/docs/Container/\344\270\272\345\256\211\345\205\250\345\256\271\345\231\250\351\205\215\347\275\256\347\275\221\347\273\234.md" +++ "b/content/zh/docs/Container/\344\270\272\345\256\211\345\205\250\345\256\271\345\231\250\351\205\215\347\275\256\347\275\221\347\273\234.md" @@ -94,6 +94,26 @@
+ kata-runtime kata-network add-iface添加网卡命令执行返回结果说明: + + - 命令执行成功:从**命令的标准输出**返回json格式插入网卡的信息,json格式内容和传入的网卡信息相同。 + + 例如: + + ``` + $ kata-runtime kata-network add-iface net.json + {"device":"tap_test","name":"eth-test","IPAddresses":[{"Family":2,"Address":"173.85.100.1","Mask":"24"}],"mtu":1500,"hwAddr":"02:42:20:6e:03:01","pciAddr":"01.0/00"} + ``` + + - 命令执行失败:从**命令的标准输出**返回字符串null。 + + 例如: + + ``` + $ kata-runtime kata-network add-iface netbad.json 2>/dev/null + null + ``` + >![](public_sys-resources/icon-note.gif) **说明:** >当网卡添加成功时,如果为其指定了IP地址,则kata会为新添加的网卡添加一条destination为同网段地址的默认路由,如上例中添加网卡之后容器内有如下路由被添加: >``` @@ -110,6 +130,33 @@ 可以查询到我们刚才添加的网卡信息。 + kata-runtime kata-network list-ifaces列出已添加网卡命令执行返回结果说明: + + - 命令执行成功:从**命令的标准输出**返回json格式的Pod中所有插入网卡的信息。 + + 如果Pod中插入了多个网卡设备,返回的是一个json数组格式的网卡信息 + + ``` + $ kata-runtime kata-network list-ifaces + [{"name":"container_eth","mac":"02:42:20:6e:a2:59","ip":["172.17.25.23/8"],"mtu":1500},{"name":"container_eth_2","mac":"02:90:50:6b:a2:29","ip":["192.168.0.34/24"],"mtu":1500}] + ``` + + 如果Pod中没有插入任何网卡设备,从**命令的标准输出**返回字符串null。 + + ``` + $ kata-runtime kata-network list-ifaces + null + ``` + + - 命令执行失败:从**命令的标准输出**返回字符串null,从**命令的标准错误输出**返回错误描述信息。 + + 例如: + + ``` + $ kata-runtime kata-network list-ifaces + null + ``` + 3. **为指定网卡添加一条路由** ``` @@ -117,6 +164,26 @@ [{"dest":"default","gateway":"172.16.0.1","device":"eth-test"}] ``` + kata-runtime kata-network add-route为指定网卡添加一条路由命令执行返回结果说明: + + - 命令执行成功:从**命令的标准输出**返回json格式的添加的路由信息。 + + 例如: + + ``` + $ kata-runtime kata-network add-route route.json + [{"dest":"177.17.0.0/24","gateway":"177.17.25.1","device":"netport_test_1"}] + ``` + + - 命令执行失败:从**命令的标准输出**返回字符串null,从**命令的标准错误输出**返回错误描述信息。 + + 例如: + + ``` + $ kata-runtime kata-network add-route routebad.json 2>/dev/null + null + ``` + 字段说明如下: - dest:设置路由对应的网段。格式为/必选。分如下3种情况: @@ -138,6 +205,26 @@ test-route.json字段与添加路由输入json文件的字段相同。 + kata-runtime kata-network del-route删除指定路由命令执行返回结果说明: + + - 命令执行成功:从**命令的标准输出**返回json格式的添加的路由信息。 + + 例如: + + ``` + $ kata-runtime kata-network del-route route.json + [{"dest":"177.17.0.0/24","gateway":"177.17.25.1","device":"netport_test_1"}] + ``` + + - 命令执行失败:从**命令的标准输出**返回字符串null,从**命令的标准错误输出**返回错误描述信息。 + + 例如: + + ``` + $ kata-runtime kata-network del-route routebad.json 2>/dev/null + null + ``` + >![](public_sys-resources/icon-note.gif) **说明:** >- 输入字段中dest为必选,device/gateway均为可选。kata根据不同字段进行模糊匹配,删除对应的路由规则。例如指定了dest为某个IP,则所有该IP的规则都会被删除。 >- 如果删除的是容器内回环设备lo的路由时,路由配置文件中的"device"字段对应的设备名称为"lo"。 @@ -151,6 +238,27 @@ >![](public_sys-resources/icon-note.gif) **说明:** >删除网卡时,仅根据网卡容器内名称(name字段)来删除。即便填写其他字段,kata也不会使用。 + kata-runtime kata-network del-iface删除网卡命令执行返回结果说明: + + - 命令执行成功:从**命令标准输出**返回null字符串。 + + 例如: + + ``` + $ kata-runtime kata-network del-iface net.json + null + ``` + + - 命令执行失败:从**命令标准输出**返回删除失败网卡json格式的信息,从**命令的标准错误输出**返回错误描述信息。 + + 例如: + + ``` + $ kata-runtime kata-network del-iface net.json + {"device":"tapname_fun_012","name":"netport_test_1","IPAddresses":[{"Family":0,"Address":"177.17.0.1","Mask":"8"}],"mtu":1500,"hwAddr":"02:42:20:6e:a2:59","linkType":"tap"} + ``` + + 以上为常用场景和命令行示例,具体命令行接口见附录[接口列表](接口列表.md#ZH-CN_TOPIC_0184808188)。 diff --git "a/content/zh/docs/Container/\344\273\216\346\234\215\345\212\241\347\253\257\345\256\236\346\227\266\350\216\267\345\217\226\344\272\213\344\273\266\346\266\210\346\201\257.md" "b/content/zh/docs/Container/\344\273\216\346\234\215\345\212\241\347\253\257\345\256\236\346\227\266\350\216\267\345\217\226\344\272\213\344\273\266\346\266\210\346\201\257.md" new file mode 100644 index 0000000000000000000000000000000000000000..e163aa9445f494a1c691403f89d6bced230f491f --- /dev/null +++ "b/content/zh/docs/Container/\344\273\216\346\234\215\345\212\241\347\253\257\345\256\236\346\227\266\350\216\267\345\217\226\344\272\213\344\273\266\346\266\210\346\201\257.md" @@ -0,0 +1,50 @@ +# 从服务端实时获取事件消息 + +## 描述 + +isula events用于从服务端实时获取容器镜像生命周期、运行等事件消息, 仅支持runtime类型为lcr的容器。 + +## 用法 + +``` +isula events [OPTIONS] +``` + +## 参数 + + + + + + + + + + + + + + + + + +

命令

+

参数

+

说明

+

events

+

-H, --host

+

指定要连接的iSulad socket文件路径

+

-n, --name

+

获取指定容器的事件消息

+

-S, --since

+

获取指定时间以来的事件消息

+
+ +## 示例 + +从服务端实时获取事件消息,命令示例如下: + +``` +$ isula events +``` + diff --git "a/content/zh/docs/Container/\344\275\277\347\224\250\346\214\207\345\215\227.md" "b/content/zh/docs/Container/\344\275\277\347\224\250\346\214\207\345\215\227.md" index ccb0760dcb2e35c96e1c5af4c0afbd792fd0e965..fba9c46a0b823deb0d7215443c399d67cbdebc71 100644 --- "a/content/zh/docs/Container/\344\275\277\347\224\250\346\214\207\345\215\227.md" +++ "b/content/zh/docs/Container/\344\275\277\347\224\250\346\214\207\345\215\227.md" @@ -2,4 +2,3 @@ - diff --git "a/content/zh/docs/Container/\344\275\277\347\224\250\346\214\207\345\257\274-17.md" "b/content/zh/docs/Container/\344\275\277\347\224\250\346\214\207\345\257\274-17.md" new file mode 100644 index 0000000000000000000000000000000000000000..885b3b2d0c61386a3b56cf98012b511a5aee49cf --- /dev/null +++ "b/content/zh/docs/Container/\344\275\277\347\224\250\346\214\207\345\257\274-17.md" @@ -0,0 +1,44 @@ +# 使用指导 + +- daemon端使能selinux: + + ``` + isulad --selinux-enabled + ``` + + +   + +- 启动容器时配置selinux标签安全上下文 + + --security-opt="label=user:USER" 配置安全上下文用户 + + --security-opt="label=role:ROLE" 配置安全上下文角色 + + --security-opt="label=type:TYPE" 配置安全上下文类型 + + --security-opt="label=level:LEVEL" 配置安全上下文域 + + --security-opt="label=disable" 容器禁用SELinux配置 + + ``` + $ isula run -itd --security-opt label=type:container_t --security-opt label=level:s0:c1,c2 rnd-dockerhub.huawei.com/official/centos + 9be82878a67e36c826b67f5c7261c881ff926a352f92998b654bc8e1c6eec370 + ``` + + +   + +- 为挂载卷打selinux标签\('z'为共享模式\) + + ``` + $ isula run -itd -v /test:/test:z rnd-dockerhub.huawei.com/official/centos + 9be82878a67e36c826b67f5c7261c881ff926a352f92998b654bc8e1c6eec370 + + $ls -Z /test + system_u:object_r:container_file_t:s0 file + ``` + +    + + diff --git "a/content/zh/docs/Container/\344\275\277\347\224\250\346\226\271\346\263\225-23.md" "b/content/zh/docs/Container/\344\275\277\347\224\250\346\226\271\346\263\225-23.md" deleted file mode 100644 index f3507041a2dc3385651bbc00beb9eb79aea40cdc..0000000000000000000000000000000000000000 --- "a/content/zh/docs/Container/\344\275\277\347\224\250\346\226\271\346\263\225-23.md" +++ /dev/null @@ -1,5 +0,0 @@ -# 使用方法 - -iSula使用docker-engine作为安全容器的容器引擎,此处使用方法均使用docker命令行作为示例,当您使用Kubernetes等进行对接的时候也可以使用docker-engine提供的RESTFUL接口调用,相应的参数转换请参考docker-engine RESTFUL API一节。 - - diff --git "a/content/zh/docs/Container/\344\275\277\347\224\250\346\226\271\346\263\225-26.md" "b/content/zh/docs/Container/\344\275\277\347\224\250\346\226\271\346\263\225-26.md" new file mode 100644 index 0000000000000000000000000000000000000000..29d232217759c36dc860d79e0e8312398917b5ef --- /dev/null +++ "b/content/zh/docs/Container/\344\275\277\347\224\250\346\226\271\346\263\225-26.md" @@ -0,0 +1,3 @@ +# 使用方法 + +本章介绍使用安全容器的方法。 diff --git "a/content/zh/docs/Container/\344\275\277\347\224\250\346\226\271\346\263\225.md" "b/content/zh/docs/Container/\344\275\277\347\224\250\346\226\271\346\263\225.md" index a261a4f094a84a4add907020abf29e0921d804bb..82e88d00215c176616c2eeadc386ed36fd566fd2 100644 --- "a/content/zh/docs/Container/\344\275\277\347\224\250\346\226\271\346\263\225.md" +++ "b/content/zh/docs/Container/\344\275\277\347\224\250\346\226\271\346\263\225.md" @@ -1,4 +1 @@ # 使用方法 - - - diff --git "a/content/zh/docs/Container/\344\275\277\347\224\250\351\231\220\345\210\266-16.md" "b/content/zh/docs/Container/\344\275\277\347\224\250\351\231\220\345\210\266-16.md" new file mode 100644 index 0000000000000000000000000000000000000000..838a7649e85a847dac4548afbc8f24e4bb20a9ca --- /dev/null +++ "b/content/zh/docs/Container/\344\275\277\347\224\250\351\231\220\345\210\266-16.md" @@ -0,0 +1,14 @@ +# 使用限制 + +- 确保宿主机已使能SELinux,且daemon端已打开SELinux使能开发(/etc/isulad/daemon.json中“selinux-enabled”字段为true, 或者命令行参数添加--selinux-enabled) +- 确保宿主机上已配置合适的selinux策略,推荐使用container-selinux进行配置 +- 引入SELinux会影响性能,设置SELinux之前需要对场景进行评估,确定必要时打开daemon端SELinux开关并设置容器SELinux配置 +- 对挂载卷进行标签配置时,源目录不允许为/、/usr、/etc、/tmp、/home、/run、/var、/root以及/usr的子目录。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>- 目前iSulad不支持对容器的文件系统打标签,确保容器文件系统及配置目录打上容器可访问标签,需使用chcon命令对其打上标签。 +>- 若iSulad启用SELinux访问控制,建议daemon启动前对/var/lib/isulad目录打上标签,容器容器创建时目录下生产的文件及文件夹将默认继承其标签,例如: +> ``` +> chcon -R system_u:object_r:container_file_t:s0 /var/lib/isulad +> ``` + diff --git "a/content/zh/docs/Container/\344\275\277\347\224\250\351\231\220\345\210\266-17.md" "b/content/zh/docs/Container/\344\275\277\347\224\250\351\231\220\345\210\266-20.md" similarity index 98% rename from "content/zh/docs/Container/\344\275\277\347\224\250\351\231\220\345\210\266-17.md" rename to "content/zh/docs/Container/\344\275\277\347\224\250\351\231\220\345\210\266-20.md" index 6b06af8f50dfbe05fc6ed5f1bd9389f6a8c3a7f5..10446d07981d50177a7b41b684b5d1a321991343 100644 --- "a/content/zh/docs/Container/\344\275\277\347\224\250\351\231\220\345\210\266-17.md" +++ "b/content/zh/docs/Container/\344\275\277\347\224\250\351\231\220\345\210\266-20.md" @@ -1,13 +1,16 @@ -# 使用限制 - -- hook-spec指定的路径必须是绝对路径。 -- hook-spec指定的文件必须存在。 -- hook-spec指定的路径对应的必须是普通文本文件,格式为json。 -- hook-spec指定的文件大小不能超过10MB。 -- hooks配置的path字段必须为绝对路径。 -- hooks配置的path字段指定文件必须存在。 -- hooks配置的path字段指定文件必须有可执行权限。 -- hooks配置的path字段指定文件的owner必须是root。 -- hooks配置的path字段指定文件必须只有root有写权限。 -- hooks配置的timeout必须大于0。 - +# 使用限制 + +- hook-spec指定的路径必须是绝对路径。 +- hook-spec指定的文件必须存在。 +- hook-spec指定的路径对应的必须是普通文本文件,格式为json。 +- hook-spec指定的文件大小不能超过10MB。 +- hooks配置的path字段必须为绝对路径。 +- hooks配置的path字段指定文件必须存在。 +- hooks配置的path字段指定文件必须有可执行权限。 +- hooks配置的path字段指定文件的owner必须是root。 +- hooks配置的path字段指定文件必须只有root有写权限。 +- hooks配置的timeout必须大于0。 + +    + + diff --git "a/content/zh/docs/Container/\344\275\277\347\224\250\351\231\220\345\210\266-8.md" "b/content/zh/docs/Container/\344\275\277\347\224\250\351\231\220\345\210\266-8.md" index b2e8bfdc60a80df6f7ae5c92919c82685056ab05..dbc4096ccdea86d9576a62cfbfc279451b49d226 100644 --- "a/content/zh/docs/Container/\344\275\277\347\224\250\351\231\220\345\210\266-8.md" +++ "b/content/zh/docs/Container/\344\275\277\347\224\250\351\231\220\345\210\266-8.md" @@ -4,4 +4,5 @@ - 容器启动时若健康检查相关参数配置为0,则按照默认值处理。 - 带有健康检查配置的容器启动后,若iSulad daemon退出,则健康检查不会执行。iSulad daemon再次启动后,正在运行且带有健康检查配置的容器其健康状态会变为starting。之后检查规则同上。 - 如果健康检查从第一次开始便一直失败,其状态保持与之前一致(starting),直到达到指定失败次数(--health-retries)后变为unhealthy,或者检查成功后变为healthy。 +- 对于OCI类型的runtime的容器,健康检查功能待完善。目前仅完整支持lcr类型的容器。 diff --git "a/content/zh/docs/Container/\345\205\263\350\201\224\347\273\204\344\273\266audit.md" "b/content/zh/docs/Container/\345\205\263\350\201\224\347\273\204\344\273\266audit.md" index cd8b147fc83973aabc624ace1c4606d42a2fbf37..503e7532099e0c3a61ea26d1d4f9f49e1ad752d3 100644 --- "a/content/zh/docs/Container/\345\205\263\350\201\224\347\273\204\344\273\266audit.md" +++ "b/content/zh/docs/Container/\345\205\263\350\201\224\347\273\204\344\273\266audit.md" @@ -30,3 +30,5 @@ docker支持配置audit,但不是强制的。例如: type=SYSCALL msg=audit(1517656451.457:8097): arch=c000003e syscall=257 success=yes exit=3 a0=ffffffffffffff9c a1=1b955b0 a2=90800 a3=0 items=1 ppid=17821 pid=1925 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts6 ses=4 comm="ls" exe="/usr/bin/ls" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="docker"type=CWD msg=audit(1517656451.457:8097): cwd="/root"type=PATH msg=audit(1517656451.457:8097): item=0 name="/var/lib/docker/containers" inode=1049112 dev=fd:00 mode=040700 ouid=0 ogid=0 rdev=00:00 obj=unconfined_u:object_r:container_var_lib_t:s0 objtype=NORMAL ``` +   + diff --git "a/content/zh/docs/Container/\345\205\263\350\201\224\347\273\204\344\273\266iptables.md" "b/content/zh/docs/Container/\345\205\263\350\201\224\347\273\204\344\273\266iptables.md" index d37aac4122f18e050df6e8239bf2de214d8362d2..c00cf1eb002062908b713e2386e3f5e79c3045c5 100644 --- "a/content/zh/docs/Container/\345\205\263\350\201\224\347\273\204\344\273\266iptables.md" +++ "b/content/zh/docs/Container/\345\205\263\350\201\224\347\273\204\344\273\266iptables.md" @@ -11,7 +11,7 @@ Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) ... ``` -在Chain FORWARD中,DROP上面多出了一条ACCEP icmp的规则,造成加了--icc=false后,容器之间也能ping能通,但udp/tcp仍然是不通的。 +在Chain FORWARD中,DROP上面多出了一条ACCEPT icmp的规则,造成加了--icc=false后,容器之间也能ping通,但容器之间如果使用udp/tcp协议,对端仍然是不可达的。 因此,在容器os中使用docker,如果需要使用--icc=false选项时,建议先在host上清理一下iptables相关的规则。 diff --git "a/content/zh/docs/Container/\345\210\233\345\273\272\345\256\271\345\231\250-29.md" "b/content/zh/docs/Container/\345\210\233\345\273\272\345\256\271\345\231\250-33.md" similarity index 89% rename from "content/zh/docs/Container/\345\210\233\345\273\272\345\256\271\345\231\250-29.md" rename to "content/zh/docs/Container/\345\210\233\345\273\272\345\256\271\345\231\250-33.md" index 0cd3b8133f91f85be10f8ccb2c7bffe51d04c974..0bbd1d51709300e144219389338486c084bd180c 100644 --- "a/content/zh/docs/Container/\345\210\233\345\273\272\345\256\271\345\231\250-29.md" +++ "b/content/zh/docs/Container/\345\210\233\345\273\272\345\256\271\345\231\250-33.md" @@ -1,288 +1,288 @@ -# 创建容器 - -## 下载镜像 - -运行docker命令需要root权限,当你使用普通用户登录时,需要用sudo权限执行docker命令。 - -``` -[root@localhost ~]# docker pull ubuntu -``` - -该命令行将在docker官方的镜像库中下载ubunt:latest(命令行中没指定TAG,所以使用默认的TAG名latest),镜像在下载过程中将检测所依赖的层本地是否存在,如果存在就跳过。从私有镜像库下载镜像时,请带上registry描述,例如:假如建立了一个私有镜像库,地址为192.168.1.110:5000,里面有一些常用镜像。使用下面命令行从私有镜像库中下载镜像。 - -``` -[root@localhost ~]# docker pull 192.168.1.110:5000/ubuntu -``` - -从私有镜像库中下载下来的image名字带有镜像库地址的信息名字比较长,可以用docker tag命令生成一个名字简单点的image。 - -``` -[root@localhost ~]# docker tag 192.168.1.110:5000/ubuntu ubuntu -``` - -可以通过docker images命令查看本地镜像列表。 - -## 运行一个简单的应用 - -``` -[root@localhost ~]# docker run ubuntu /bin/echo "Hello world" -Hello world -``` - -该命令行使用ubuntu:latest(命令行中没有指定tag,所以使用默认的tag名latest)镜像创建了一个容器,在容器内执行了echo "Hello world"。使用下面命令行可以查看刚才创建的这个容器。 - -``` -[root@localhost ~]# docker ps -l -CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES -d8c0a3315bc0 ubuntu "/bin/echo 'Hello wo…" 5 seconds ago Exited (0) 3 seconds ago practical_franklin -``` - -## 创建一个交互式的容器 - -``` -[root@localhost ~]# docker run -it ubuntu /bin/bash -root@bf22919af2cf:/# ls -bin boot dev etc home lib media mnt opt proc root run sbin srv sys tmp usr var -root@bf22919af2cf:/# pwd -/ -``` - --ti选项分配一个伪终端给容器并可以使用STDIN进行交互,可以看到这时可以在容器内执行一些命令。这时的容器看起来完全是一个独立的linux虚拟机。使用exit命令退出容器。 - -## 后台运行容器 - -执行下面命令行,-d指示这个容器在后台运行,--name=container1 指定容器的名字为container1。 - -``` -[root@localhost ~]# docker run -d --name=container1 ubuntu /bin/sh -c "while true;do echo hello world;sleep 1;done" -7804d3e16d69b41aac5f9bf20d5f263e2da081b1de50044105b1e3f536b6db1c -``` - -命令行的执行结果是返回了这个容器的ID,没有返回命令的执行结果hello world,此时容器在后台运行,可以用docker ps命令查看正在运行的容器: - -``` -[root@localhost ~]# docker ps -CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES -7804d3e16d69 ubuntu "/bin/sh -c 'while tr" 11 seconds ago Up 10 seconds container1 -``` - -用docker logs查看容器运行的输出: - -``` -[root@localhost ~]# docker logs container1 -hello world -hello world -hello world -... -``` - -## 容器网络连接 - -默认情况下,容器可以访问外部网络,而外部网络访问容器时需要通过端口映射,下面以在docker中运行私有镜像库服务registry为例。下面的命令行中-P使registry镜像中开放的端口暴露给主机。 - -``` -[root@localhost ~]# docker run --name=container_registry -d -P registry -cb883f6216c2b08a8c439b3957fb396c847a99079448ca741cc90724de4e4731 -``` - -container\_registry这个容器已经启动了,但是并不知道容器中的服务映射到主机的哪个端口,通过docker port查看端口映射。 - -``` -[root@localhost ~]# docker port container_registry -5000/tcp -> 0.0.0.0:49155 -``` - -从输出可以看出,容器内的5000端口映射到了主机的49155端口。通过主机IP:49155就可以访问registry服务了,在浏览器中输入http://localhost:49155就可以返回registry的版本信息。 - -在运行registry镜像的时候还可以直接指定端口映射如: - -``` -docker run --name=container_registry -d -p 5000:5000 registry -``` - -通过-p 5000:5000指定容器的5000端口映射到主机的5000端口。 - -## 注意事项 - -- **启动容器不能单独加-a stdin** - - 启动容器时,不能单独加-a stdin,必须要同时加上-a stdout或者-a stderr,否则会导致终端即使在容器退出后也会卡住。 - - -- **避免使用已有容器的长id、短id作为新容器的name** - - 创建容器时,避免使用已有容器A的长id或短id作为新容器B的name。若使用容器A的长id作为容器B的name,当使用容器B的name作为指定容器进行操作时,docker匹配到的是容器A。若使用容器A的短id作为容器B的name,当使用容器A的短id作为指定容器进行相关操作时,docker匹配到的是容器B。这是因为,docker在匹配容器时,先精确匹配所有容器的长id。若未匹配成功,再根据container\_name进行精确匹配;若还未匹配成功,直接对容器id进行模糊匹配。 - -- **使用sh/bash等依赖标准输入输出的容器应该使用\`-ti\`参数,避免出现异常** - - 正常情况:不用\`-ti\`参数启动sh/bash等进程容器,容器会马上退出。 - - 出现这种问题的原因在于,docker会先创建一个匹配用于容器内业务的stdin,在不设置-ti等交互式参数时,docker会在容器启动后关闭该pipe,而业务容器进程sh/bash在检测到stdin被关闭后会直接退出。 - - 异常情况:如果在上述过程中的特定阶段(关闭该pipe之前)强制杀死docker daemon,会导致该pipe的daemon端没有被及时关闭,这样即使不带\`-ti\`的sh/bash进程也不会退出,导致异常场景,这种容器就需要手动清理。 - - Daemon重启后会接管原有的容器stream,而不带\`-ti\`参数的容器可能就无法处理(因为正常情况下这些容器不存在stream需要接管);真实业务下几乎不存在这种使用方式\(不带 \`-ti\`的sh/bash没有任何作用\),为了避免这类问题发生,限制交互类容器应该使用 \`-ti\`参数。 - -- **容器存储卷** - - 启动容器时如果通过\`-v\`参数将主机上的文件挂载到容器中,在主机或容器中使用vi或sed命令修改文件可能会使文件inode发生改变,从而导致主机和容器内的文件不同步。容器中挂载文件时应该尽量避免使用这种文件挂载的方式(或不与vi和sed同时使用),也可以通过挂载文件上层目录来避免该问题。在docker挂载卷时“nocopy”选项可以避免将容器内挂载点目录下原有的文件拷贝到主机源目录下,但是这个选项只能在挂载匿名卷时使用,不能在bind mount的场景下使用。 - -- **避免使用可能会对host造成影响的选项** - - --privileged 选项会让容器获得所有权限,容器可以做挂载操作和修改/proc、/sys等目录,可能会对host造成影响,普通容器需要避免使用该选项。 - - 共享host的namespace,比如--pid host/--ipc host/--net host等选项可以让容器跟host共享命名空间,同样会导致容器影响host的结果,需要避免使用。 - -- **kernel memory cgroup不稳定,禁止使用** - - kernel memory cgroup在小于4.0版本的Linux内核上仍属于实验阶段,运行起来不稳定,虽然Docker的Warning说是小于4.0就可以,但是我们评估认为,kmemcg在高版本内核仍然不稳定,所以不管是低版本还是高版本,均禁止使用。 - - 当docker run --kernel-memory时,会产生如下告警: - - ``` - WARNING: You specified a kernel memory limit on a kernel older than 4.0. Kernel memory limits are experimental on older kernels, it won't work as expected as expected and can cause your system to be unstable. - ``` - -- **blkio-weight参数在支持blkio精确控制的内核下不可用** - - --blkio-weight-device 可以实现容器内更为精确的blkio控制,该控制需要指定磁盘设备,可以通过docker --blkio-weight-device参数实现。同时在这种内核下docker不再提供--blkio-weight方式限制容器blkio,使用该参数创建容器将会报错: - - ``` - docker: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "process_linux.go:398: container init caused \"process_linux.go:369: setting cgroup config for ready process caused \\\"blkio.weight not supported, use weight_device instead\\\"\"" - ``` - -- **使用--blkio-weight-device需要磁盘支持CFQ调度策略** - - --blkio-weight-device参数需要磁盘工作于完全公平队列调度(CFQ:Completely Fair Queuing)的策略时才能工作。 - - 通过查看磁盘scheduler文件(/sys/block/<磁盘\>/queue/scheduler)可以获知磁盘支持的策略以及当前所采用的策略,如查看sda: - - ``` - # cat /sys/block/sda/queue/scheduler noop [deadline] cfq - ``` - - 当前sda支持三种调度策略:noop, deadline, cfq,并且正在使用deadline策略。通过echo修改策略为cfq: - - ``` - # echo cfq > /sys/block/sda/queue/scheduler - ``` - - -- **容器基础镜像中systemd使用限制** - - 通过基础镜像创建的容器在使用过程中,容器基础镜像中的systemd仅用于系统容器,普通容器不支持使用。 - - -## 并发性能 - -- docker内部的消息缓冲有一个上限,超过这个上限就会将消息丢弃,因此在并发执行命令时建议不要超过1000条命令,否则有可能会造成docker内部消息丢失,从而造成容器无法启动等严重问题。 -- 并发创建容器并对容器执行restart时会偶现“oci runtime error: container init still running”报错,这是因为containerd对事件等待队列进行了性能优化,容器stop过程中执行runc delete,尝试在1s内kill掉容器的init进程,如果1s内init进程还没有被kill掉的话runc会返回该错误。由于containerd的GC(垃圾回收机制)每隔10s会回收之前runc delete的残留资源, 所以并不影响下次对容器的操作,一般出现上述报错的话等待4\~5s之后再次启动容器即可。 - -## 安全特性解读 - -1. docker默认的权能配置分析 - - 原生的docker默认配置如下,默认进程携带的Cap如下: - - ``` - "CAP_CHOWN", - "CAP_DAC_OVERRIDE", - "CAP_FSETID", - "CAP_FOWNER", - "CAP_MKNOD", - "CAP_NET_RAW", - "CAP_SETGID", - "CAP_SETUID", - "CAP_SETFCAP", - "CAP_SETPCAP", - "CAP_NET_BIND_SERVICE", - "CAP_SYS_CHROOT", - "CAP_KILL", - "CAP_AUDIT_WRITE", - ``` - - 默认的seccomp配置是白名单,不在白名单的syscall默认会返回SCMP\_ACT\_ERRNO,根据给docker不同的Cap开放不同的系统调用,不在上面的权限,默认docker都不会给到容器。 - -2. CAP\_SYS\_MODULE - - CAP\_SYS\_MODULE这个Cap是让容器可以插入ko,增加该Cap可以让容器逃逸,甚至破坏内核。因为容器最大的隔离是Namespace,在ko中只要把他的Namespace指向init\_nsproxy即可。 - -3. CAP\_SYS\_ADMIN - - sys\_admin权限给容器带来的能力有: - - - 文件系统(mount,umount,quotactl) - - namespace设置相关的(setns,unshare,clone new namespace) - - driver ioctl - - 对pci的控制,pciconfig\_read, pciconfig\_write, pciconfig\_iobase - - sethostname - -4. CAP\_NET\_ADMIN - - 容器中有访问网络接口的和sniff网络流量的权限,容器可以获取到所有容器包括host的网络流量,对网络隔离破坏极大。 - -5. CAP\_DAC\_READ\_SEARCH - - 该权限开放了,两个系统调用open\_by\_handle\_at,name\_to\_handle\_at,如果host上没有selinux保护,容器中可通过暴力搜索file\_handle结构的inode号,进而可以打开host上的任意文件,影响文件系统的隔离性。 - -6. CAP\_SYS\_RAWIO - - 容器中可对host写入io端口,可造成host内核崩溃。 - -7. CAP\_SYS\_PTRACE - - 容器中有ptrace权限,可对容器的进程进行ptrace调试。现runc已经修补该漏洞,但有些工具比如nsenter和docker-enter并没有改保护,容器中可对这些工具执行的进程进行调试,获取这些工具带入的资源信息(Namespace、fd等),另外, ptrace可以绕过seccomp,极大增加内核攻击面。 - -8. Docker Cap接口 --cap-add all - - --cap-add all表示赋予容器所有的权能,包括本节提到的比较危险的权能,使得容器可以逃逸。 - -9. 不要禁用docker的seccomp特性 - - 默认的docker有一个seccomp的配置,配置中使用的是白名单,不在配置的sys\_call会被seccomp禁掉,使用接口--security-opt 'seccomp:unconfined'可以禁止使用seccomp特性。如果禁用seccomp或使用自定义seccomp配置但过滤名单不全,都会增加容器对内核的攻击面。 - -10. 不要配置/sys和/proc目录可写 - - /sys和/proc目录包含了linux维护内核参数、设备管理的接口,容器中配置该目录可写可能会导致容器逃逸。 - -11. Docker开放Cap --CAP\_AUDIT\_CONTROL - - 容器可以通过控制系统audit系统,并且通过AUDIT\_TTY\_GET/AUDIT\_TTY\_SET等命令可以获取审计系统中记录的tty执行输入记录,包括root密码。 - -12. CAP\_BLOCK\_SUSPEND和CAP\_WAKE\_ALARM - - 容器可拥有阻塞系统挂起\(epoll\)的能力。 - -13. CAP\_IPC\_LOCK - - 容器拥有该权限后,可以突破ulimit中的max locked memory限制,任意mlock超大内存块,造成一定意义的DoS攻击。 - -14. CAP\_SYS\_LOG - - 容器拥有该权限后,可以dmesg读取系统内核日志,突破内核kaslr防护。 - -15. CAP\_SYS\_NICE - - 容器拥有该权限后,可以改变进程的调度策略和优先级,造成一定意义的DoS攻击。 - -16. CAP\_SYS\_RESOURCE - - 容器可以绕过对其的一些资源限制,比如磁盘空间资源限制、keymaps数量限制、pipe-size-max限制等,造成一定意义的DoS攻击。 - -17. CAP\_SYS\_TIME - - 容器可以改变host上的时间。 - -18. Docker默认Cap风险分析 - - Docker默认的Cap,包含了CAP\_SETUID和CAP\_FSETID,如host和容器共享目录,容器可对共享目录的二进制文件进行+s设置,host上的普通用户可使用其进行提权CAP\_AUDIT\_WRITE,容器可以对host写入,容器可以对host写入日志,host需配置日志防爆措施。 - -19. Docker和host共享namespace参数,比如--pid,--ipc, --uts - - 该参数为容器和host共享namespace空间,容器和host的namespace隔离没有了,容器可对host进行攻击。比如,使用--pid 和host共享pid namespace,容器中可以看到host上的进程pid号,可以随意杀死host的进程。 - -20. --device 把host的敏感目录或者设备,映射到容器中 - - Docker管理面有接口可以把host上的目录或者设备映射到容器中,比如--device,-v等参数,不要把host上的敏感目录或者设备映射到容器中。 - - +# 创建容器 + +## 下载镜像 + +运行docker命令需要root权限,当你使用普通用户登录时,需要用sudo权限执行docker命令。 + +``` +[root@localhost ~]# docker pull busybox +``` + +该命令行将在docker官方的镜像库中下载busybox:latest(命令行中没指定TAG,所以使用默认的TAG名latest),镜像在下载过程中将检测所依赖的层本地是否存在,如果存在就跳过。从私有镜像库下载镜像时,请带上registry描述,例如:假如建立了一个私有镜像库,地址为192.168.1.110:5000,里面有一些常用镜像。使用下面命令行从私有镜像库中下载镜像。 + +``` +[root@localhost ~]# docker pull 192.168.1.110:5000/busybox +``` + +从私有镜像库中下载下来的image名字带有镜像库地址的信息名字比较长,可以用docker tag命令生成一个名字简单点的image。 + +``` +[root@localhost ~]# docker tag 192.168.1.110:5000/busybox busybox +``` + +可以通过docker images命令查看本地镜像列表。 + +## 运行一个简单的应用 + +``` +[root@localhost ~]# docker run busybox /bin/echo "Hello world" +Hello world +``` + +该命令行使用busybox:latest(命令行中没有指定tag,所以使用默认的tag名latest)镜像创建了一个容器,在容器内执行了echo "Hello world"。使用下面命令行可以查看刚才创建的这个容器。 + +``` +[root@localhost ~]# docker ps -l +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +d8c0a3315bc0 busybox "/bin/echo 'Hello wo…" 5 seconds ago Exited (0) 3 seconds ago practical_franklin +``` + +## 创建一个交互式的容器 + +``` +[root@localhost ~]# docker run -it busybox /bin/bash +root@bf22919af2cf:/# ls +bin boot dev etc home lib media mnt opt proc root run sbin srv sys tmp usr var +root@bf22919af2cf:/# pwd +/ +``` + +-ti选项分配一个伪终端给容器并可以使用STDIN进行交互,可以看到这时可以在容器内执行一些命令。这时的容器看起来完全是一个独立的linux虚拟机。使用exit命令退出容器。 + +## 后台运行容器 + +执行下面命令行,-d指示这个容器在后台运行,--name=container1 指定容器的名字为container1。 + +``` +[root@localhost ~]# docker run -d --name=container1 busybox /bin/sh -c "while true;do echo hello world;sleep 1;done" +7804d3e16d69b41aac5f9bf20d5f263e2da081b1de50044105b1e3f536b6db1c +``` + +命令行的执行结果是返回了这个容器的ID,没有返回命令的执行结果hello world,此时容器在后台运行,可以用docker ps命令查看正在运行的容器: + +``` +[root@localhost ~]# docker ps +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +7804d3e16d69 busybox "/bin/sh -c 'while tr" 11 seconds ago Up 10 seconds container1 +``` + +用docker logs查看容器运行的输出: + +``` +[root@localhost ~]# docker logs container1 +hello world +hello world +hello world +... +``` + +## 容器网络连接 + +默认情况下,容器可以访问外部网络,而外部网络访问容器时需要通过端口映射,下面以在docker中运行私有镜像库服务registry为例。下面的命令行中-P使registry镜像中开放的端口暴露给主机。 + +``` +[root@localhost ~]# docker run --name=container_registry -d -P registry +cb883f6216c2b08a8c439b3957fb396c847a99079448ca741cc90724de4e4731 +``` + +container\_registry这个容器已经启动了,但是并不知道容器中的服务映射到主机的哪个端口,通过docker port查看端口映射。 + +``` +[root@localhost ~]# docker port container_registry +5000/tcp -> 0.0.0.0:49155 +``` + +从输出可以看出,容器内的5000端口映射到了主机的49155端口。通过主机IP:49155就可以访问registry服务了,在浏览器中输入http://localhost:49155就可以返回registry的版本信息。 + +在运行registry镜像的时候还可以直接指定端口映射如: + +``` +docker run --name=container_registry -d -p 5000:5000 registry +``` + +通过-p 5000:5000指定容器的5000端口映射到主机的5000端口。 + +## 注意事项 + +- **启动容器不能单独加-a stdin** + + 启动容器时,不能单独加-a stdin,必须要同时加上-a stdout或者-a stderr,否则会导致终端即使在容器退出后也会卡住。 + + +- **避免使用已有容器的长id、短id作为新容器的name** + + 创建容器时,避免使用已有容器A的长id或短id作为新容器B的name。若使用容器A的长id作为容器B的name,当使用容器B的name作为指定容器进行操作时,docker匹配到的是容器A。若使用容器A的短id作为容器B的name,当使用容器A的短id作为指定容器进行相关操作时,docker匹配到的是容器B。这是因为,docker在匹配容器时,先精确匹配所有容器的长id。若未匹配成功,再根据container\_name进行精确匹配;若还未匹配成功,直接对容器id进行模糊匹配。 + +- **使用sh/bash等依赖标准输入输出的容器应该使用\`-ti\`参数,避免出现异常** + + 正常情况:不用\`-ti\`参数启动sh/bash等进程容器,容器会马上退出。 + + 出现这种问题的原因在于,docker会先创建一个匹配用于容器内业务的stdin,在不设置-ti等交互式参数时,docker会在容器启动后关闭该pipe,而业务容器进程sh/bash在检测到stdin被关闭后会直接退出。 + + 异常情况:如果在上述过程中的特定阶段(关闭该pipe之前)强制杀死docker daemon,会导致该pipe的daemon端没有被及时关闭,这样即使不带\`-ti\`的sh/bash进程也不会退出,导致异常场景,这种容器就需要手动清理。 + + Daemon重启后会接管原有的容器stream,而不带\`-ti\`参数的容器可能就无法处理(因为正常情况下这些容器不存在stream需要接管);真实业务下几乎不存在这种使用方式\(不带 \`-ti\`的sh/bash没有任何作用\),为了避免这类问题发生,限制交互类容器应该使用 \`-ti\`参数。 + +- **容器存储卷** + + 启动容器时如果通过\`-v\`参数将主机上的文件挂载到容器中,在主机或容器中使用vi或sed命令修改文件可能会使文件inode发生改变,从而导致主机和容器内的文件不同步。容器中挂载文件时应该尽量避免使用这种文件挂载的方式(或不与vi和sed同时使用),也可以通过挂载文件上层目录来避免该问题。在docker挂载卷时“nocopy”选项可以避免将容器内挂载点目录下原有的文件拷贝到主机源目录下,但是这个选项只能在挂载匿名卷时使用,不能在bind mount的场景下使用。 + +- **避免使用可能会对host造成影响的选项** + + --privileged 选项会让容器获得所有权限,容器可以做挂载操作和修改/proc、/sys等目录,可能会对host造成影响,普通容器需要避免使用该选项。 + + 共享host的namespace,比如--pid host/--ipc host/--net host等选项可以让容器跟host共享命名空间,同样会导致容器影响host的结果,需要避免使用。 + +- **kernel memory cgroup不稳定,禁止使用** + + kernel memory cgroup在小于4.0版本的Linux内核上仍属于实验阶段,运行起来不稳定,虽然Docker的Warning说是小于4.0就可以,但是我们评估认为,kmemcg在高版本内核仍然不稳定,所以不管是低版本还是高版本,均禁止使用。 + + 当docker run --kernel-memory时,会产生如下告警: + + ``` + WARNING: You specified a kernel memory limit on a kernel older than 4.0. Kernel memory limits are experimental on older kernels, it won't work as expected as expected and can cause your system to be unstable. + ``` + +- **blkio-weight参数在支持blkio精确控制的内核下不可用** + + --blkio-weight-device 可以实现容器内更为精确的blkio控制,该控制需要指定磁盘设备,可以通过docker --blkio-weight-device参数实现。同时在这种内核下docker不再提供--blkio-weight方式限制容器blkio,使用该参数创建容器将会报错: + + ``` + docker: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "process_linux.go:398: container init caused \"process_linux.go:369: setting cgroup config for ready process caused \\\"blkio.weight not supported, use weight_device instead\\\"\"" + ``` + +- **使用--blkio-weight-device需要磁盘支持CFQ调度策略** + + --blkio-weight-device参数需要磁盘工作于完全公平队列调度(CFQ:Completely Fair Queuing)的策略时才能工作。 + + 通过查看磁盘scheduler文件(/sys/block/<磁盘\>/queue/scheduler)可以获知磁盘支持的策略以及当前所采用的策略,如查看sda: + + ``` + # cat /sys/block/sda/queue/scheduler noop [deadline] cfq + ``` + + 当前sda支持三种调度策略:noop, deadline, cfq,并且正在使用deadline策略。通过echo修改策略为cfq: + + ``` + # echo cfq > /sys/block/sda/queue/scheduler + ``` + + +- **容器基础镜像中systemd使用限制** + + 通过基础镜像创建的容器在使用过程中,容器基础镜像中的systemd仅用于系统容器,普通容器不支持使用。 + + +## 并发性能 + +- docker内部的消息缓冲有一个上限,超过这个上限就会将消息丢弃,因此在并发执行命令时建议不要超过1000条命令,否则有可能会造成docker内部消息丢失,从而造成容器无法启动等严重问题。 +- 并发创建容器并对容器执行restart时会偶现“oci runtime error: container init still running”报错,这是因为containerd对事件等待队列进行了性能优化,容器stop过程中执行runc delete,尝试在1s内kill掉容器的init进程,如果1s内init进程还没有被kill掉的话runc会返回该错误。由于containerd的GC(垃圾回收机制)每隔10s会回收之前runc delete的残留资源, 所以并不影响下次对容器的操作,一般出现上述报错的话等待4\~5s之后再次启动容器即可。 + +## 安全特性解读 + +1. docker默认的权能配置分析 + + 原生的docker默认配置如下,默认进程携带的Cap如下: + + ``` + "CAP_CHOWN", + "CAP_DAC_OVERRIDE", + "CAP_FSETID", + "CAP_FOWNER", + "CAP_MKNOD", + "CAP_NET_RAW", + "CAP_SETGID", + "CAP_SETUID", + "CAP_SETFCAP", + "CAP_SETPCAP", + "CAP_NET_BIND_SERVICE", + "CAP_SYS_CHROOT", + "CAP_KILL", + "CAP_AUDIT_WRITE", + ``` + + 默认的seccomp配置是白名单,不在白名单的syscall默认会返回SCMP\_ACT\_ERRNO,根据给docker不同的Cap开放不同的系统调用,不在上面的权限,默认docker都不会给到容器。 + +2. CAP\_SYS\_MODULE + + CAP\_SYS\_MODULE这个Cap是让容器可以插入ko,增加该Cap可以让容器逃逸,甚至破坏内核。因为容器最大的隔离是Namespace,在ko中只要把他的Namespace指向init\_nsproxy即可。 + +3. CAP\_SYS\_ADMIN + + sys\_admin权限给容器带来的能力有: + + - 文件系统(mount,umount,quotactl) + - namespace设置相关的(setns,unshare,clone new namespace) + - driver ioctl + - 对pci的控制,pciconfig\_read, pciconfig\_write, pciconfig\_iobase + - sethostname + +4. CAP\_NET\_ADMIN + + 容器中有访问网络接口的和sniff网络流量的权限,容器可以获取到所有容器包括host的网络流量,对网络隔离破坏极大。 + +5. CAP\_DAC\_READ\_SEARCH + + 该权限开放了,两个系统调用open\_by\_handle\_at,name\_to\_handle\_at,如果host上没有selinux保护,容器中可通过暴力搜索file\_handle结构的inode号,进而可以打开host上的任意文件,影响文件系统的隔离性。 + +6. CAP\_SYS\_RAWIO + + 容器中可对host写入io端口,可造成host内核崩溃。 + +7. CAP\_SYS\_PTRACE + + 容器中有ptrace权限,可对容器的进程进行ptrace调试。现runc已经修补该漏洞,但有些工具比如nsenter和docker-enter并没有改保护,容器中可对这些工具执行的进程进行调试,获取这些工具带入的资源信息(Namespace、fd等),另外, ptrace可以绕过seccomp,极大增加内核攻击面。 + +8. Docker Cap接口 --cap-add all + + --cap-add all表示赋予容器所有的权能,包括本节提到的比较危险的权能,使得容器可以逃逸。 + +9. 不要禁用docker的seccomp特性 + + 默认的docker有一个seccomp的配置,配置中使用的是白名单,不在配置的sys\_call会被seccomp禁掉,使用接口--security-opt 'seccomp:unconfined'可以禁止使用seccomp特性。如果禁用seccomp或使用自定义seccomp配置但过滤名单不全,都会增加容器对内核的攻击面。 + +10. 不要配置/sys和/proc目录可写 + + /sys和/proc目录包含了linux维护内核参数、设备管理的接口,容器中配置该目录可写可能会导致容器逃逸。 + +11. Docker开放Cap --CAP\_AUDIT\_CONTROL + + 容器可以通过控制系统audit系统,并且通过AUDIT\_TTY\_GET/AUDIT\_TTY\_SET等命令可以获取审计系统中记录的tty执行输入记录,包括root密码。 + +12. CAP\_BLOCK\_SUSPEND和CAP\_WAKE\_ALARM + + 容器可拥有阻塞系统挂起\(epoll\)的能力。 + +13. CAP\_IPC\_LOCK + + 容器拥有该权限后,可以突破ulimit中的max locked memory限制,任意mlock超大内存块,造成一定意义的DoS攻击。 + +14. CAP\_SYS\_LOG + + 容器拥有该权限后,可以dmesg读取系统内核日志,突破内核kaslr防护。 + +15. CAP\_SYS\_NICE + + 容器拥有该权限后,可以改变进程的调度策略和优先级,造成一定意义的DoS攻击。 + +16. CAP\_SYS\_RESOURCE + + 容器可以绕过对其的一些资源限制,比如磁盘空间资源限制、keymaps数量限制、pipe-size-max限制等,造成一定意义的DoS攻击。 + +17. CAP\_SYS\_TIME + + 容器可以改变host上的时间。 + +18. Docker默认Cap风险分析 + + Docker默认的Cap,包含了CAP\_SETUID和CAP\_FSETID,如host和容器共享目录,容器可对共享目录的二进制文件进行+s设置,host上的普通用户可使用其进行提权CAP\_AUDIT\_WRITE,容器可以对host写入,容器可以对host写入日志,host需配置日志防爆措施。 + +19. Docker和host共享namespace参数,比如--pid,--ipc, --uts + + 该参数为容器和host共享namespace空间,容器和host的namespace隔离没有了,容器可对host进行攻击。比如,使用--pid 和host共享pid namespace,容器中可以看到host上的进程pid号,可以随意杀死host的进程。 + +20. --device 把host的敏感目录或者设备,映射到容器中 + + Docker管理面有接口可以把host上的目录或者设备映射到容器中,比如--device,-v等参数,不要把host上的敏感目录或者设备映射到容器中。 + + diff --git "a/content/zh/docs/Container/\345\210\233\345\273\272\345\256\271\345\231\250.md" "b/content/zh/docs/Container/\345\210\233\345\273\272\345\256\271\345\231\250.md" index a41b3fa92eaeee2fd8181aede7b99dd69c524502..f19a4b07d1a2fc23b5ef6ac692f015f03975d9cf 100644 --- "a/content/zh/docs/Container/\345\210\233\345\273\272\345\256\271\345\231\250.md" +++ "b/content/zh/docs/Container/\345\210\233\345\273\272\345\256\271\345\231\250.md" @@ -17,18 +17,27 @@ create命令支持参数参考下表。 **表 1** create命令参数列表 - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git "a/content/zh/docs/Virtualization/\346\237\245\350\257\242\350\231\232\346\213\237\346\234\272\344\277\241\346\201\257.md" "b/content/zh/docs/Virtualization/\346\237\245\350\257\242\350\231\232\346\213\237\346\234\272\344\277\241\346\201\257.md" index 0362fbd4b1949a8d7510970f15f1d70a94ab22b6..18d38b742fecfa542765610f6eae96ac05a8ec24 100644 --- "a/content/zh/docs/Virtualization/\346\237\245\350\257\242\350\231\232\346\213\237\346\234\272\344\277\241\346\201\257.md" +++ "b/content/zh/docs/Virtualization/\346\237\245\350\257\242\350\231\232\346\213\237\346\234\272\344\277\241\346\201\257.md" @@ -82,7 +82,7 @@ Libvirt组件提供了一组查询虚拟机状态信息的命令,包括虚拟 - - @@ -118,7 +118,7 @@ Libvirt组件提供了一组查询虚拟机状态信息的命令,包括虚拟 ## 示例 -- 使用virsh dominfo查询一个定义好的虚拟机的基本信息,从查询结果可知,虚拟机ID为5,UUID为ab472210-db8c-4018-9b3e-fc5319a769f7,内存大小为8GiB,vCPU数目为4个等。 +- 使用virsh dominfo查询一个创建好的虚拟机的基本信息,从查询结果可知,虚拟机ID为5,UUID为ab472210-db8c-4018-9b3e-fc5319a769f7,内存大小为8GiB,vCPU数目为4个等。 ``` # virsh dominfo openEulerVM @@ -177,7 +177,7 @@ Libvirt组件提供了一组查询虚拟机状态信息的命令,包括虚拟 Target Source --------------------------------------------------------------------- sda /home/openeuler/vm/openEuler_aarch64.qcow2 - sdb /home/openeuler/vm/openEuler-1.0-base-aarch64-dvd.iso + sdb /home/openeuler/vm/openEuler-20.03-LTS-aarch64-dvd.iso ``` - 使用virsh domiflist查询虚拟机网卡信息,从查询结果可知,虚拟机有1张网卡,对应的后端是vnet0在主机br0网桥上,MAC地址为00:05:fe:d4:f1:cc。 diff --git "a/content/zh/docs/Virtualization/\347\203\255\350\277\201\347\247\273\350\231\232\346\213\237\346\234\272.md" "b/content/zh/docs/Virtualization/\347\203\255\350\277\201\347\247\273\350\231\232\346\213\237\346\234\272.md" index 5b5eac45b9b4da8659da33ddd9f39f3ac186c5db..58b8541b51af46ac4ea7e4a8c82b91a5ff99c4e5 100644 --- "a/content/zh/docs/Virtualization/\347\203\255\350\277\201\347\247\273\350\231\232\346\213\237\346\234\272.md" +++ "b/content/zh/docs/Virtualization/\347\203\255\350\277\201\347\247\273\350\231\232\346\213\237\346\234\272.md" @@ -1,3 +1 @@ # 热迁移虚拟机 - - diff --git "a/content/zh/docs/Virtualization/\347\224\250\346\210\267\345\222\214\347\256\241\347\220\206\345\221\230\346\214\207\345\215\227.md" "b/content/zh/docs/Virtualization/\347\224\250\346\210\267\345\222\214\347\256\241\347\220\206\345\221\230\346\214\207\345\215\227.md" index ba1612561919c90bc15336c3ae871de2fff618cc..8c1d462d78bb748105febcf2f66df8722fc90751 100644 --- "a/content/zh/docs/Virtualization/\347\224\250\346\210\267\345\222\214\347\256\241\347\220\206\345\221\230\346\214\207\345\215\227.md" +++ "b/content/zh/docs/Virtualization/\347\224\250\346\210\267\345\222\214\347\256\241\347\220\206\345\221\230\346\214\207\345\215\227.md" @@ -1,4 +1,3 @@ # 用户和管理员指南 本章介绍如何在虚拟化平台上创建虚拟机,并对虚拟机进行生命周期管理、信息查询等操作,便于用户和管理员进行相应操作。 - diff --git "a/content/zh/docs/Virtualization/\347\231\273\345\275\225\350\231\232\346\213\237\346\234\272.md" "b/content/zh/docs/Virtualization/\347\231\273\345\275\225\350\231\232\346\213\237\346\234\272.md" index e0e0a2c94702712ae9ccc5e95a301c7b8fa49401..00ebabc3592323951138dd1c9439c47dacc64121 100644 --- "a/content/zh/docs/Virtualization/\347\231\273\345\275\225\350\231\232\346\213\237\346\234\272.md" +++ "b/content/zh/docs/Virtualization/\347\231\273\345\275\225\350\231\232\346\213\237\346\234\272.md" @@ -2,4 +2,3 @@ 本章介绍使用VNC登录虚拟机的方法。 - diff --git "a/content/zh/docs/Virtualization/\347\256\241\347\220\206\345\221\275\344\273\244.md" "b/content/zh/docs/Virtualization/\347\256\241\347\220\206\345\221\275\344\273\244.md" index 627a0b38c4ac79ae83b58caed2ef3502a25c69c3..9efda4c56754e273ec204882fdd518340a037731 100644 --- "a/content/zh/docs/Virtualization/\347\256\241\347\220\206\345\221\275\344\273\244.md" +++ "b/content/zh/docs/Virtualization/\347\256\241\347\220\206\345\221\275\344\273\244.md" @@ -55,7 +55,7 @@ virsh - diff --git "a/content/zh/docs/Virtualization/\347\256\241\347\220\206\350\231\232\346\213\237CPU.md" "b/content/zh/docs/Virtualization/\347\256\241\347\220\206\350\231\232\346\213\237CPU.md" index 48a841addbae75bb1869880426af296ea072cc6d..d7a8a06119338e76667f0d6ad68c10fa43c63df6 100644 --- "a/content/zh/docs/Virtualization/\347\256\241\347\220\206\350\231\232\346\213\237CPU.md" +++ "b/content/zh/docs/Virtualization/\347\256\241\347\220\206\350\231\232\346\213\237CPU.md" @@ -1,2 +1 @@ # 管理虚拟CPU - diff --git "a/content/zh/docs/Virtualization/\347\256\241\347\220\206\350\231\232\346\213\237\345\206\205\345\255\230.md" "b/content/zh/docs/Virtualization/\347\256\241\347\220\206\350\231\232\346\213\237\345\206\205\345\255\230.md" index f33171a360c9e746c4d3d7957edb779b652f04bc..6443f642730c09fee3507bcfafcbe4da9eff2b91 100644 --- "a/content/zh/docs/Virtualization/\347\256\241\347\220\206\350\231\232\346\213\237\345\206\205\345\255\230.md" +++ "b/content/zh/docs/Virtualization/\347\256\241\347\220\206\350\231\232\346\213\237\345\206\205\345\255\230.md" @@ -1 +1,2 @@ # 管理虚拟内存 + diff --git "a/content/zh/docs/Virtualization/\347\256\241\347\220\206\350\231\232\346\213\237\346\234\272.md" "b/content/zh/docs/Virtualization/\347\256\241\347\220\206\350\231\232\346\213\237\346\234\272.md" index 54c7963c28dabe8eaf0f44c493ab39dc35a937d1..23b6e27156134b1ecac0ebe79d21128e2c29aa02 100644 --- "a/content/zh/docs/Virtualization/\347\256\241\347\220\206\350\231\232\346\213\237\346\234\272.md" +++ "b/content/zh/docs/Virtualization/\347\256\241\347\220\206\350\231\232\346\213\237\346\234\272.md" @@ -1,2 +1 @@ # 管理虚拟机 - diff --git "a/content/zh/docs/Virtualization/\347\256\241\347\220\206\350\231\232\346\213\237\346\234\272USB.md" "b/content/zh/docs/Virtualization/\347\256\241\347\220\206\350\231\232\346\213\237\346\234\272USB.md" new file mode 100644 index 0000000000000000000000000000000000000000..d39fdc58b0ebfb11dd21e11ceff1f8e7714a2367 --- /dev/null +++ "b/content/zh/docs/Virtualization/\347\256\241\347\220\206\350\231\232\346\213\237\346\234\272USB.md" @@ -0,0 +1,3 @@ +# 管理虚拟机USB + +为了方便在虚拟机内部使用USBkey设备、USB海量存储设备等USB设备,openEuler提供了USB设备直通的功能。用户可以通过USB直通和热插拔相关接口给虚拟机配置直通USB设备、或者在虚拟机处于运行的状态下热插/热拔USB设备。 diff --git "a/content/zh/docs/Virtualization/\347\256\241\347\220\206\350\231\232\346\213\237\347\243\201\347\233\230.md" "b/content/zh/docs/Virtualization/\347\256\241\347\220\206\350\231\232\346\213\237\347\243\201\347\233\230.md" index 9c062d2698bb3c0b06f9c3c5a0c084e648d4af57..50e2aed7cc75436ddeedb01227bb9ce63f017b25 100644 --- "a/content/zh/docs/Virtualization/\347\256\241\347\220\206\350\231\232\346\213\237\347\243\201\347\233\230.md" +++ "b/content/zh/docs/Virtualization/\347\256\241\347\220\206\350\231\232\346\213\237\347\243\201\347\233\230.md" @@ -10,7 +10,7 @@ ## 操作步骤 -虚拟磁盘的配置步骤,请参见"虚拟机配置 > 配置虚拟机设备 > 存储设备"。本节以virtio-scsi磁盘为例,介绍挂载和卸载虚拟磁盘的简单方法。 +虚拟磁盘的配置步骤,请参见[3.2.4.1 存储设备](存储设备.md)。本节以virtio-scsi磁盘为例,介绍挂载和卸载虚拟磁盘的简单方法。 - 挂载virtio-scsi磁盘: diff --git "a/content/zh/docs/Virtualization/\347\256\241\347\220\206\350\231\232\346\213\237\347\275\221\345\215\241.md" "b/content/zh/docs/Virtualization/\347\256\241\347\220\206\350\231\232\346\213\237\347\275\221\345\215\241.md" index 717122ea27a3f417b39e363ce38a4cb48a55939f..5a74bbf3bd93b21acab497a919ab5af955cc2f76 100644 --- "a/content/zh/docs/Virtualization/\347\256\241\347\220\206\350\231\232\346\213\237\347\275\221\345\215\241.md" +++ "b/content/zh/docs/Virtualization/\347\256\241\347\220\206\350\231\232\346\213\237\347\275\221\345\215\241.md" @@ -6,7 +6,7 @@ ## 操作步骤 -虚拟网卡的配置步骤,请参见"虚拟机配置 > 配置虚拟机设备 > 网络设备"。本节以vhost-net网卡为例,介绍挂载和卸载虚拟网卡的简单方法。 +虚拟网卡的配置步骤,请参见[3.2.4.2 网络设备](网络设备.md)。本节以vhost-net网卡为例,介绍挂载和卸载虚拟网卡的简单方法。 - 挂载vhost-net网卡: @@ -39,6 +39,6 @@ # virsh detach-device ``` - 其中,detach-device.xml指定了需要卸载的的XML信息,与动态挂载时的XML信息保持一致。 + 其中,detach-device.xml指定了需要卸载虚拟网卡的XML信息,与动态挂载时的XML信息保持一致。 diff --git "a/content/zh/docs/Virtualization/\347\256\241\347\220\206\350\256\276\345\244\207\347\233\264\351\200\232.md" "b/content/zh/docs/Virtualization/\347\256\241\347\220\206\350\256\276\345\244\207\347\233\264\351\200\232.md" new file mode 100644 index 0000000000000000000000000000000000000000..024f99f41a9f92f682b40631f75c2ad5fbe4d178 --- /dev/null +++ "b/content/zh/docs/Virtualization/\347\256\241\347\220\206\350\256\276\345\244\207\347\233\264\351\200\232.md" @@ -0,0 +1,6 @@ +# 管理设备直通 + +设备直通技术是指将host上的物理设备直接呈现给一台虚拟机,虚拟机可以直接访问该设备资源的一种使用方式。使用设备直通的方式可以让虚拟机获得良好的I/O性能。 + +当前设备直通使用的是VFIO方式,按照直通的设备类型可以分为PCI直通和SR-IOV直通两种类型。 + diff --git "a/content/zh/docs/Virtualization/\347\273\221\345\256\232qemu\350\277\233\347\250\213\350\207\263\347\211\251\347\220\206CPU.md" "b/content/zh/docs/Virtualization/\347\273\221\345\256\232qemu\350\277\233\347\250\213\350\207\263\347\211\251\347\220\206CPU.md" index 70f195166ecf32906ddd2c32e44d184c3fc1c1b4..7685ccfce42ef1f8994a04e6062aa420870b3b88 100644 --- "a/content/zh/docs/Virtualization/\347\273\221\345\256\232qemu\350\277\233\347\250\213\350\207\263\347\211\251\347\220\206CPU.md" +++ "b/content/zh/docs/Virtualization/\347\273\221\345\256\232qemu\350\277\233\347\250\213\350\207\263\347\211\251\347\220\206CPU.md" @@ -1,14 +1,14 @@ -# 绑定qemu进程至物理CPU +# 绑定QEMU进程至物理CPU ## 概述 -qemu主进程绑定特性是将qemu主进程绑定到特定的物理CPU范围内,从而保证了运行不同业务的虚拟机不会干扰到邻位虚拟机。例如在一个典型的云计算场景中,一台物理机上会运行多台虚拟机,而每台虚拟机的业务不同,造成了不同程度的资源占用,为了避免存储IO密集的虚拟机对邻位虚拟机的干扰,需要将不同虚拟机处理IO的存储进程完全隔离,由于qemu主进程是处理前后端的主要服务进程,故需要实现隔离。 +QEMU主进程绑定特性是将QEMU主进程绑定到特定的物理CPU范围内,从而保证了运行不同业务的虚拟机不会干扰到邻位虚拟机。例如在一个典型的云计算场景中,一台物理机上会运行多台虚拟机,而每台虚拟机的业务不同,造成了不同程度的资源占用,为了避免存储IO密集的虚拟机对邻位虚拟机的干扰,需要将不同虚拟机处理IO的存储进程完全隔离,由于QEMU主进程是处理前后端的主要服务进程,故需要实现隔离。 ## 操作步骤 -通过virsh emulatorpin命令可以绑定qemu主进程到物理CPU。 +通过virsh emulatorpin命令可以绑定QEMU主进程到物理CPU。 -- 查看qemu进程当前绑定的物理CPU范围: +- 查看QEMU进程当前绑定的物理CPU范围: ``` # virsh emulatorpin openEulerVM @@ -17,9 +17,9 @@ qemu主进程绑定特性是将qemu主进程绑定到特定的物理CPU范围内 *: 0-63 ``` - 这说明虚拟机_openEulerVM_对应的qemu主进程可以在主机的所有物理CPU上调度。 + 这说明虚拟机_openEulerVM_对应的QEMU主进程可以在主机的所有物理CPU上调度。 -- 在线绑定:修改处于running状态的虚拟机对应的qemu进程的绑定关系,使用带**--live**参数的vcpu emulatorpin命令: +- 在线绑定:修改处于running状态的虚拟机对应的QEMU进程的绑定关系,使用带**--live**参数的vcpu emulatorpin命令: ``` # virsh emulatorpin openEulerVM --live 2-3 @@ -30,9 +30,9 @@ qemu主进程绑定特性是将qemu主进程绑定到特定的物理CPU范围内 *: 2-3 ``` - 以上命令把虚拟机_open__Euler__VM_对应的qemu进程绑定到物理CPU2、3上,即限制了qemu进程只在这两个物理CPU上调度。这一绑定关系的调整立即生效,但在虚拟机关机并重新启动后失效。 + 以上命令把虚拟机_open__Euler__VM_对应的QEMU进程绑定到物理CPU2、3上,即限制了QEMU进程只在这两个物理CPU上调度。这一绑定关系的调整立即生效,但在虚拟机关机并重新启动后失效。 -- 持久化绑定:在libvirt内部配置中修改虚拟机对应的qemu进程的绑定关系,使用带**--config**参数的virsh emulatorpin命令: +- 持久化绑定:在libvirt内部配置中修改虚拟机对应的QEMU进程的绑定关系,使用带**--config**参数的virsh emulatorpin命令: ``` # virsh emulatorpin openEulerVM --config 0-3,^1 @@ -43,6 +43,6 @@ qemu主进程绑定特性是将qemu主进程绑定到特定的物理CPU范围内 *: 0,2-3 ``` - 以上命令把虚拟机_open__Euler__VM_对应的qemu进程绑定到物理CPU0、2、3上,即限制了qemu进程只在这三个物理CPU上调度。这一绑定关系的调整不会立即生效,在虚拟机下一次启动后才生效,并持久生效。 + 以上命令把虚拟机_open__Euler__VM_对应的QEMU进程绑定到物理CPU0、2、3上,即限制了QEMU进程只在这三个物理CPU上调度。这一绑定关系的调整不会立即生效,在虚拟机下一次启动后才生效,并持久生效。 diff --git "a/content/zh/docs/Virtualization/\347\275\221\347\273\234\350\256\276\345\244\207.md" "b/content/zh/docs/Virtualization/\347\275\221\347\273\234\350\256\276\345\244\207.md" index 5cdf7c776e6900b93b05d60fa64f9c3ad57e22f6..c8bd234a07e7501c97f9b06665e961f7a108bb3c 100644 --- "a/content/zh/docs/Virtualization/\347\275\221\347\273\234\350\256\276\345\244\207.md" +++ "b/content/zh/docs/Virtualization/\347\275\221\347\273\234\350\256\276\345\244\207.md" @@ -74,7 +74,7 @@ XML配置文件中使用元素“interface”,其属性“type”表示虚拟 ## 配置示例 -- 按照“准备虚拟机网络”章节创建了Linux网桥br0后,配置一个桥接在br0网桥上的virtio类型的虚拟网卡设备,对应的XML配置如下: +- 按照[准备虚拟机网络](准备虚拟机网络.md)创建了Linux网桥br0后,配置一个桥接在br0网桥上的virtio类型的虚拟网卡设备,对应的XML配置如下: ``` @@ -89,7 +89,7 @@ XML配置文件中使用元素“interface”,其属性“type”表示虚拟 ``` -- 如果按照“准备虚拟机网络”章节创建了OVS网桥,配置一个后端使用vhost驱动,且具有四个队列的virtio虚拟网卡设备。 +- 如果按照[准备虚拟机网络](准备虚拟机网络.md)创建了OVS网桥,配置一个后端使用vhost驱动,且具有四个队列的virtio虚拟网卡设备。 ``` diff --git "a/content/zh/docs/Virtualization/\350\243\270\350\256\276\345\244\207\346\230\240\345\260\204.md" "b/content/zh/docs/Virtualization/\350\243\270\350\256\276\345\244\207\346\230\240\345\260\204.md" new file mode 100644 index 0000000000000000000000000000000000000000..ff7b2e4c9d497c55e478a5f9f2b5e5310e624454 --- /dev/null +++ "b/content/zh/docs/Virtualization/\350\243\270\350\256\276\345\244\207\346\230\240\345\260\204.md" @@ -0,0 +1,54 @@ +# 裸设备映射 + +## 概述 + +配置虚拟机存储设备时,除了将文件配置给虚拟机作为虚拟磁盘使用外,还可以将块设备(物理LUN、逻辑卷等)直接配置给虚拟机使用,从而提升存储性能。该配置方式称为裸设备映射。在该配置方式下,虚拟磁盘向虚拟机呈现为一个SCSI设备,且支持大部分SCSI命令。 + +裸设备映射根据后端实现特点,分为虚拟裸设备映射和物理裸设备映射,物理裸设备映射相对虚拟裸设备映射具有更优秀的性能和更丰富的SCSI命令,但物理裸设备映射需要将整块SCSI磁盘挂载给虚拟机使用,如果使用分区、逻辑卷等方式配置,虚拟机将无法识别。 + +## 配置示例 + +裸设备映射需要修改虚拟机配置文件,这里给出配置示例。 + +- 虚拟裸设备映射 + + 将主机上存在的SCSI磁盘“/dev/sdc”挂载给虚拟机作为虚拟裸设备的配置示例如下: + + ``` + + + ... + + + + + +
+ + ... + + + ``` + + +- 物理裸设备映射 + + 将主机上存在的SCSI磁盘“/dev/sdc”挂载给虚拟机作为物理裸设备的配置示例如下: + + ``` + + + ... + + + + + +
+ + ... + + + ``` + + diff --git "a/content/zh/docs/Virtualization/\350\256\244\350\257\206\350\231\232\346\213\237\345\214\226.md" "b/content/zh/docs/Virtualization/\350\256\244\350\257\206\350\231\232\346\213\237\345\214\226.md" index 29ec1d5a5b2f78ecb2b882eeb8df8c8ab9d5eb6a..145473cb3c67a5b08ab748ca7a4dea765a64ce93 100644 --- "a/content/zh/docs/Virtualization/\350\256\244\350\257\206\350\231\232\346\213\237\345\214\226.md" +++ "b/content/zh/docs/Virtualization/\350\256\244\350\257\206\350\231\232\346\213\237\345\214\226.md" @@ -15,14 +15,14 @@ - Hypervisor模型 - 在这种模型中,VMM被看做是一个完备的操作系统,同时还具备虚拟化功能,VMM直接管理所有的物理资源,包括处理器,内存和IO设备等,如XEN,VMware vSphere。 + 在这种模型中,VMM被看做是一个完备的操作系统,同时还具备虚拟化功能,VMM直接管理所有的物理资源,包括处理器,内存和I/O设备等。 - 宿主模型 - 这种模型中,物理资源是由宿主机操作系统管理,宿主机操作系统是传统的操作系统,如Linux,Windows等,宿主机操作系统不提供虚拟化能力,提供虚拟化能力的VMM作为系统的一个驱动或者软件运行在宿主操作系统上,VMM通过调用Host OS的服务获得资源,实现处理器,内存和IO设备的模拟,这种模型的虚拟化实现有KVM、Virtual Box等。 + 这种模型中,物理资源是由宿主机操作系统管理,宿主机操作系统是传统的操作系统,如Linux,Windows等,宿主机操作系统不提供虚拟化能力,提供虚拟化能力的VMM作为系统的一个驱动或者软件运行在宿主操作系统上,VMM通过调用host OS的服务获得资源,实现处理器,内存和I/O设备的模拟,这种模型的虚拟化实现有KVM、Virtual Box等。 -KVM(Kernel-based Virtual Machine)即基于内核的虚拟机,是Linux的一个内核模块,该内核模块使Linux成为一个Hypervisor。KVM架构如[图2](#fig310953013541)所示。KVM本身未模拟任何硬件设备,它用于使能硬件提供的虚拟化能力,比如Intel VT-x, AMD-V, ARM virtualization extensions等。主板、内存及I/O等设备的模拟由用户态的QEMU完成。用户态QEMU配合内核KVM模块共同完成虚拟机的硬件模拟,客户操作系统运行在QEMU和KVM模拟的硬件上。 +KVM(Kernel-based Virtual Machine)即基于内核的虚拟机,是Linux的一个内核模块,该内核模块使Linux成为一个hypervisor。KVM架构如[图2](#fig310953013541)所示。KVM本身未模拟任何硬件设备,它用于使能硬件提供的虚拟化能力,比如Intel VT-x, AMD-V, ARM virtualization extensions等。主板、内存及I/O等设备的模拟由用户态的QEMU完成。用户态QEMU配合内核KVM模块共同完成虚拟机的硬件模拟,客户操作系统运行在QEMU和KVM模拟的硬件上。 **图 2** KVM架构图 ![](figures/KVM架构图.png "KVM架构图") @@ -31,7 +31,7 @@ KVM(Kernel-based Virtual Machine)即基于内核的虚拟机,是Linux的 openEuler软件包中提供的虚拟化相关组件: -- KVM:提供核心的虚拟化基础设施,使Linux系统成为一个Hypervisor,支持多个虚拟机同时在该主机上运行。 +- KVM:提供核心的虚拟化基础设施,使Linux系统成为一个hypervisor,支持多个虚拟机同时在该主机上运行。 - QEMU:模拟处理器并提供一组设备模型,配合KVM实现基于硬件的虚拟化模拟加速。 - Libvirt:为管理虚拟机提供工具集,主要包含统一、稳定、开放的应用程序接口(API)、守护进程 (Libvirtd)和一个默认命令行管理工具(virsh)。 - Open vSwitch:为虚拟机提供虚拟网络的工具集,支持编程扩展,以及标准的管理接口和协议(如NetFlow, sFlow,IPFIX, RSPAN, CLI, LACP, 802.1ag)。 @@ -62,7 +62,7 @@ openEuler软件包中提供的虚拟化相关组件: ## 虚拟化优势 -虚拟化为IT基础设施带来了众多优势: +虚拟化为数据中心的基础设施带来了众多优势: - 灵活性和可扩展性 diff --git "a/content/zh/docs/Virtualization/\351\205\215\347\275\256Guest-NUMA.md" "b/content/zh/docs/Virtualization/\351\205\215\347\275\256Guest-NUMA.md" index 91a9ff7787bda6c0f4eee0c9a427d75dad979a9e..bb6007813aa4f8f9f1afe3f4bbab84dc535e06a6 100644 --- "a/content/zh/docs/Virtualization/\351\205\215\347\275\256Guest-NUMA.md" +++ "b/content/zh/docs/Virtualization/\351\205\215\347\275\256Guest-NUMA.md" @@ -6,7 +6,7 @@ ## 操作步骤 -在虚拟机的XML配置文件中,配置了Guest NUMA后,就可以在虚拟机内部查看NUMA拓扑结构。numa项是Guest NUMA的必配项。 +在虚拟机的XML配置文件中,配置了Guest NUMA后,就可以在虚拟机内部查看NUMA拓扑结构。项是Guest NUMA的必配项。 ``` @@ -29,8 +29,8 @@ ``` >![](public_sys-resources/icon-note.gif) **说明:** ->- numa项提供虚拟机内部呈现NUMA拓扑功能,“cell id”表示vNode编号,“cpus”表示vCPU编号,“memory”表示对应vNode上的内存大小。 ->- 如果希望通过Guest NUMA提供更好的性能,则需要配置numatune和cputune,使vCPU和对应的内存分布在同一个物理NUMA NODE上: ->- numatune中的“cellid”和numa中的“cell id”是对应的;“mode”可以配置为“strict”(严格从指定node上申请内存,内存不够则失败)、“preferred”(优先从某一node上申请内存,如果不够则从其他node上申请)、“interleave”(从指定的node上交叉申请内存);“nodeset”表示指定物理NUMA NODE。 ->- cputune中需要将同一cell id中的vCPU绑定到与memnode相同的物理NUMA NODE上。 +>- 项提供虚拟机内部呈现NUMA拓扑功能,“cell id”表示vNode编号,“cpus”表示vCPU编号,“memory”表示对应vNode上的内存大小。 +>- 如果希望通过Guest NUMA提供更好的性能,则需要配置,使vCPU和对应的内存分布在同一个物理NUMA NODE上: +> - 中的“cellid”和中的“cell id”是对应的;“mode”可以配置为“strict”(严格从指定node上申请内存,内存不够则失败)、“preferred”(优先从某一node上申请内存,如果不够则从其他node上申请)、“interleave”(从指定的node上交叉申请内存);“nodeset”表示指定物理NUMA NODE。 +> - 中需要将同一cell id中的vCPU绑定到与memnode相同的物理NUMA NODE上。 diff --git "a/content/zh/docs/Virtualization/\351\205\215\347\275\256Host-NUMA.md" "b/content/zh/docs/Virtualization/\351\205\215\347\275\256Host-NUMA.md" index 9be01110bfa71dbfdb1e5c598f6f22e988b1b18e..0cd775ac5907b572376de73add4840906725d402 100644 --- "a/content/zh/docs/Virtualization/\351\205\215\347\275\256Host-NUMA.md" +++ "b/content/zh/docs/Virtualization/\351\205\215\347\275\256Host-NUMA.md" @@ -2,12 +2,9 @@ 为提升虚拟机性能,在虚拟机启动前,用户可以通过虚拟机XML配置文件为虚拟机指定主机的NUMA节点,使虚拟机内存分配在指定的NUMA节点上。本特性一般与vCPU绑定一起使用,从而避免vCPU远端访问内存。 ->![](public_sys-resources/icon-notice.gif) **须知:** ->如果在指定的NODE上内存不够时,启动虚拟机会失败,并且存在系统OOM(Out Of Memory)强制关闭进程的可能性。 - ## 操作步骤 -- 查看Host的NUMA拓扑结构: +- 查看host的NUMA拓扑结构: ``` # numactl -H @@ -32,7 +29,7 @@ 3: 20 20 15 10 ``` -- 在虚拟机XML配置文件中添加numatune字段,创建并启动虚拟机。配置参数如下: +- 在虚拟机XML配置文件中添加numatune字段,创建并启动虚拟机。例如使用主机上的NUMA node 0给虚拟机分配内存,配置参数如下: ``` @@ -40,6 +37,10 @@ ``` - 以上配置表示虚拟机的内存将在Host的NUMA NODE0上分配。假设虚拟机的vCPU也绑定在NODE0的PCPU上,就可以避免由于vCPU访问远端内存带来的性能下降。 + 假设虚拟机的vCPU也绑定在NODE0的物理CPU上,就可以避免由于vCPU访问远端内存带来的性能下降。 + + >![](public_sys-resources/icon-note.gif) **说明:** + >- 分配给虚拟机的内存不要超过该NUMA节点剩余的可用内存,否则可能导致虚拟机启动失败。 + >- 建议虚拟机内存和vCPU都绑定在同一NUMA节点,避免vCPU访问远端内存造成性能下降。例如将上例中vCPU也绑定在NUMA node 0上。 diff --git "a/content/zh/docs/Virtualization/\351\205\215\347\275\256USB\346\216\247\345\210\266\345\231\250.md" "b/content/zh/docs/Virtualization/\351\205\215\347\275\256USB\346\216\247\345\210\266\345\231\250.md" new file mode 100644 index 0000000000000000000000000000000000000000..fb093fe6af6043f76fbaff75c047186d419f905c --- /dev/null +++ "b/content/zh/docs/Virtualization/\351\205\215\347\275\256USB\346\216\247\345\210\266\345\231\250.md" @@ -0,0 +1,45 @@ +# 配置USB控制器 + +## 概述 + +USB控制器是为虚拟机上的USB设备提供具体USB功能的虚拟控制器设备,在虚拟机内部使用USB设备必须给虚拟机配置USB控制器。当前openEuler支持如下三种USB控制器: + +- UHCI(Universal Host Controller Interface):通用主机控制器接口,也称为USB 1.1主机控制器规范。 +- EHCI(Enhanced Host Controller):增强主机控制器接口,也称为USB 2.0主机控制器规范。 +- xHCI(eXtensible Host Controller Interface):可扩展主机控制器接口,也称为USB 3.0主机控制器规范。 + +## 注意事项 + +- 主机服务器上需存在支持USB 1.1、USB 2.0和USB 3.0标准的USB控制器硬件和模块。 +- 为虚拟机配置USB控制器时,请按照USB 1.1、USB 2.0到USB 3.0的顺序来配置。 +- 一个xHCI控制器有8个端口,最多可以挂载4个USB 3.0设备和4个USB 2.0设备。一个EHCI控制器有6个端口,最多可以挂载6个USB2.0设备。一个UHCI控制器有2个端口,最多可以挂载2个USB 1.1设备。 +- 每台虚拟机最多支持配置一个相同类型的USB控制器。 +- 不支持热插拔USB控制器。 +- 若虚拟机没有安装USB 3.0的驱动,可能无法识别xHCI控制器,USB 3.0驱动下载和安装方法请参见对应OS发行商官方说明。 +- 为了不影响操作系统的兼容性,为虚拟机配置USB接口的tablet设备时,请指定USB控制器bus号为0(默认挂载到USB 1.1控制器上)。 + +## 配置方法 + +这里介绍为虚拟机配置USB控制器的配置内容说明。建议同时配置USB 1.1、USB 2.0和USB 3.0,做到同时兼容三种设备。 + +USB 1.1控制器(UHCI)的XML配置项为: + +``` + + +``` + +USB 2.0控制器(EHCI)的XML配置为: + +``` + + +``` + +USB 3.0控制器(xHCI)的XML配置为: + +``` + + +``` + diff --git "a/content/zh/docs/Virtualization/\351\205\215\347\275\256USB\347\233\264\351\200\232\350\256\276\345\244\207.md" "b/content/zh/docs/Virtualization/\351\205\215\347\275\256USB\347\233\264\351\200\232\350\256\276\345\244\207.md" new file mode 100644 index 0000000000000000000000000000000000000000..aadd8e4cdde4a2fb2acadb919a8909bbf7659840 --- /dev/null +++ "b/content/zh/docs/Virtualization/\351\205\215\347\275\256USB\347\233\264\351\200\232\350\256\276\345\244\207.md" @@ -0,0 +1,91 @@ +# 配置USB直通设备 + +## 概述 + +当虚拟机配置好USB控制器后,就可以通过设备直通的方式将主机上的物理USB设备挂载到虚拟机内部供虚拟机使用。在虚拟化场景下,除了支持静态配置以外还同时支持USB设备的热插/拔操作,即在虚拟机处于运行状态的时候挂载/卸载USB设备。 + +## 注意事项 + +- 一个USB设备只能直通给一台虚拟机使用 +- 配置了直通USB设备的虚拟机不支持热迁移 +- 虚拟机配置文件中直通的USB设备不存在时,虚拟机会创建失败 +- 对一个正在读写的USB存储设备进行强制热拔操作有可能会损坏USB设备内的文件 + +## 配置说明 + +这里介绍为虚拟机配置USB设备的配置内容说明。 + +USB设备的XML描述: + +``` + + +
+ +
+ +``` + +-
,其中,m表示该USB设备在主机上的bus地址,n表示device ID编号。 +-
表示该USB设备要挂载到虚拟机指定的USB控制器。其中x表示控制器ID,与虚拟机所配置的USB控制器index编号相对应,y表示port地址。用户配置直通USB设备的时候需要配置这个字段,确保设备挂载的控制器与预期相符。 + +## 配置方法 + +配置USB直通的步骤如下: + +1. 为虚拟机配置USB控制器,配置方法请参见[配置USB控制器](配置USB控制器.md)。 +2. 查询主机上的USB设备信息。 + + 通过lsusb命令(需要安装usbutils软件包)查询主机上的USB设备信息,包含bus地址、device地址、设备厂商ID、设备ID和产品描述信息等。例如: + + ``` + # lsusb + ``` + + ``` + Bus 008 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub + Bus 007 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub + Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub + Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub + Bus 006 Device 002: ID 0bda:0411 Realtek Semiconductor Corp. + Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub + Bus 005 Device 003: ID 136b:0003 STEC + Bus 005 Device 002: ID 0bda:5411 Realtek Semiconductor Corp. + Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub + Bus 001 Device 003: ID 12d1:0003 Huawei Technologies Co., Ltd. + Bus 001 Device 002: ID 0bda:5411 Realtek Semiconductor Corp. + Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub + Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub + ``` + +3. 准备USB设备的XML描述文件,注意在设备热拔之前,请确保USB设备当前不在使用当中,否则可能造成数据丢失。 +4. 执行热插、热拔命令。 + + 假设虚拟机名称为openEulerVM,对应的配置文件为usb.xml。 + + - 热插USB设备,只对当前运行的虚拟机有效,虚拟机冷重启后需要重新配置。 + + ``` + # virsh attach-device openEulerVM usb.xml --live + ``` + + - 热插USB设备,持久化该配置,即该虚拟机重启后该设备会自动直通给该虚拟机使用。 + + ``` + # virsh attach-device openEulerVM usb.xml --config + ``` + + - 热拔USB设备,只对当前运行的虚拟机有效,持久化配置的USB设备在虚拟机重启后USB设备会自动直通给该虚拟机。 + + ``` + # virsh detach-device openEulerVM usb.xml --live + ``` + + - 热拔USB设备,持久化该配置。 + + ``` + # virsh detach-device openEulerVM usb.xml --config + ``` + + + diff --git "a/content/zh/docs/Virtualization/\351\205\215\347\275\256\350\231\232\346\213\237\346\234\272PCIe\346\216\247\345\210\266\345\231\250.md" "b/content/zh/docs/Virtualization/\351\205\215\347\275\256\350\231\232\346\213\237\346\234\272PCIe\346\216\247\345\210\266\345\231\250.md" index af0ff4c6b3820d234541fab02de7a4c4f26b94e4..bd5b6f0232a200766d1b9e0bb6eb57947dffd72c 100644 --- "a/content/zh/docs/Virtualization/\351\205\215\347\275\256\350\231\232\346\213\237\346\234\272PCIe\346\216\247\345\210\266\345\231\250.md" +++ "b/content/zh/docs/Virtualization/\351\205\215\347\275\256\350\231\232\346\213\237\346\234\272PCIe\346\216\247\345\210\266\345\231\250.md" @@ -10,7 +10,7 @@ - 简化配置方法 - 在虚拟机的XML文件中写入以下内容,controller的其他属性由Libvirt自动填充: + 在虚拟机的XML文件中写入以下内容,controller的其他属性由libvirt自动填充: ``` diff --git "a/content/zh/docs/Virtualization/\351\231\204\345\275\225.md" "b/content/zh/docs/Virtualization/\351\231\204\345\275\225.md" index e4b59a9c3ba7ceaa17e0c0f2b7364bccbcf6e1cb..29508be4236b9ab5535321a3fa76a0776b600d74 100644 --- "a/content/zh/docs/Virtualization/\351\231\204\345\275\225.md" +++ "b/content/zh/docs/Virtualization/\351\231\204\345\275\225.md" @@ -1 +1,2 @@ # 附录 + diff --git "a/content/zh/docs/Virtualization/\351\252\214\350\257\201\345\256\211\350\243\205\346\230\257\345\220\246\346\210\220\345\212\237.md" "b/content/zh/docs/Virtualization/\351\252\214\350\257\201\345\256\211\350\243\205\346\230\257\345\220\246\346\210\220\345\212\237.md" index 1508f1a861a1ab42b43ba1b2bfe88749f04bee2f..e22dc6b3dc7f170c47c60dd3f0baf66b114121fc 100644 --- "a/content/zh/docs/Virtualization/\351\252\214\350\257\201\345\256\211\350\243\205\346\230\257\345\220\246\346\210\220\345\212\237.md" +++ "b/content/zh/docs/Virtualization/\351\252\214\350\257\201\345\256\211\350\243\205\346\230\257\345\220\246\346\210\220\345\212\237.md" @@ -14,14 +14,14 @@ 若上述文件存在,说明内核支持KVM虚拟化。若上述文件不存在,则说明系统内核编译时未开启KVM虚拟化,需要更换支持KVM虚拟化的Linux内核。 -2. 确认qemu是否安装成功。若安装成功则可以看到qemu软件包信息,命令和回显如下: +2. 确认QEMU是否安装成功。若安装成功则可以看到QEMU软件包信息,命令和回显如下: ``` # rpm -qi qemu Name : qemu - Epoch : 10 - Version : 4.0.0 - Release : 1 + Epoch : 2 + Version : 4.0.1 + Release : 10 Architecture: aarch64 Install Date: Wed 24 Jul 2019 04:04:47 PM CST Group : Unspecified diff --git a/content/zh/menu/index.md b/content/zh/menu/index.md index 3396385eb03ce466aa52a4f7bc69652b0a079f07..46c0a1e49e2f146349113c5cd5c6dc6e39ff3d5f 100644 --- a/content/zh/menu/index.md +++ b/content/zh/menu/index.md @@ -215,6 +215,8 @@ headless: true - [删除非授权文件的全局可写属性]({{< relref "/docs/SecHarden/删除非授权文件的全局可写属性.md" >}}) - [限制at命令的使用权限]({{< relref "/docs/SecHarden/限制at命令的使用权限.md" >}}) - [限制cron命令的使用权限]({{< relref "/docs/SecHarden/限制cron命令的使用权限.md" >}}) + - [限制sudo命令的使用权限]({{< relref "/docs/SecHarden/限制sudo命令的使用权限.md" >}}) + - [内核参数]({{< relref "/docs/SecHarden/内核参数.md" >}}) - [加固内核参数]({{< relref "/docs/SecHarden/加固内核参数.md" >}}) - [授权认证]({{< relref "/docs/SecHarden/授权认证.md" >}}) @@ -233,6 +235,13 @@ headless: true - [设置口令的加密算法]({{< relref "/docs/SecHarden/设置口令的加密算法.md" >}}) - [登录失败超过三次后锁定]({{< relref "/docs/SecHarden/登录失败超过三次后锁定.md" >}}) - [加固su命令]({{< relref "/docs/SecHarden/加固su命令.md" >}}) + + + - [安全加固工具]({{< relref "/docs/SecHarden/安全加固工具.md" >}}) + - [加固操作]({{< relref "/docs/SecHarden/加固操作.md" >}}) + - [加固生效]({{< relref "/docs/SecHarden/加固生效.md" >}}) + + - [SELinux配置]({{< relref "/docs/SecHarden/SELinux配置.md" >}}) - [附录]({{< relref "/docs/SecHarden/附录.md" >}}) - [文件和目录权限含义]({{< relref "/docs/SecHarden/文件和目录权限含义.md" >}}) - [umask值含义]({{< relref "/docs/SecHarden/umask值含义.md" >}}) @@ -246,11 +255,14 @@ headless: true - [安装虚拟化核心组件]({{< relref "/docs/Virtualization/安装虚拟化核心组件.md" >}}) - [安装方法]({{< relref "/docs/Virtualization/安装方法.md" >}}) - [验证安装是否成功]({{< relref "/docs/Virtualization/验证安装是否成功.md" >}}) + + - [用户和管理员指南]({{< relref "/docs/Virtualization/用户和管理员指南.md" >}}) - [准备环境]({{< relref "/docs/Virtualization/准备环境.md" >}}) - [准备虚拟机镜像]({{< relref "/docs/Virtualization/准备虚拟机镜像.md" >}}) - [准备虚拟机网络]({{< relref "/docs/Virtualization/准备虚拟机网络.md" >}}) - - [准备UEFI引导工具集EDK II]({{< relref "/docs/Virtualization/准备UEFI引导工具集EDK-II.md" >}}) + - [准备引导固件]({{< relref "/docs/Virtualization/准备引导固件.md" >}}) + - [虚拟机配置]({{< relref "/docs/Virtualization/虚拟机配置.md" >}}) - [总体介绍]({{< relref "/docs/Virtualization/总体介绍.md" >}}) - [虚拟机描述]({{< relref "/docs/Virtualization/虚拟机描述.md" >}}) @@ -260,40 +272,72 @@ headless: true - [网络设备]({{< relref "/docs/Virtualization/网络设备.md" >}}) - [总线配置]({{< relref "/docs/Virtualization/总线配置.md" >}}) - [其它常用设备]({{< relref "/docs/Virtualization/其它常用设备.md" >}}) + + - [体系架构相关配置]({{< relref "/docs/Virtualization/体系架构相关配置.md" >}}) - [其他常见配置项]({{< relref "/docs/Virtualization/其他常见配置项.md" >}}) - [XML配置文件示例]({{< relref "/docs/Virtualization/XML配置文件示例.md" >}}) + - [管理虚拟机]({{< relref "/docs/Virtualization/管理虚拟机.md" >}}) - [虚拟机生命周期]({{< relref "/docs/Virtualization/虚拟机生命周期.md" >}}) - [总体介绍]({{< relref "/docs/Virtualization/总体介绍-0.md" >}}) - [管理命令]({{< relref "/docs/Virtualization/管理命令.md" >}}) - [示例]({{< relref "/docs/Virtualization/示例.md" >}}) + - [在线修改虚拟机配置]({{< relref "/docs/Virtualization/在线修改虚拟机配置.md" >}}) - [查询虚拟机信息]({{< relref "/docs/Virtualization/查询虚拟机信息.md" >}}) - [登录虚拟机]({{< relref "/docs/Virtualization/登录虚拟机.md" >}}) - [使用VNC密码登录]({{< relref "/docs/Virtualization/使用VNC密码登录.md" >}}) - [配置VNC TLS登录]({{< relref "/docs/Virtualization/配置VNC-TLS登录.md" >}}) + - [使用VNC密码登录]({{< relref "/docs/Virtualization/使用VNC密码登录.md" >}}) + - [配置VNC TLS登录]({{< relref "/docs/Virtualization/配置VNC-TLS登录.md" >}}) + + - [热迁移虚拟机]({{< relref "/docs/Virtualization/热迁移虚拟机.md" >}}) - [总体介绍]({{< relref "/docs/Virtualization/总体介绍-1.md" >}}) - [应用场景]({{< relref "/docs/Virtualization/应用场景.md" >}}) - [注意事项和约束限制]({{< relref "/docs/Virtualization/注意事项和约束限制.md" >}}) - [热迁移操作]({{< relref "/docs/Virtualization/热迁移操作.md" >}}) + - [管理系统资源]({{< relref "/docs/Virtualization/管理系统资源.md" >}}) - [管理虚拟CPU]({{< relref "/docs/Virtualization/管理虚拟CPU.md" >}}) - [CPU份额]({{< relref "/docs/Virtualization/CPU份额.md" >}}) - - [绑定qemu进程至物理CPU]({{< relref "/docs/Virtualization/绑定qemu进程至物理CPU.md" >}}) + - [绑定QEMU进程至物理CPU]({{< relref "/docs/Virtualization/绑定QEMU进程至物理CPU.md" >}}) - [调整虚拟CPU绑定关系]({{< relref "/docs/Virtualization/调整虚拟CPU绑定关系.md" >}}) + - [管理虚拟内存]({{< relref "/docs/Virtualization/管理虚拟内存.md" >}}) - [NUMA简介]({{< relref "/docs/Virtualization/NUMA简介.md" >}}) - [配置Host NUMA]({{< relref "/docs/Virtualization/配置Host-NUMA.md" >}}) - [配置Guest NUMA]({{< relref "/docs/Virtualization/配置Guest-NUMA.md" >}}) + + - [管理设备]({{< relref "/docs/Virtualization/管理设备.md" >}}) - [配置虚拟机PCIe控制器]({{< relref "/docs/Virtualization/配置虚拟机PCIe控制器.md" >}}) - [管理虚拟磁盘]({{< relref "/docs/Virtualization/管理虚拟磁盘.md" >}}) - [管理虚拟网卡]({{< relref "/docs/Virtualization/管理虚拟网卡.md" >}}) - [配置虚拟串口]({{< relref "/docs/Virtualization/配置虚拟串口.md" >}}) + - [管理设备直通]({{< relref "/docs/Virtualization/管理设备直通.md" >}}) + - [PCI直通]({{< relref "/docs/Virtualization/PCI直通.md" >}}) + - [SR-IOV直通]({{< relref "/docs/Virtualization/SR-IOV直通.md" >}}) + + - [管理虚拟机USB]({{< relref "/docs/Virtualization/管理虚拟机USB.md" >}}) + - [配置USB控制器]({{< relref "/docs/Virtualization/配置USB控制器.md" >}}) + - [配置USB直通设备]({{< relref "/docs/Virtualization/配置USB直通设备.md" >}}) + + - [存储快照]({{< relref "/docs/Virtualization/存储快照.md" >}}) + - [最佳实践]({{< relref "/docs/Virtualization/最佳实践.md" >}}) - - [halt-polling]({{< relref "/docs/Virtualization/halt-polling.md" >}}) - - [内存大页]({{< relref "/docs/Virtualization/内存大页.md" >}}) + - [性能最佳实践]({{< relref "/docs/Virtualization/性能最佳实践.md" >}}) + - [halt-polling]({{< relref "/docs/Virtualization/halt-polling.md" >}}) + - [IOThread配置]({{< relref "/docs/Virtualization/IOThread配置.md" >}}) + - [裸设备映射]({{< relref "/docs/Virtualization/裸设备映射.md" >}}) + - [kworker隔离绑定]({{< relref "/docs/Virtualization/kworker隔离绑定.md" >}}) + - [内存大页]({{< relref "/docs/Virtualization/内存大页.md" >}}) + + - [安全最佳实践]({{< relref "/docs/Virtualization/安全最佳实践.md" >}}) + - [Libvirt鉴权]({{< relref "/docs/Virtualization/Libvirt鉴权.md" >}}) + - [qemu-ga]({{< relref "/docs/Virtualization/qemu-ga.md" >}}) + - [sVirt保护]({{< relref "/docs/Virtualization/sVirt保护.md" >}}) + + + - [附录]({{< relref "/docs/Virtualization/附录.md" >}}) - [术语和缩略语]({{< relref "/docs/Virtualization/术语和缩略语.md" >}}) @@ -305,13 +349,17 @@ headless: true - [概述]({{< relref "/docs/Container/概述.md" >}}) - [安装与部署]({{< relref "/docs/Container/安装与部署.md" >}}) - [安装方法]({{< relref "/docs/Container/安装方法.md" >}}) + - [升级方法]({{< relref "/docs/Container/升级方法.md" >}}) - [部署配置]({{< relref "/docs/Container/部署配置.md" >}}) - [部署方式]({{< relref "/docs/Container/部署方式.md" >}}) - [存储说明]({{< relref "/docs/Container/存储说明.md" >}}) - [约束限制]({{< relref "/docs/Container/约束限制.md" >}}) - [DAEMON多端口的绑定]({{< relref "/docs/Container/DAEMON多端口的绑定.md" >}}) - [配置TLS认证与开启远程访问]({{< relref "/docs/Container/配置TLS认证与开启远程访问.md" >}}) + - [配置devicemapper存储驱动]({{< relref "/docs/Container/配置devicemapper存储驱动.md" >}}) + - [卸载]({{< relref "/docs/Container/卸载.md" >}}) + - [使用方法]({{< relref "/docs/Container/使用方法.md" >}}) - [容器管理]({{< relref "/docs/Container/容器管理.md" >}}) - [创建容器]({{< relref "/docs/Container/创建容器.md" >}}) @@ -331,13 +379,19 @@ headless: true - [查看容器使用的资源]({{< relref "/docs/Container/查看容器使用的资源.md" >}}) - [获取容器日志]({{< relref "/docs/Container/获取容器日志.md" >}}) - [容器与主机之间数据拷贝]({{< relref "/docs/Container/容器与主机之间数据拷贝.md" >}}) + - [暂停容器]({{< relref "/docs/Container/暂停容器.md" >}}) + - [恢复容器]({{< relref "/docs/Container/恢复容器.md" >}}) + - [从服务端实时获取事件消息]({{< relref "/docs/Container/从服务端实时获取事件消息.md" >}}) + - [支持CNI网络]({{< relref "/docs/Container/支持CNI网络.md" >}}) - [描述]({{< relref "/docs/Container/描述.md" >}}) - [接口]({{< relref "/docs/Container/接口.md" >}}) - [CNI网络配置说明]({{< relref "/docs/Container/CNI网络配置说明.md" >}}) - [加入CNI网络列表]({{< relref "/docs/Container/加入CNI网络列表.md" >}}) - [退出CNI网络列表]({{< relref "/docs/Container/退出CNI网络列表.md" >}}) + - [使用限制]({{< relref "/docs/Container/使用限制.md" >}}) + - [容器资源管理]({{< relref "/docs/Container/容器资源管理.md" >}}) - [资源的共享]({{< relref "/docs/Container/资源的共享.md" >}}) - [限制运行时的CPU资源]({{< relref "/docs/Container/限制运行时的CPU资源.md" >}}) @@ -347,10 +401,12 @@ headless: true - [限制容器内文件句柄数]({{< relref "/docs/Container/限制容器内文件句柄数.md" >}}) - [限制容器内可以创建的进程/线程数]({{< relref "/docs/Container/限制容器内可以创建的进程-线程数.md" >}}) - [配置容器内的ulimit值]({{< relref "/docs/Container/配置容器内的ulimit值.md" >}}) + - [特权容器]({{< relref "/docs/Container/特权容器.md" >}}) - [场景说明]({{< relref "/docs/Container/场景说明.md" >}}) - [使用限制]({{< relref "/docs/Container/使用限制-0.md" >}}) - [使用指导]({{< relref "/docs/Container/使用指导.md" >}}) + - [CRI接口]({{< relref "/docs/Container/CRI接口.md" >}}) - [描述]({{< relref "/docs/Container/描述-1.md" >}}) - [接口]({{< relref "/docs/Container/接口-2.md" >}}) @@ -368,20 +424,23 @@ headless: true - [ContainerStatus]({{< relref "/docs/Container/ContainerStatus.md" >}}) - [UpdateContainerResources]({{< relref "/docs/Container/UpdateContainerResources.md" >}}) - [ExecSync]({{< relref "/docs/Container/ExecSync.md" >}}) - - [Exec]({{< relref "/docs/Container/Exec.md" >}}) - - [Attach]({{< relref "/docs/Container/Attach.md" >}}) - - [PortForward]({{< relref "/docs/Container/PortForward.md" >}}) + - [Exec]({{< relref "/docs/Container/Exec-1.md" >}}) + - [Attach]({{< relref "/docs/Container/Attach-1.md" >}}) - [ContainerStats]({{< relref "/docs/Container/ContainerStats.md" >}}) - [ListContainerStats]({{< relref "/docs/Container/ListContainerStats.md" >}}) - [UpdateRuntimeConfig]({{< relref "/docs/Container/UpdateRuntimeConfig.md" >}}) - [Status]({{< relref "/docs/Container/Status.md" >}}) + - [Image服务]({{< relref "/docs/Container/Image服务.md" >}}) - [ListImages]({{< relref "/docs/Container/ListImages.md" >}}) - [ImageStatus]({{< relref "/docs/Container/ImageStatus.md" >}}) - [PullImage]({{< relref "/docs/Container/PullImage.md" >}}) - [RemoveImage]({{< relref "/docs/Container/RemoveImage.md" >}}) - [ImageFsInfo]({{< relref "/docs/Container/ImageFsInfo.md" >}}) + + - [约束]({{< relref "/docs/Container/约束.md" >}}) + - [镜像管理]({{< relref "/docs/Container/镜像管理.md" >}}) - [docker镜像管理]({{< relref "/docs/Container/docker镜像管理.md" >}}) - [登录到镜像仓库]({{< relref "/docs/Container/登录到镜像仓库.md" >}}) @@ -392,37 +451,54 @@ headless: true - [列出镜像]({{< relref "/docs/Container/列出镜像.md" >}}) - [检视镜像]({{< relref "/docs/Container/检视镜像.md" >}}) - [双向认证]({{< relref "/docs/Container/双向认证.md" >}}) + - [embedded镜像管理]({{< relref "/docs/Container/embedded镜像管理.md" >}}) - [加载镜像]({{< relref "/docs/Container/加载镜像-3.md" >}}) - [列出镜像]({{< relref "/docs/Container/列出镜像-4.md" >}}) - [检视镜像]({{< relref "/docs/Container/检视镜像-5.md" >}}) - [删除镜像]({{< relref "/docs/Container/删除镜像-6.md" >}}) + + - [容器健康状态检查]({{< relref "/docs/Container/容器健康状态检查.md" >}}) - [场景说明]({{< relref "/docs/Container/场景说明-7.md" >}}) - [配置方法]({{< relref "/docs/Container/配置方法.md" >}}) - [检查规则]({{< relref "/docs/Container/检查规则.md" >}}) - [使用限制]({{< relref "/docs/Container/使用限制-8.md" >}}) + - [查询信息]({{< relref "/docs/Container/查询信息.md" >}}) - [查询服务版本信息]({{< relref "/docs/Container/查询服务版本信息.md" >}}) - [查询系统级信息]({{< relref "/docs/Container/查询系统级信息.md" >}}) + - [安全特性]({{< relref "/docs/Container/安全特性.md" >}}) - [seccomp安全配置场景]({{< relref "/docs/Container/seccomp安全配置场景.md" >}}) - [场景说明]({{< relref "/docs/Container/场景说明-9.md" >}}) - [使用限制]({{< relref "/docs/Container/使用限制-10.md" >}}) - [使用指导]({{< relref "/docs/Container/使用指导-11.md" >}}) + - [capabilities安全配置场景]({{< relref "/docs/Container/capabilities安全配置场景.md" >}}) - [场景说明]({{< relref "/docs/Container/场景说明-12.md" >}}) - [使用限制]({{< relref "/docs/Container/使用限制-13.md" >}}) - [使用指导]({{< relref "/docs/Container/使用指导-14.md" >}}) + + - [SELinux安全配置场景]({{< relref "/docs/Container/SELinux安全配置场景.md" >}}) + - [场景说明]({{< relref "/docs/Container/场景说明-15.md" >}}) + - [使用限制]({{< relref "/docs/Container/使用限制-16.md" >}}) + - [使用指导]({{< relref "/docs/Container/使用指导-17.md" >}}) + + - [支持OCI hooks]({{< relref "/docs/Container/支持OCI-hooks.md" >}}) - - [描述]({{< relref "/docs/Container/描述-15.md" >}}) - - [接口]({{< relref "/docs/Container/接口-16.md" >}}) - - [使用限制]({{< relref "/docs/Container/使用限制-17.md" >}}) + - [描述]({{< relref "/docs/Container/描述-18.md" >}}) + - [接口]({{< relref "/docs/Container/接口-19.md" >}}) + - [使用限制]({{< relref "/docs/Container/使用限制-20.md" >}}) + + - [附录]({{< relref "/docs/Container/附录.md" >}}) - [命令行参数说明]({{< relref "/docs/Container/命令行参数说明.md" >}}) - [CNI配置参数]({{< relref "/docs/Container/CNI配置参数.md" >}}) + + - [系统容器]({{< relref "/docs/Container/系统容器.md" >}}) - - [概述]({{< relref "/docs/Container/概述-18.md" >}}) + - [概述]({{< relref "/docs/Container/概述-21.md" >}}) - [安装指导]({{< relref "/docs/Container/安装指导.md" >}}) - [使用指南]({{< relref "/docs/Container/使用指南.md" >}}) - [简介]({{< relref "/docs/Container/简介.md" >}}) @@ -439,40 +515,53 @@ headless: true - [user namespace多对多]({{< relref "/docs/Container/user-namespace多对多.md" >}}) - [用户权限控制]({{< relref "/docs/Container/用户权限控制.md" >}}) - [proc文件系统隔离(lxcfs)]({{< relref "/docs/Container/proc文件系统隔离(lxcfs).md" >}}) - - [容器资源动态管理(isulad-tools)]({{< relref "/docs/Container/容器资源动态管理(isulad-tools).md" >}}) + + - [容器资源动态管理(syscontainer-tools)]({{< relref "/docs/Container/容器资源动态管理(syscontainer-tools).md" >}}) - [设备管理]({{< relref "/docs/Container/设备管理.md" >}}) - [网卡管理]({{< relref "/docs/Container/网卡管理.md" >}}) - [路由管理]({{< relref "/docs/Container/路由管理.md" >}}) - [挂卷管理]({{< relref "/docs/Container/挂卷管理.md" >}}) - - [附录]({{< relref "/docs/Container/附录-19.md" >}}) + + + - [附录]({{< relref "/docs/Container/附录-22.md" >}}) - [命令行接口列表]({{< relref "/docs/Container/命令行接口列表.md" >}}) + + - [安全容器]({{< relref "/docs/Container/安全容器.md" >}}) - - [概述]({{< relref "/docs/Container/概述-20.md" >}}) + - [概述]({{< relref "/docs/Container/概述-23.md" >}}) - [安装部署]({{< relref "/docs/Container/安装部署.md" >}}) - - [安装方法]({{< relref "/docs/Container/安装方法-21.md" >}}) - - [部署配置]({{< relref "/docs/Container/部署配置-22.md" >}}) + - [安装方法]({{< relref "/docs/Container/安装方法-24.md" >}}) + - [部署配置]({{< relref "/docs/Container/部署配置-25.md" >}}) - [docker-engine容器引擎的配置]({{< relref "/docs/Container/docker-engine容器引擎的配置.md" >}}) + - [iSula容器引擎的配置]({{< relref "/docs/Container/iSula容器引擎的配置.md" >}}) - [安全容器全局配置文件configuration.toml]({{< relref "/docs/Container/安全容器全局配置文件configuration-toml.md" >}}) - - [使用方法]({{< relref "/docs/Container/使用方法-23.md" >}}) + + + - [使用方法]({{< relref "/docs/Container/使用方法-26.md" >}}) - [管理安全容器的生命周期]({{< relref "/docs/Container/管理安全容器的生命周期.md" >}}) - [启动安全容器]({{< relref "/docs/Container/启动安全容器.md" >}}) - [停止安全容器]({{< relref "/docs/Container/停止安全容器.md" >}}) - [删除安全容器]({{< relref "/docs/Container/删除安全容器.md" >}}) - [在容器中执行一条新的命令]({{< relref "/docs/Container/在容器中执行一条新的命令.md" >}}) + - [为安全容器配置资源]({{< relref "/docs/Container/为安全容器配置资源.md" >}}) - - [资源的共享]({{< relref "/docs/Container/资源的共享-24.md" >}}) + - [资源的共享]({{< relref "/docs/Container/资源的共享-27.md" >}}) - [限制CPU资源]({{< relref "/docs/Container/限制CPU资源.md" >}}) - [限制内存资源]({{< relref "/docs/Container/限制内存资源.md" >}}) - [限制Blkio资源]({{< relref "/docs/Container/限制Blkio资源.md" >}}) - [限制文件描述符资源]({{< relref "/docs/Container/限制文件描述符资源.md" >}}) + - [为安全容器配置网络]({{< relref "/docs/Container/为安全容器配置网络.md" >}}) - [监控安全容器]({{< relref "/docs/Container/监控安全容器.md" >}}) - - [附录]({{< relref "/docs/Container/附录-25.md" >}}) + + - [附录]({{< relref "/docs/Container/附录-28.md" >}}) - [configuration.toml配置说明]({{< relref "/docs/Container/configuration-toml配置说明.md" >}}) - [接口列表]({{< relref "/docs/Container/接口列表.md" >}}) + + - [Docker容器]({{< relref "/docs/Container/Docker容器.md" >}}) - - [概述]({{< relref "/docs/Container/概述-26.md" >}}) - - [安装部署]({{< relref "/docs/Container/安装部署-27.md" >}}) + - [概述]({{< relref "/docs/Container/概述-29.md" >}}) + - [安装部署]({{< relref "/docs/Container/安装部署-30.md" >}}) - [安装配置介绍及注意事项]({{< relref "/docs/Container/安装配置介绍及注意事项.md" >}}) - [基本安装配置]({{< relref "/docs/Container/基本安装配置.md" >}}) - [配置daemon参数]({{< relref "/docs/Container/配置daemon参数.md" >}}) @@ -487,35 +576,42 @@ headless: true - [安全配置seccomp]({{< relref "/docs/Container/安全配置seccomp.md" >}}) - [禁止修改docker daemon的私有目录]({{< relref "/docs/Container/禁止修改docker-daemon的私有目录.md" >}}) - [普通用户大量部署容器场景下的配置注意事项]({{< relref "/docs/Container/普通用户大量部署容器场景下的配置注意事项.md" >}}) + - [存储驱动配置]({{< relref "/docs/Container/存储驱动配置.md" >}}) - [配置overlay2存储驱动]({{< relref "/docs/Container/配置overlay2存储驱动.md" >}}) - - [配置devicemapper存储驱动]({{< relref "/docs/Container/配置devicemapper存储驱动.md" >}}) + - [配置devicemapper存储驱动]({{< relref "/docs/Container/配置devicemapper存储驱动-31.md" >}}) + - [强杀docker相关后台进程的影响]({{< relref "/docs/Container/强杀docker相关后台进程的影响.md" >}}) - [信号量残留]({{< relref "/docs/Container/信号量残留.md" >}}) - [网卡残留]({{< relref "/docs/Container/网卡残留.md" >}}) - [重启容器失败]({{< relref "/docs/Container/重启容器失败.md" >}}) - [服务无法正常重启]({{< relref "/docs/Container/服务无法正常重启.md" >}}) + - [系统掉电影响]({{< relref "/docs/Container/系统掉电影响.md" >}}) - - [容器管理]({{< relref "/docs/Container/容器管理-28.md" >}}) - - [创建容器]({{< relref "/docs/Container/创建容器-29.md" >}}) + + + - [容器管理]({{< relref "/docs/Container/容器管理-32.md" >}}) + - [创建容器]({{< relref "/docs/Container/创建容器-33.md" >}}) - [创建容器使用hook-spec]({{< relref "/docs/Container/创建容器使用hook-spec.md" >}}) - [创建容器配置健康检查]({{< relref "/docs/Container/创建容器配置健康检查.md" >}}) - [停止与删除容器]({{< relref "/docs/Container/停止与删除容器.md" >}}) - [容器信息查询]({{< relref "/docs/Container/容器信息查询.md" >}}) - [修改操作]({{< relref "/docs/Container/修改操作.md" >}}) - - [镜像管理]({{< relref "/docs/Container/镜像管理-30.md" >}}) + + - [镜像管理]({{< relref "/docs/Container/镜像管理-34.md" >}}) - [创建镜像]({{< relref "/docs/Container/创建镜像.md" >}}) - [查看镜像]({{< relref "/docs/Container/查看镜像.md" >}}) - - [删除镜像]({{< relref "/docs/Container/删除镜像-31.md" >}}) + - [删除镜像]({{< relref "/docs/Container/删除镜像-35.md" >}}) + - [命令行参考]({{< relref "/docs/Container/命令行参考.md" >}}) - [容器引擎]({{< relref "/docs/Container/容器引擎.md" >}}) - - [容器管理]({{< relref "/docs/Container/容器管理-32.md" >}}) - - [attach]({{< relref "/docs/Container/attach-1.md" >}}) + - [容器管理]({{< relref "/docs/Container/容器管理-36.md" >}}) + - [attach]({{< relref "/docs/Container/attach.md" >}}) - [commit]({{< relref "/docs/Container/commit.md" >}}) - [cp]({{< relref "/docs/Container/cp.md" >}}) - [create]({{< relref "/docs/Container/create.md" >}}) - [diff]({{< relref "/docs/Container/diff.md" >}}) - - [exec]({{< relref "/docs/Container/exec-1.md" >}}) + - [exec]({{< relref "/docs/Container/exec.md" >}}) - [export]({{< relref "/docs/Container/export.md" >}}) - [inspect]({{< relref "/docs/Container/inspect.md" >}}) - [logs]({{< relref "/docs/Container/logs.md" >}}) @@ -532,7 +628,8 @@ headless: true - [top]({{< relref "/docs/Container/top.md" >}}) - [update]({{< relref "/docs/Container/update.md" >}}) - [wait]({{< relref "/docs/Container/wait.md" >}}) - - [镜像管理]({{< relref "/docs/Container/镜像管理-33.md" >}}) + + - [镜像管理]({{< relref "/docs/Container/镜像管理-37.md" >}}) - [build]({{< relref "/docs/Container/build.md" >}}) - [history]({{< relref "/docs/Container/history.md" >}}) - [images]({{< relref "/docs/Container/images.md" >}}) @@ -546,7 +643,68 @@ headless: true - [save]({{< relref "/docs/Container/save.md" >}}) - [search]({{< relref "/docs/Container/search.md" >}}) - [tag]({{< relref "/docs/Container/tag.md" >}}) + - [统计信息]({{< relref "/docs/Container/统计信息.md" >}}) - [events]({{< relref "/docs/Container/events.md" >}}) - [info]({{< relref "/docs/Container/info.md" >}}) - [version]({{< relref "/docs/Container/version.md" >}}) + +- [A-Tune用户指南]({{< relref "/docs/A-Tune/{{< relref "/docs/A-Tune/A-Tune.md" >}}) + - [法律申明]({{< relref "/docs/A-Tune/{{< relref "/docs/A-Tune/法律申明.md" >}}) + - [前言]({{< relref "/docs/A-Tune/前言.md" >}}) + - [认识A-Tune]({{< relref "/docs/A-Tune/认识A-Tune.md" >}}) + - [简介]({{< relref "/docs/A-Tune/简介.md" >}}) + - [架构]({{< relref "/docs/A-Tune/架构.md" >}}) + - [支持特性与业务模型]({{< relref "/docs/A-Tune/支持特性与业务模型.md" >}}) + + - [安装与部署]({{< relref "/docs/A-Tune/安装与部署.md" >}}) + - [软硬件要求]({{< relref "/docs/A-Tune/软硬件要求.md" >}}) + - [环境准备]({{< relref "/docs/A-Tune/环境准备.md" >}}) + - [安装A-Tune]({{< relref "/docs/A-Tune/安装A-Tune.md" >}}) + - [安装模式介绍]({{< relref "/docs/A-Tune/安装模式介绍.md" >}}) + - [安装操作]({{< relref "/docs/A-Tune/安装操作.md" >}}) + + - [部署A-Tune]({{< relref "/docs/A-Tune/部署A-Tune.md" >}}) + - [配置介绍]({{< relref "/docs/A-Tune/配置介绍.md" >}}) + + - [启动A-Tune]({{< relref "/docs/A-Tune/启动A-Tune.md" >}}) + + - [使用方法]({{< relref "/docs/A-Tune/使用方法.md" >}}) + - [总体说明]({{< relref "/docs/A-Tune/总体说明.md" >}}) + - [查询负载类型]({{< relref "/docs/A-Tune/查询负载类型.md" >}}) + - [list]({{< relref "/docs/A-Tune/list.md" >}}) + + - [分析负载类型并自优化]({{< relref "/docs/A-Tune/分析负载类型并自优化.md" >}}) + - [analysis]({{< relref "/docs/A-Tune/analysis.md" >}}) + + - [自定义模型]({{< relref "/docs/A-Tune/自定义模型.md" >}}) + - [define]({{< relref "/docs/A-Tune/define.md" >}}) + - [collection]({{< relref "/docs/A-Tune/collection.md" >}}) + - [train]({{< relref "/docs/A-Tune/train.md" >}}) + - [undefine]({{< relref "/docs/A-Tune/undefine.md" >}}) + + - [查询profile]({{< relref "/docs/A-Tune/查询profile.md" >}}) + - [info]({{< relref "/docs/A-Tune/info.md" >}}) + + - [更新profile]({{< relref "/docs/A-Tune/更新profile.md" >}}) + - [update]({{< relref "/docs/A-Tune/update.md" >}}) + + - [激活profile]({{< relref "/docs/A-Tune/激活profile.md" >}}) + - [profile]({{< relref "/docs/A-Tune/profile.md" >}}) + + - [回滚profile]({{< relref "/docs/A-Tune/回滚profile.md" >}}) + - [rollback]({{< relref "/docs/A-Tune/rollback.md" >}}) + + - [更新数据库]({{< relref "/docs/A-Tune/更新数据库.md" >}}) + - [upgrade]({{< relref "/docs/A-Tune/upgrade.md" >}}) + + - [系统信息查询]({{< relref "/docs/A-Tune/系统信息查询.md" >}}) + - [check]({{< relref "/docs/A-Tune/check.md" >}}) + + - [参数自调优]({{< relref "/docs/A-Tune/参数自调优.md" >}}) + - [tuning]({{< relref "/docs/A-Tune/tuning.md" >}}) + + + - [常见问题与解决方法]({{< relref "/docs/A-Tune/常见问题与解决方法.md" >}}) + - [附录]({{< relref "/docs/A-Tune/附录.md" >}}) + - [术语和缩略语]({{< relref "/docs/A-Tune/术语和缩略语.md" >}})

命令

+ - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -88,7 +88,7 @@ @@ -149,7 +149,7 @@ diff --git "a/content/zh/docs/Container/\345\221\275\344\273\244\350\241\214\345\217\202\350\200\203.md" "b/content/zh/docs/Container/\345\221\275\344\273\244\350\241\214\345\217\202\350\200\203.md" index 96dc60cf79d299a13bf1cbe65a088fd0cded65b9..75509a1e60736e7b7cbbf447c97eefd782e43702 100644 --- "a/content/zh/docs/Container/\345\221\275\344\273\244\350\241\214\345\217\202\350\200\203.md" +++ "b/content/zh/docs/Container/\345\221\275\344\273\244\350\241\214\345\217\202\350\200\203.md" @@ -1,3 +1,2 @@ # 命令行参考 - diff --git "a/content/zh/docs/Container/\345\234\250\345\256\271\345\231\250\344\270\255\346\211\247\350\241\214\346\226\260\345\221\275\344\273\244.md" "b/content/zh/docs/Container/\345\234\250\345\256\271\345\231\250\344\270\255\346\211\247\350\241\214\346\226\260\345\221\275\344\273\244.md" index e8044999c0bccb0c9906a88a05c363eeecd13175..7ecf717dca32f5c0a6e6a58d81828014d07abc05 100644 --- "a/content/zh/docs/Container/\345\234\250\345\256\271\345\231\250\344\270\255\346\211\247\350\241\214\346\226\260\345\221\275\344\273\244.md" +++ "b/content/zh/docs/Container/\345\234\250\345\256\271\345\231\250\344\270\255\346\211\247\350\241\214\346\226\260\345\221\275\344\273\244.md" @@ -25,7 +25,7 @@ exec命令支持参数参考下表。 diff --git "a/content/zh/docs/Container/\345\234\272\346\231\257\350\257\264\346\230\216-15.md" "b/content/zh/docs/Container/\345\234\272\346\231\257\350\257\264\346\230\216-15.md" new file mode 100644 index 0000000000000000000000000000000000000000..d613053ceca2a27acd517b63bb311986a32374ed --- /dev/null +++ "b/content/zh/docs/Container/\345\234\272\346\231\257\350\257\264\346\230\216-15.md" @@ -0,0 +1,4 @@ +# 场景说明 + +SELinux\(Security-Enhanced Linux\)是一个linux内核的安全模块,提供了访问控制安全策略机制,iSulad将采用MCS(多级分类安全)实现对容器内进程打上标签限制容器访问资源的方式,减少提权攻击的风险,防止造成更为重要的危害。 + diff --git "a/content/zh/docs/Container/\345\237\272\346\234\254\345\256\211\350\243\205\351\205\215\347\275\256.md" "b/content/zh/docs/Container/\345\237\272\346\234\254\345\256\211\350\243\205\351\205\215\347\275\256.md" index f0365863a210202a250945caa14d3531710c79a1..6893c5938dd1af38c4604399de6a29aaa794686f 100644 --- "a/content/zh/docs/Container/\345\237\272\346\234\254\345\256\211\350\243\205\351\205\215\347\275\256.md" +++ "b/content/zh/docs/Container/\345\237\272\346\234\254\345\256\211\350\243\205\351\205\215\347\275\256.md" @@ -1,27 +1 @@ # 基本安装配置 - -- **[配置daemon参数](配置daemon参数.md)** - -- **[daemon运行目录配置](daemon运行目录配置.md)** - -- **[daemon自带网络配置](daemon自带网络配置.md)** - -- **[daemon umask配置](daemon-umask配置.md)** - -- **[daemon启动时间](daemon启动时间.md)** - -- **[关联组件journald](关联组件journald.md)** - -- **[关联组件firewalld](关联组件firewalld.md)** - -- **[关联组件iptables](关联组件iptables.md)** - -- **[关联组件audit](关联组件audit.md)** - -- **[安全配置seccomp](安全配置seccomp.md)** - -- **[禁止修改docker daemon的私有目录](禁止修改docker-daemon的私有目录.md)** - -- **[普通用户大量部署容器场景下的配置注意事项](普通用户大量部署容器场景下的配置注意事项.md)** - - diff --git "a/content/zh/docs/Container/\345\255\230\345\202\250\351\251\261\345\212\250\351\205\215\347\275\256.md" "b/content/zh/docs/Container/\345\255\230\345\202\250\351\251\261\345\212\250\351\205\215\347\275\256.md" index b07130bfa1225ba7a62cccbc69048a84d2e31930..b911dc090f1e94cc544e344169f72a5a2ba54a42 100644 --- "a/content/zh/docs/Container/\345\255\230\345\202\250\351\251\261\345\212\250\351\205\215\347\275\256.md" +++ "b/content/zh/docs/Container/\345\255\230\345\202\250\351\251\261\345\212\250\351\205\215\347\275\256.md" @@ -1,5 +1,3 @@ # 存储驱动配置 -本发行版docker支持overlay2和devicemapper两种存储驱动。由于overlay2较devicemapper而言,拥有更好的性能,建议用户在生成环境中优先考虑。 - - +本发行版docker支持overlay2和devicemapper两种存储驱动。由于overlay2较devicemapper而言,拥有更好的性能,建议用户在生产环境中优先考虑。 diff --git "a/content/zh/docs/Container/\345\256\211\345\205\250\347\211\271\346\200\247.md" "b/content/zh/docs/Container/\345\256\211\345\205\250\347\211\271\346\200\247.md" index f78bf2355ed7d318e6cf5ee3d257b5a4125c0bd2..928b182dc658cdf98279e0af3b63e8c6465b0fb8 100644 --- "a/content/zh/docs/Container/\345\256\211\345\205\250\347\211\271\346\200\247.md" +++ "b/content/zh/docs/Container/\345\256\211\345\205\250\347\211\271\346\200\247.md" @@ -1,4 +1,2 @@ # 安全特性 - - diff --git "a/content/zh/docs/Container/\345\256\211\350\243\205\344\270\216\351\203\250\347\275\262.md" "b/content/zh/docs/Container/\345\256\211\350\243\205\344\270\216\351\203\250\347\275\262.md" index ae9b8fa4a8a9763dccf5cff84bc376aa398978a4..76da5673949fda66cf99b49df0c2a3912a368fd4 100644 --- "a/content/zh/docs/Container/\345\256\211\350\243\205\344\270\216\351\203\250\347\275\262.md" +++ "b/content/zh/docs/Container/\345\256\211\350\243\205\344\270\216\351\203\250\347\275\262.md" @@ -1,3 +1,4 @@ # 安装与部署 + diff --git "a/content/zh/docs/Container/\345\256\211\350\243\205\346\226\271\346\263\225-21.md" "b/content/zh/docs/Container/\345\256\211\350\243\205\346\226\271\346\263\225-24.md" similarity index 84% rename from "content/zh/docs/Container/\345\256\211\350\243\205\346\226\271\346\263\225-21.md" rename to "content/zh/docs/Container/\345\256\211\350\243\205\346\226\271\346\263\225-24.md" index 88cfb7ab29eddf133dc0e4f12d77d5d5d4fd99d8..6855a55d68e4f3c8e6c8449a5f0161cf8bc4514a 100644 --- "a/content/zh/docs/Container/\345\256\211\350\243\205\346\226\271\346\263\225-21.md" +++ "b/content/zh/docs/Container/\345\256\211\350\243\205\346\226\271\346\263\225-24.md" @@ -1,18 +1,18 @@ -# 安装方法 - -## 前提条件 - -- 为了获取更好的性能体验,安全容器需要运行在裸金属服务器上,**暂不支持安全容器运行在虚拟机内**。 -- 安全容器运行依赖以下组件,请确保环境上已安装所需版本的依赖组件。以下组件来自配套的openEuler 1.0版本。 - - docker-engine - - qemu - - -## 安装操作 - -安全容器发布组件集成在同一个kata-containers-<_version_\>.rpm包中,使用rpm命令可以直接安装对应的软件,其中version为。 - -``` -rpm -ivh kata-containers-.rpm -``` - +# 安装方法 + +## 前提条件 + +- 为了获取更好的性能体验,安全容器需要运行在裸金属服务器上,**暂不支持安全容器运行在虚拟机内**。 +- 安全容器运行依赖以下组件,请确保环境上已安装所需版本的依赖组件。以下组件来自配套的openEuler版本。如果使用iSula容器引擎,请参考iSula容器引擎的[安装方法](安装方法.md)章节安装iSulad。 + - docker-engine + - qemu + + +## 安装操作 + +安全容器发布组件集成在同一个kata-containers-<_version_\>.rpm包中,使用rpm命令可以直接安装对应的软件,其中version为。 + +``` +rpm -ivh kata-containers-.rpm +``` + diff --git "a/content/zh/docs/Container/\345\256\211\350\243\205\351\203\250\347\275\262-27.md" "b/content/zh/docs/Container/\345\256\211\350\243\205\351\203\250\347\275\262-30.md" similarity index 98% rename from "content/zh/docs/Container/\345\256\211\350\243\205\351\203\250\347\275\262-27.md" rename to "content/zh/docs/Container/\345\256\211\350\243\205\351\203\250\347\275\262-30.md" index 1bb9f1252917cf2b75856058998dc63354ee153a..2e108aca984d214d60e11fd476118273fc168353 100644 --- "a/content/zh/docs/Container/\345\256\211\350\243\205\351\203\250\347\275\262-27.md" +++ "b/content/zh/docs/Container/\345\256\211\350\243\205\351\203\250\347\275\262-30.md" @@ -1 +1,2 @@ # 安装部署 + diff --git "a/content/zh/docs/Container/\345\256\211\350\243\205\351\203\250\347\275\262.md" "b/content/zh/docs/Container/\345\256\211\350\243\205\351\203\250\347\275\262.md" index d7b88d43d6fbd4351b72f4fdb9ffb14bbdcea7f9..8d85d4eaa2ff63568d99fdf2572bd6e109a70949 100644 --- "a/content/zh/docs/Container/\345\256\211\350\243\205\351\203\250\347\275\262.md" +++ "b/content/zh/docs/Container/\345\256\211\350\243\205\351\203\250\347\275\262.md" @@ -1,3 +1 @@ # 安装部署 - - diff --git "a/content/zh/docs/Container/\345\256\271\345\231\250\344\270\216\344\270\273\346\234\272\344\271\213\351\227\264\346\225\260\346\215\256\346\213\267\350\264\235.md" "b/content/zh/docs/Container/\345\256\271\345\231\250\344\270\216\344\270\273\346\234\272\344\271\213\351\227\264\346\225\260\346\215\256\346\213\267\350\264\235.md" index 8b93adc8bb2ba8d037aaf686db2133d9ea4505cc..2bb4d941bcb07c034dcc11f5d7c6a50d35ba71c4 100644 --- "a/content/zh/docs/Container/\345\256\271\345\231\250\344\270\216\344\270\273\346\234\272\344\271\213\351\227\264\346\225\260\346\215\256\346\213\267\350\264\235.md" +++ "b/content/zh/docs/Container/\345\256\271\345\231\250\344\270\216\344\270\273\346\234\272\344\271\213\351\227\264\346\225\260\346\215\256\346\213\267\350\264\235.md" @@ -2,7 +2,7 @@ ## 描述 -isula cp 用于容器与主机之间的数据拷贝。 +isula cp 用于容器与主机之间的数据拷贝,仅支持runtime类型为lcr的容器。 ## 用法 diff --git "a/content/zh/docs/Container/\345\256\271\345\231\250\345\201\245\345\272\267\347\212\266\346\200\201\346\243\200\346\237\245.md" "b/content/zh/docs/Container/\345\256\271\345\231\250\345\201\245\345\272\267\347\212\266\346\200\201\346\243\200\346\237\245.md" index acdae4429973a0d2a908cf1095fc037d80857d8d..c2d49b0f6a7e4fb0d68eacdd8a2726f293dfbb81 100644 --- "a/content/zh/docs/Container/\345\256\271\345\231\250\345\201\245\345\272\267\347\212\266\346\200\201\346\243\200\346\237\245.md" +++ "b/content/zh/docs/Container/\345\256\271\345\231\250\345\201\245\345\272\267\347\212\266\346\200\201\346\243\200\346\237\245.md" @@ -1,3 +1,2 @@ # 容器健康状态检查 - diff --git "a/content/zh/docs/Container/\345\256\271\345\231\250\345\206\205reboot-shutdown.md" "b/content/zh/docs/Container/\345\256\271\345\231\250\345\206\205reboot-shutdown.md" index bbd5ee02e4585c413fc15e0849fb6ae4d2a4e499..5305112f124ead846c6acc2ba98b48899941b15b 100644 --- "a/content/zh/docs/Container/\345\256\271\345\231\250\345\206\205reboot-shutdown.md" +++ "b/content/zh/docs/Container/\345\256\271\345\231\250\345\206\205reboot-shutdown.md" @@ -20,7 +20,7 @@ diff --git "a/content/zh/docs/Container/\345\256\271\345\231\250\345\274\225\346\223\216.md" "b/content/zh/docs/Container/\345\256\271\345\231\250\345\274\225\346\223\216.md" index 704d17fd7b9778c4e85e624eecdd8a18c381e568..709b8dbb1dc573f36a9b20fd7e71498bd831f4a2 100644 --- "a/content/zh/docs/Container/\345\256\271\345\231\250\345\274\225\346\223\216.md" +++ "b/content/zh/docs/Container/\345\256\271\345\231\250\345\274\225\346\223\216.md" @@ -2,6 +2,8 @@ Docker daemon是一个常驻后台的系统进程,docker 子命令执行前先要启动docker daemon。 +   + 如果是通过rpm包或者系统包管理工具安装的,就可以使用systemctl start docker来启动docker daemon。 docker命令支持多个参数选项,对于参数选项有以下约定: @@ -9,26 +11,26 @@ docker命令支持多个参数选项,对于参数选项有以下约定: 1. 单个字符的选项可以合并在一起,如: ``` - docker run -t -i ubuntu:14.04 /bin/bash + docker run -t -i busybox /bin/sh ``` 可以写成 ``` - docker run -ti ubuntu:14.04 /bin/bash + docker run -ti busybox /bin/sh ``` 2. 在命令帮助中看到的如--icc=true之类的bool命令选项,如果没有使用这个选项,则这个标志位的值就是在命令帮助中看到的默认值,如果使用了这个选项则这个标志位的值就是命令帮助中看的值的相反值,如果启动docker daemon没有加上使用--icc选项,则默认设置了--icc=true,如果使用了--icc选项则表示是--icc=false。 3. 在命令帮助中看到的--attach=\[\]之类的选项,表示这类的选项可以多次设置,如: ``` - docker run --attach=stdin --attach=stdout -i -t ubuntu:14.04 /bin/bash + docker run --attach=stdin --attach=stdout -i -t busybox /bin/sh ``` 4. 在命令帮助中看到的-a, --attach=\[\]之类的选项,表示这种选项既可以用-a value指定也可以用--attach=value指定。如: ``` - docker run -a stdin --attach=stdout -i -t ubuntu:14.04 /bin/bash + docker run -a stdin --attach=stdout -i -t busybox /bin/sh ``` 5. --name=””之类的选项需要的是一个字符串,只能指定一次,-c=0之类的选项需要的是一个整数,只能指定一次。 @@ -44,8 +46,7 @@ docker命令支持多个参数选项,对于参数选项有以下约定: - - diff --git "a/content/zh/docs/Container/\346\237\245\347\234\213\345\256\271\345\231\250\344\270\255\350\277\233\347\250\213\344\277\241\346\201\257.md" "b/content/zh/docs/Container/\346\237\245\347\234\213\345\256\271\345\231\250\344\270\255\350\277\233\347\250\213\344\277\241\346\201\257.md" index 448a7c49cf54ef170eb8b50b519e70ff2cc919e8..e314b0a8319ac209a57d1e29b057c1e8b2ebfaa3 100644 --- "a/content/zh/docs/Container/\346\237\245\347\234\213\345\256\271\345\231\250\344\270\255\350\277\233\347\250\213\344\277\241\346\201\257.md" +++ "b/content/zh/docs/Container/\346\237\245\347\234\213\345\256\271\345\231\250\344\270\255\350\277\233\347\250\213\344\277\241\346\201\257.md" @@ -2,7 +2,7 @@ ## 描述 -isula top用于查看容器中的进程信息。 +isula top用于查看容器中的进程信息。仅支持runtime类型为lcr的容器。 ## 用法 @@ -25,7 +25,7 @@ top命令支持参数参考下表。 diff --git "a/content/zh/docs/Container/\346\237\245\347\234\213\345\256\271\345\231\250\344\275\277\347\224\250\347\232\204\350\265\204\346\272\220.md" "b/content/zh/docs/Container/\346\237\245\347\234\213\345\256\271\345\231\250\344\275\277\347\224\250\347\232\204\350\265\204\346\272\220.md" index b2f334ee5d9a16823c881ddfee04aa2a0ecbb1eb..92a0d53be5476256ca6ace92a44897171a977506 100644 --- "a/content/zh/docs/Container/\346\237\245\347\234\213\345\256\271\345\231\250\344\275\277\347\224\250\347\232\204\350\265\204\346\272\220.md" +++ "b/content/zh/docs/Container/\346\237\245\347\234\213\345\256\271\345\231\250\344\275\277\347\224\250\347\232\204\350\265\204\346\272\220.md" @@ -2,7 +2,7 @@ ## 描述 -isula stats用于实时显示资源使用的统计信息。 +isula stats用于实时显示资源使用的统计信息。仅支持runtime类型为lcr的容器。 ## 用法 @@ -25,8 +25,8 @@ stats命令支持参数参考下表。 diff --git "a/content/zh/docs/Container/\346\237\245\350\257\242\344\277\241\346\201\257.md" "b/content/zh/docs/Container/\346\237\245\350\257\242\344\277\241\346\201\257.md" index db4a48dbe44ef2810fe3a991ae8e6388b68d1fc6..0fc9ede75d33d3240c195f27754322fd697e6cad 100644 --- "a/content/zh/docs/Container/\346\237\245\350\257\242\344\277\241\346\201\257.md" +++ "b/content/zh/docs/Container/\346\237\245\350\257\242\344\277\241\346\201\257.md" @@ -1,3 +1,2 @@ # 查询信息 - diff --git "a/content/zh/docs/Container/\346\237\245\350\257\242\345\215\225\344\270\252\345\256\271\345\231\250\344\277\241\346\201\257.md" "b/content/zh/docs/Container/\346\237\245\350\257\242\345\215\225\344\270\252\345\256\271\345\231\250\344\277\241\346\201\257.md" index adfff00e7e795adec2d5f087073182624a0c684d..6fbef625630a8e9e99a8c0bdacd1007ed9120ba0 100644 --- "a/content/zh/docs/Container/\346\237\245\350\257\242\345\215\225\344\270\252\345\256\271\345\231\250\344\277\241\346\201\257.md" +++ "b/content/zh/docs/Container/\346\237\245\350\257\242\345\215\225\344\270\252\345\256\271\345\231\250\344\277\241\346\201\257.md" @@ -25,7 +25,7 @@ inspect命令支持参数参考下表。 diff --git "a/content/zh/docs/Container/\346\237\245\350\257\242\346\211\200\346\234\211\345\256\271\345\231\250\344\277\241\346\201\257.md" "b/content/zh/docs/Container/\346\237\245\350\257\242\346\211\200\346\234\211\345\256\271\345\231\250\344\277\241\346\201\257.md" index bc2e55d98a15636ab0541e66cc40d5470c657a3b..2c27b99bc5bd31ddf5bc1c41a3c4341b871d3899 100644 --- "a/content/zh/docs/Container/\346\237\245\350\257\242\346\211\200\346\234\211\345\256\271\345\231\250\344\277\241\346\201\257.md" +++ "b/content/zh/docs/Container/\346\237\245\350\257\242\346\211\200\346\234\211\345\256\271\345\231\250\344\277\241\346\201\257.md" @@ -25,10 +25,10 @@ ps命令支持参数参考下表。 diff --git "a/content/zh/docs/Container/\346\246\202\350\277\260-18.md" "b/content/zh/docs/Container/\346\246\202\350\277\260-21.md" similarity index 99% rename from "content/zh/docs/Container/\346\246\202\350\277\260-18.md" rename to "content/zh/docs/Container/\346\246\202\350\277\260-21.md" index 06faf343aac0ed9a0bcecaa83ee212c1a1bae167..ea35a7f7105b31208cccdd18482357ee1de3909a 100644 --- "a/content/zh/docs/Container/\346\246\202\350\277\260-18.md" +++ "b/content/zh/docs/Container/\346\246\202\350\277\260-21.md" @@ -1,4 +1,4 @@ -# 概述 - -系统容器主要应对在重计算、高性能、大并发的场景下,重型应用和业务云化的问题。相比较虚拟机技术,系统容器可直接继承物理机特性,同时具备性能更优良,较少overhead的优点。从系统资源分配来看,系统容器在有限资源上相比虚拟机可分配更多计算单元,降低成本,通过系统容器可以构建产品的差异化竞争力,提供计算密度更高,价格更便宜,性能更优良的的计算单元实例。 - +# 概述 + +系统容器主要应对在重计算、高性能、大并发的场景下,重型应用和业务云化的问题。相比较虚拟机技术,系统容器可直接继承物理机特性,同时具备性能更优良,较少overhead的优点。从系统资源分配来看,系统容器在有限资源上相比虚拟机可分配更多计算单元,降低成本,通过系统容器可以构建产品的差异化竞争力,提供计算密度更高,价格更便宜,性能更优良的的计算单元实例。 + diff --git "a/content/zh/docs/Container/\346\246\202\350\277\260-20.md" "b/content/zh/docs/Container/\346\246\202\350\277\260-23.md" similarity index 98% rename from "content/zh/docs/Container/\346\246\202\350\277\260-20.md" rename to "content/zh/docs/Container/\346\246\202\350\277\260-23.md" index 254b8cd05a2f92515efd62d1bff9f26f04cc5fdf..951853729547d971e7d37f2077a374777ab152b5 100644 --- "a/content/zh/docs/Container/\346\246\202\350\277\260-20.md" +++ "b/content/zh/docs/Container/\346\246\202\350\277\260-23.md" @@ -1,26 +1,26 @@ -# 概述 - -安全容器是虚拟化技术和容器技术的有机结合,相比普通linux容器,安全容器具有更好的隔离性。 - -普通linux容器利用namespace进行进程间运行环境的隔离,并使用cgroup进行资源限制;因此普通linux容器本质上还是共用同一个内核,单个容器有意或无意影响到内核都会影响到整台宿主机上的容器。 - -安全容器是使用虚拟化层进行容器间的隔离,同一个主机上不同的容器间运行互相不受影响。 - -**图 1** 安全容器架构 - - -![](figures/kata-arch.png) - -安全容器与Kubernetes中的Pod概念紧密联系,Kubernetes为容器调度管理平台的开源生态标准,它定义了一组容器操作相关接口(Container Runtime Interface 简称CRI)。 - -在CRI标准中,Pod为完成一组服务需要的一组容器集合,是编排调度的最小单元,通常共享IPC和网络namespace;一个Pod必然包含一个占位容器(pause容器)以及一个或多个业务容器,其中pause容器与的生命周期相同。 - -其中安全容器中的一个轻量级虚拟机对应为一个Pod,在此虚拟机中启动的第一个容器为pause容器,以后依次启动的容器为业务容器。 - -安全容器同时提供启动单个容器与启动Pod的功能。 - -安全容器与周边组件的关系如[图2](#fig17734185518269)所示。 - -**图 2** 安全容器与周边组件的关系 -![](figures/安全容器与周边组件的关系.png "安全容器与周边组件的关系") - +# 概述 + +安全容器是虚拟化技术和容器技术的有机结合,相比普通linux容器,安全容器具有更好的隔离性。 + +普通linux容器利用namespace进行进程间运行环境的隔离,并使用cgroup进行资源限制;因此普通linux容器本质上还是共用同一个内核,单个容器有意或无意影响到内核都会影响到整台宿主机上的容器。 + +安全容器是使用虚拟化层进行容器间的隔离,同一个主机上不同的容器间运行互相不受影响。 + +**图 1** 安全容器架构 + + +![](figures/kata-arch.png) + +安全容器与Kubernetes中的Pod概念紧密联系,Kubernetes为容器调度管理平台的开源生态标准,它定义了一组容器操作相关接口(Container Runtime Interface 简称CRI)。 + +在CRI标准中,Pod为完成一组服务需要的一组容器集合,是编排调度的最小单元,通常共享IPC和网络namespace;一个Pod必然包含一个占位容器(pause容器)以及一个或多个业务容器,其中pause容器与的生命周期相同。 + +其中安全容器中的一个轻量级虚拟机对应为一个Pod,在此虚拟机中启动的第一个容器为pause容器,以后依次启动的容器为业务容器。 + +安全容器同时提供启动单个容器与启动Pod的功能。 + +安全容器与周边组件的关系如[图2](#fig17734185518269)所示。 + +**图 2** 安全容器与周边组件的关系 +![](figures/安全容器与周边组件的关系.png "安全容器与周边组件的关系") + diff --git "a/content/zh/docs/Container/\346\246\202\350\277\260-26.md" "b/content/zh/docs/Container/\346\246\202\350\277\260-29.md" similarity index 62% rename from "content/zh/docs/Container/\346\246\202\350\277\260-26.md" rename to "content/zh/docs/Container/\346\246\202\350\277\260-29.md" index 882bdee9b99d6b50017c3d939fbbbd28b5ca1765..9044f0b7f0ecb1d2c57d120b420384135c88ac2b 100644 --- "a/content/zh/docs/Container/\346\246\202\350\277\260-26.md" +++ "b/content/zh/docs/Container/\346\246\202\350\277\260-29.md" @@ -1,4 +1,4 @@ -# 概述 - -Docker是一个开源的Linux容器引擎项目, 用以实现应用的快速打包、部署和交付。docker的英文本意是码头工人,码头工人的工作就是将商品打包到container\(集装箱\)并且搬运container、装载container。 对应到Linux中,docker就是将app打包到container,通过container实现App在各种平台上的部署、运行。docker通过Linux Container技术将app变成一个标准化的、可移植的、自管理的组件,从而实现应用的“一次构建,到处运行”。docker技术特点就是:应用快速发布、部署简单、管理方便,应用密度更高。 - +# 概述 + +Docker是一个开源的Linux容器引擎项目, 用以实现应用的快速打包、部署和交付。Docker的英文本意是码头工人,码头工人的工作就是将商品打包到container\(集装箱\)并且搬运container、装载container。 对应到Linux中,Docker就是将app打包到container,通过container实现app在各种平台上的部署、运行。Docker通过Linux Container技术将app变成一个标准化的、可移植的、自管理的组件,从而实现应用的“一次构建,到处运行”。Docker技术特点就是:应用快速发布、部署简单、管理方便,应用密度更高。 + diff --git "a/content/zh/docs/Container/\346\263\225\345\276\213\345\243\260\346\230\216.md" "b/content/zh/docs/Container/\346\263\225\345\276\213\345\243\260\346\230\216.md" index 6ebb0e5226c8f8430df29f6070b92968d4fb6db7..62308e77fb636ad1e46576a4874679793a47b1e3 100644 --- "a/content/zh/docs/Container/\346\263\225\345\276\213\345\243\260\346\230\216.md" +++ "b/content/zh/docs/Container/\346\263\225\345\276\213\345\243\260\346\230\216.md" @@ -4,10 +4,14 @@ 您对“本文档”的复制、使用、修改及分发受知识共享\(Creative Commons\)署名—相同方式共享4.0国际公共许可协议\(以下简称“CC BY-SA 4.0”\)的约束。为了方便用户理解,您可以通过访问[https://creativecommons.org/licenses/by-sa/4.0/](https://creativecommons.org/licenses/by-sa/4.0/) 了解CC BY-SA 4.0的概要 \(但不是替代\)。CC BY-SA 4.0的完整协议内容您可以访问如下网址获取:[https://creativecommons.org/licenses/by-sa/4.0/legalcode](https://creativecommons.org/licenses/by-sa/4.0/legalcode)。 +   + **商标声明** openEuler为华为技术有限公司的商标。本文档提及的其他所有商标或注册商标,由各自的所有人拥有。 +   + **免责声明** 本文档仅作为使用指导,除非适用法强制规定或者双方有明确书面约定, 华为技术有限公司对本文档中的所有陈述、信息和建议不做任何明示或默示的声明或保证,包括但不限于不侵权,时效性或满足特定目的的担保。 diff --git "a/content/zh/docs/Container/\347\211\271\346\235\203\345\256\271\345\231\250.md" "b/content/zh/docs/Container/\347\211\271\346\235\203\345\256\271\345\231\250.md" index 080264cebf492854f3f0d0986304c3c9d1167dd4..daa8df99207eae022a571dcad0dbd3e5106ed2b4 100644 --- "a/content/zh/docs/Container/\347\211\271\346\235\203\345\256\271\345\231\250.md" +++ "b/content/zh/docs/Container/\347\211\271\346\235\203\345\256\271\345\231\250.md" @@ -1,3 +1 @@ # 特权容器 - - diff --git "a/content/zh/docs/Container/\347\255\211\345\276\205\345\256\271\345\231\250\351\200\200\345\207\272.md" "b/content/zh/docs/Container/\347\255\211\345\276\205\345\256\271\345\231\250\351\200\200\345\207\272.md" index dc1a7576b2298c03fcf3aafa370288ebc10d3aa8..cd8996ce4e7b03049507f34d9f823f43a85c7828 100644 --- "a/content/zh/docs/Container/\347\255\211\345\276\205\345\256\271\345\231\250\351\200\200\345\207\272.md" +++ "b/content/zh/docs/Container/\347\255\211\345\276\205\345\256\271\345\231\250\351\200\200\345\207\272.md" @@ -2,7 +2,7 @@ ## 描述 -isula wait用于等待一个或者多个容器退出。 +isula wait用于等待一个或者多个容器退出。仅支持runtime类型为lcr的容器。 ## 用法 diff --git "a/content/zh/docs/Container/\347\256\241\347\220\206\345\256\211\345\205\250\345\256\271\345\231\250\347\232\204\347\224\237\345\221\275\345\221\250\346\234\237.md" "b/content/zh/docs/Container/\347\256\241\347\220\206\345\256\211\345\205\250\345\256\271\345\231\250\347\232\204\347\224\237\345\221\275\345\221\250\346\234\237.md" index 09fb0a9c458b1ae8532ac287248587c51ac7edb7..47ecc885a2500bb07e1cc7879dba16c6408cfaaa 100644 --- "a/content/zh/docs/Container/\347\256\241\347\220\206\345\256\211\345\205\250\345\256\271\345\231\250\347\232\204\347\224\237\345\221\275\345\221\250\346\234\237.md" +++ "b/content/zh/docs/Container/\347\256\241\347\220\206\345\256\211\345\205\250\345\256\271\345\231\250\347\232\204\347\224\237\345\221\275\345\221\250\346\234\237.md" @@ -1,4 +1,2 @@ # 管理安全容器的生命周期 - - diff --git "a/content/zh/docs/Container/\347\263\273\347\273\237\345\256\271\345\231\250.md" "b/content/zh/docs/Container/\347\263\273\347\273\237\345\256\271\345\231\250.md" index c09ab6578d58942486f671b9f743f45a794f8888..7d26863612ec6fafbcafb817890f31e491989384 100644 --- "a/content/zh/docs/Container/\347\263\273\347\273\237\345\256\271\345\231\250.md" +++ "b/content/zh/docs/Container/\347\263\273\347\273\237\345\256\271\345\231\250.md" @@ -1,3 +1 @@ # 系统容器 - - diff --git "a/content/zh/docs/Container/\347\272\246\346\235\237\351\231\220\345\210\266.md" "b/content/zh/docs/Container/\347\272\246\346\235\237\351\231\220\345\210\266.md" index 34a05a1c3ab84852758863bcfb1207663f2d0577..81b9ba85263f6c859c6e63619d72456af170f100 100644 --- "a/content/zh/docs/Container/\347\272\246\346\235\237\351\231\220\345\210\266.md" +++ "b/content/zh/docs/Container/\347\272\246\346\235\237\351\231\220\345\210\266.md" @@ -43,4 +43,5 @@ - 启动一个isulad容器,不能够以非root用户进行isula run -i/-t/-ti以及isula attach/exec操作。 +- iSulad对接OCI容器时,仅支持kata-runtime启动OCI容器。 diff --git "a/content/zh/docs/Container/\347\273\237\350\256\241\344\277\241\346\201\257.md" "b/content/zh/docs/Container/\347\273\237\350\256\241\344\277\241\346\201\257.md" index 2965a92e13900f7ef14f891ed994a975ff79486c..d6e96f1e495b4a2651e248d924daf347f02194db 100644 --- "a/content/zh/docs/Container/\347\273\237\350\256\241\344\277\241\346\201\257.md" +++ "b/content/zh/docs/Container/\347\273\237\350\256\241\344\277\241\346\201\257.md" @@ -1 +1,2 @@ # 统计信息 + diff --git "a/content/zh/docs/Container/\350\216\267\345\217\226\345\256\271\345\231\250\346\227\245\345\277\227.md" "b/content/zh/docs/Container/\350\216\267\345\217\226\345\256\271\345\231\250\346\227\245\345\277\227.md" index c1bbebc88a119fe410d6eb5baa16b60fe13b8f29..f9bd0a54a57291e89f8543a358b6455618bd23c0 100644 --- "a/content/zh/docs/Container/\350\216\267\345\217\226\345\256\271\345\231\250\346\227\245\345\277\227.md" +++ "b/content/zh/docs/Container/\350\216\267\345\217\226\345\256\271\345\231\250\346\227\245\345\277\227.md" @@ -2,7 +2,7 @@ ## 描述 -isula logs用于获取容器的日志。 +isula logs用于获取容器的日志。仅支持runtime类型为lcr的容器。 ## 用法 @@ -25,7 +25,7 @@ logs命令支持参数参考下表。 diff --git "a/content/zh/docs/Container/\350\265\204\346\272\220\347\232\204\345\205\261\344\272\253-24.md" "b/content/zh/docs/Container/\350\265\204\346\272\220\347\232\204\345\205\261\344\272\253-27.md" similarity index 98% rename from "content/zh/docs/Container/\350\265\204\346\272\220\347\232\204\345\205\261\344\272\253-24.md" rename to "content/zh/docs/Container/\350\265\204\346\272\220\347\232\204\345\205\261\344\272\253-27.md" index 735e66a326072b1a7d8e08294d91c3af80a4fc7c..d692fe32beb66e43e6fd5fc6a3c0acd2126eca0b 100644 --- "a/content/zh/docs/Container/\350\265\204\346\272\220\347\232\204\345\205\261\344\272\253-24.md" +++ "b/content/zh/docs/Container/\350\265\204\346\272\220\347\232\204\345\205\261\344\272\253-27.md" @@ -1,6 +1,6 @@ -# 资源的共享 - -由于安全容器运行于虚拟化隔离的轻量虚拟机内,故无法访问Host上某些namespace下的资源,因此启动时不支持--net host,--ipc host,--pid host,--uts host。 - -当启动一个Pod时,同一个Pod中的所有容器默认共享同一个net namespace和ipc namespace。如果同一个Pod中的容器需要共享pid namespace,则可以通过Kubernetes进行配置,Kubernetes 1.11版本该值为默认关闭。 - +# 资源的共享 + +由于安全容器运行于虚拟化隔离的轻量虚拟机内,故无法访问Host上某些namespace下的资源,因此启动时不支持--net host,--ipc host,--pid host,--uts host。 + +当启动一个Pod时,同一个Pod中的所有容器默认共享同一个net namespace和ipc namespace。如果同一个Pod中的容器需要共享pid namespace,则可以通过Kubernetes进行配置,Kubernetes 1.11版本该值为默认关闭。 + diff --git "a/content/zh/docs/Container/\350\277\220\350\241\214\345\256\271\345\231\250.md" "b/content/zh/docs/Container/\350\277\220\350\241\214\345\256\271\345\231\250.md" index 8fdc92d96207ac924ba6547c2f62f901b3d3081b..b8b472150316df48cd1a3ccf081f0a95489ddd5a 100644 --- "a/content/zh/docs/Container/\350\277\220\350\241\214\345\256\271\345\231\250.md" +++ "b/content/zh/docs/Container/\350\277\220\350\241\214\345\256\271\345\231\250.md" @@ -24,7 +24,7 @@ run命令支持参数参考下表。 - @@ -74,6 +74,21 @@ run命令支持参数参考下表。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

命令

参数

+

参数

说明

+

说明

create

+

create

+

  

--cap-drop

+

--annotation

删除Linux 权限功能

+

设置容器的annotations。例如支持native.umask选项:

+
--annotation native.umask=normal # 启动的容器umask值为0022
+--annotation native.umask=secure # 启动的容器umask值为0027
+

注意如果没有配置该参数,则使用isulad中的umask配置。

+

--cap-drop

+

删除Linux 权限功能

--cgroup-parent

@@ -56,11 +65,31 @@ create命令支持参数参考下表。

为容器添加一个主机设备

--dns

+

添加DNS服务器

+

--dns-opt

+

添加DNS选项

+

--dns-search

+

设定容器的搜索域

+

-e, --env

设置环境变量

--env-file

+

通过文件配置环境变量

+

--entrypoint

启动容器时要运行的入口点

@@ -86,6 +115,36 @@ create命令支持参数参考下表。

打印帮助信息

--health-cmd

+

在容器内执行的命令

+

--health-exit-on-unhealthy

+

检测到容器非健康时是否杀死容器

+

--health-interval

+

相邻两次命令执行的间隔时间

+

--health-retries

+

健康检查失败最大的重试次数

+

--health-start-period

+

容器初始化时间

+

--health-timeout

+

单次检查命令执行的时间上限

+

--hook-spec

钩子配置文件

@@ -116,6 +175,16 @@ create命令支持参数参考下表。

日志驱动程序选项,默认禁用记录容器串口日志功能,可以通过"--log-opt disable-log=false"来开启。

-l,--label

+

为容器设置标签

+

--lablel-file

+

通过文件设置容器标签

+

-m, --memory

内存限制

@@ -131,11 +200,21 @@ create命令支持参数参考下表。

正整数,内存 + 交换空间,-1 表示不限制

--memory-swappiness

+

正整数,swappiness参数值可设置范围在0到100之间。 此参数值越低,就会让Linux系统尽量少用swap分区,多用内存;参数值越高就是反过来,使内核更多的去使用swap空间,默认值为-1,表示使用系统默认值。

+

--mount

挂载主机目录到容器中

--no-healthcheck

+

禁用健康检查配置

+

--name=NAME

容器名

diff --git "a/content/zh/docs/Container/\345\210\233\345\273\272\345\256\271\345\231\250\344\275\277\347\224\250hook-spec.md" "b/content/zh/docs/Container/\345\210\233\345\273\272\345\256\271\345\231\250\344\275\277\347\224\250hook-spec.md" index 7794002003e79f9c4bfc782c9742f7d404f60d73..0f6da50f858611a8950e3d05303b81330237379a 100644 --- "a/content/zh/docs/Container/\345\210\233\345\273\272\345\256\271\345\231\250\344\275\277\347\224\250hook-spec.md" +++ "b/content/zh/docs/Container/\345\210\233\345\273\272\345\256\271\345\231\250\344\275\277\347\224\250hook-spec.md" @@ -58,6 +58,8 @@ type Hooks struct{ 指定prestart hook增加一个网络hook的执行。路径是/var/lib/docker/hooks/network-hook,args代表程序的参数,第一个参数一般是程序名字,第二个是程序接受的参数。对于network-hook这个hook程序,需要两个参数,第一个是主机上的网卡名字,第二个是在容器内的网卡重命名。 +   + - 注意事项 1. hook path必须为docker的graph目录(--graph)下的hooks文件夹下,默认一般为 /var/lib/docker/hooks,可以通过docker info命令查看root路径。 diff --git "a/content/zh/docs/Container/\345\210\240\351\231\244\351\225\234\345\203\217-31.md" "b/content/zh/docs/Container/\345\210\240\351\231\244\351\225\234\345\203\217-35.md" similarity index 98% rename from "content/zh/docs/Container/\345\210\240\351\231\244\351\225\234\345\203\217-31.md" rename to "content/zh/docs/Container/\345\210\240\351\231\244\351\225\234\345\203\217-35.md" index 376200228e9e68e7652f7614774271dd8268058f..57bff1abe83c0373ef119b03b5119d07a2959955 100644 --- "a/content/zh/docs/Container/\345\210\240\351\231\244\351\225\234\345\203\217-31.md" +++ "b/content/zh/docs/Container/\345\210\240\351\231\244\351\225\234\345\203\217-35.md" @@ -1,6 +1,6 @@ -# 删除镜像 - -## 注意事项 - -禁止使用docker rmi –f XXX删除镜像。如果使用强制删除,docker rmi会忽略过程中的错误,可能导致容器或者镜像关元数据残留。如果使用普通删除,如果删除过程出错,则会删除失败,不会导致元数据残留。 - +# 删除镜像 + +## 注意事项 + +禁止使用docker rmi –f XXX删除镜像。如果使用强制删除,docker rmi会忽略过程中的错误,可能导致容器或者镜像关元数据残留。如果使用普通删除,如果删除过程出错,则会删除失败,不会导致元数据残留。 + diff --git "a/content/zh/docs/Container/\345\210\240\351\231\244\351\225\234\345\203\217-6.md" "b/content/zh/docs/Container/\345\210\240\351\231\244\351\225\234\345\203\217-6.md" index 4b7382332ba61a8d1feceeefe1d1fc80183b3153..bfbe5e08b521b91c2a6f52c10989939925509a2d 100644 --- "a/content/zh/docs/Container/\345\210\240\351\231\244\351\225\234\345\203\217-6.md" +++ "b/content/zh/docs/Container/\345\210\240\351\231\244\351\225\234\345\203\217-6.md" @@ -1,3 +1,4 @@ + # 删除镜像 ## 描述 diff --git "a/content/zh/docs/Container/\345\212\250\346\200\201\345\212\240\350\275\275\345\206\205\346\240\270\346\250\241\345\235\227.md" "b/content/zh/docs/Container/\345\212\250\346\200\201\345\212\240\350\275\275\345\206\205\346\240\270\346\250\241\345\235\227.md" index 260f9e125c07e1e2cf3793b2bc62b8af4ae7280f..281454362784109da32e5a114d9352b2c1e6a5fc 100644 --- "a/content/zh/docs/Container/\345\212\250\346\200\201\345\212\240\350\275\275\345\206\205\346\240\270\346\250\241\345\235\227.md" +++ "b/content/zh/docs/Container/\345\212\250\346\200\201\345\212\240\350\275\275\345\206\205\346\240\270\346\250\241\345\235\227.md" @@ -2,7 +2,7 @@ ## 功能描述 -容器内业务可能依赖某些内核模块,可通过设置环境变量的方式,在系统容器启动前动态加载容器中业务需要的内核模块到宿主机,此特性需要配合isulad-hooks一起使用,具体使用可参看[容器资源动态管理(isulad-tools)](容器资源动态管理(isulad-tools).md)章节。 +容器内业务可能依赖某些内核模块,可通过设置环境变量的方式,在系统容器启动前动态加载容器中业务需要的内核模块到宿主机,此特性需要配合isulad-hooks一起使用,具体使用可参看"容器资源动态管理(syscontainer-tools)"章节。 ## 参数说明 diff --git "a/content/zh/docs/Container/\345\215\207\347\272\247\346\226\271\346\263\225.md" "b/content/zh/docs/Container/\345\215\207\347\272\247\346\226\271\346\263\225.md" new file mode 100644 index 0000000000000000000000000000000000000000..d088e4aa64f3df20e6f83561ff5769e81c7115ab --- /dev/null +++ "b/content/zh/docs/Container/\345\215\207\347\272\247\346\226\271\346\263\225.md" @@ -0,0 +1,21 @@ +# 升级方法 + +- 若为相同大版本之间的升级,例如从2.x.x版本升级到2.x.x版本,请执行如下命令: + + ``` + $ sudo yum update -y iSulad + ``` + +- 若为不同大版本之间的升级,例如从1.x.x版本升级到2.x.x版本,请先保存当前的配置文件/etc/isulad/daemon.json,并卸载已安装的iSulad软件包,然后安装待升级的iSulad软件包,随后恢复配置文件。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>- 可通过** sudo rpm -qa |grep iSulad** 或 **isula version** 命令确认当前iSulad的版本号。 +>- 相同大版本之间,如果希望手动升级,请下载iSulad及其所有依赖库的RPM包进行升级,参考命令如下: +> ``` +> $ sudo rpm -Uhv iSulad-xx.xx.xx-YYYYmmdd.HHMMSS.gitxxxxxxxx.aarch64.rpm +> ``` +> 若升级失败,可通过--force选项进行强制升级,参考命令如下: +> ``` +> $ sudo rpm -Uhv --force iSulad-xx.xx.xx-YYYYmmdd.HHMMSS.gitxxxxxxxx.aarch64.rpm +> ``` + diff --git "a/content/zh/docs/Container/\345\217\214\345\220\221\350\256\244\350\257\201.md" "b/content/zh/docs/Container/\345\217\214\345\220\221\350\256\244\350\257\201.md" index 5a18f46661d0520d84fa24989656bf4404df7031..868cde1dee3200a74f986414552ff8f75d575503 100644 --- "a/content/zh/docs/Container/\345\217\214\345\220\221\350\256\244\350\257\201.md" +++ "b/content/zh/docs/Container/\345\217\214\345\220\221\350\256\244\350\257\201.md" @@ -86,8 +86,8 @@ $ systemctl restart isulad 执行pull命令从仓库下载镜像 ``` -$ isula pull my.csp-edge.com:5000/ubuntu -Image "my.csp-edge.com:5000/ubuntu" pulling -Image "my.csp-edge.com:5000/ubuntu@sha256:f1bdc62115dbfe8f54e52e19795ee34b4473babdeb9bc4f83045d85c7b2ad5c0" pulled +$ isula pull my.csp-edge.com:5000/busybox +Image "my.csp-edge.com:5000/busybox" pulling +Image "my.csp-edge.com:5000/busybox@sha256:f1bdc62115dbfe8f54e52e19795ee34b4473babdeb9bc4f83045d85c7b2ad5c0" pulled ``` diff --git "a/content/zh/docs/Container/\345\220\257\345\212\250\345\256\211\345\205\250\345\256\271\345\231\250.md" "b/content/zh/docs/Container/\345\220\257\345\212\250\345\256\211\345\205\250\345\256\271\345\231\250.md" index 4d18fb148b93430f9d56267652782ec0b6d70b1d..275692c25b7ad6278e3a9da5f7f7a9539ff6facd 100644 --- "a/content/zh/docs/Container/\345\220\257\345\212\250\345\256\211\345\205\250\345\256\271\345\231\250.md" +++ "b/content/zh/docs/Container/\345\220\257\345\212\250\345\256\211\345\205\250\345\256\271\345\231\250.md" @@ -1,38 +1,57 @@ # 启动安全容器 +用户可以使用docker-engine或者iSulad作为安全容器的容器引擎,两者的调用方式类似,请用户自行选择一种方式启动安全容器。 + +启动安全容器的操作步骤如下: + 1. 确保安全容器组件已经正确安装部署。 -2. 准备容器镜像。例如使用docker-engine下载容器镜像,此处假设容器镜像为busybox。 +2. 准备容器镜像。假设容器镜像为busybox,使用docker-engine和iSula容器引擎下载容器镜像的命令分别如下: ``` docker pull busybox ``` -3. 启动一个安全容器。 + ``` + isula pull busybox + ``` + +3. 启动一个安全容器。使用docker-engine和iSula容器引擎启动安全容器的命令分别如下: ``` docker run -tid --runtime kata-runtime --network none busybox - 此处获取container-id + ``` + + ``` + isula run -tid --runtime kata-runtime --network none busybox ``` >![](public_sys-resources/icon-note.gif) **说明:** >安全容器网络使用仅支持CNI网络,不支持CNM网络,不支持使用-p和--expose暴露容器端口,使用安全容器时需指定参数--net=none。 4. 启动一个Pod - - 启动pause容器。 + 1. 启动pause容器并根据回显获取pod的sandbox-id。使用docker-engine和iSula容器引擎启动的命令分别如下: ``` docker run -tid --runtime kata-runtime --network none --annotation io.kubernetes.docker.type=podsandbox ``` - 此处获取pod的sandbox-id。 + ``` + isula run -tid --runtime kata-runtime --network none --annotation io.kubernetes.cri.container-type=sandbox + ``` + +    - - 创建业务容器并加入到这个pod中。 + 1. 创建业务容器并加入到这个pod中。使用docker-engine和iSula容器引擎创建的命令分别如下: ``` docker run -tid --runtime kata-runtime --network none --annotation io.kubernetes.docker.type=container --annotation io.kubernetes.sandbox.id= busybox ``` - 这里利用--annotation来作为容器类型的标注,当前iSula提供配套的docker-engine带有该字段,开源docker引擎并不提供。 + ``` + isula run -tid --runtime kata-runtime --network none --annotation io.kubernetes.cri.container-type=container --annotation io.kubernetes.cri.sandbox-id= busybox + ``` + + --annotation用于容器类型的标注,这里的docker-engine和isula提供该字段,上游社区的开源docker引擎则不提供。 diff --git "a/content/zh/docs/Container/\345\221\275\344\273\244\350\241\214\345\217\202\346\225\260\350\257\264\346\230\216.md" "b/content/zh/docs/Container/\345\221\275\344\273\244\350\241\214\345\217\202\346\225\260\350\257\264\346\230\216.md" index 77f497ac8a19beb3f23d53086def4e5203902554..23b8bb2eda179e09fc956a6037baa824138497bd 100644 --- "a/content/zh/docs/Container/\345\221\275\344\273\244\350\241\214\345\217\202\346\225\260\350\257\264\346\230\216.md" +++ "b/content/zh/docs/Container/\345\221\275\344\273\244\350\241\214\345\217\202\346\225\260\350\257\264\346\230\216.md" @@ -11,8 +11,8 @@

login

-

-

+

  

+

  

-H, --host

rmi

-

+

  

-H, --host

images

-

+

  

-H, --host

exec

-

+

  

-d, --detach

--restart

  • 字符串变量。
  • 可取指定值:

    on-reboot:表示重启系统容器。

    -

    +

      

--api-cors-header

开放远程API调用的 CORS -头信息。这个接口开关对想进行二次开发的上层应用提供了支持。为remote API设置CORS头信息。

+

开放远程API调用的 CORS 头信息。这个接口开关对想进行二次开发的上层应用提供了支持。为remote API设置CORS头信息。

--authorization-plugin=[]

@@ -55,8 +56,7 @@ docker命令支持多个参数选项,对于参数选项有以下约定:

-b, --bridge=""

挂载已经存在的网桥设备到 Docker 容器里。注意,使用 none -可以停用容器里的网络。

+

挂载已经存在的网桥设备到 Docker 容器里。注意,使用 none 可以停用容器里的网络。

--bip=""

diff --git "a/content/zh/docs/Container/\345\256\271\345\231\250\347\256\241\347\220\206-28.md" "b/content/zh/docs/Container/\345\256\271\345\231\250\347\256\241\347\220\206-28.md" deleted file mode 100644 index 05e18f7fa2f7541d0f5aa56066cfeca2d545d70e..0000000000000000000000000000000000000000 --- "a/content/zh/docs/Container/\345\256\271\345\231\250\347\256\241\347\220\206-28.md" +++ /dev/null @@ -1 +0,0 @@ -# 容器管理 diff --git "a/content/zh/docs/Container/\345\256\271\345\231\250\347\256\241\347\220\206-32.md" "b/content/zh/docs/Container/\345\256\271\345\231\250\347\256\241\347\220\206-32.md" index b22b28f923255b379578ac1ccc8248d129278d62..d17c8fa2ad21c3184b3a77c0c2965a8d15680dcb 100644 --- "a/content/zh/docs/Container/\345\256\271\345\231\250\347\256\241\347\220\206-32.md" +++ "b/content/zh/docs/Container/\345\256\271\345\231\250\347\256\241\347\220\206-32.md" @@ -1,230 +1,2 @@ -# 容器管理 - -当前docker支持的子命令,按照功能划分为以下几组: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

功能划分

-

命令

-

命令功能

-

主机环境相关

-

version

-

查看docker版本信息

-

info

-

查看docker系统和主机环境信息

-

容器相关

-

容器生命周期管理

-

create

-

由image创建一个容器

-

run

-

由image创建一个容器并运行

-

start

-

开始一个已停止运行的容器

-

stop

-

停止一个运行中的容器

-

restart

-

重启一个容器

-

wait

-

等待一个容器停止,并打印出退出码

-

rm

-

删除一个容器

-

容器内进程管理

-

pause

-

暂停一个容器内的所有进程

-

unpause

-

恢复一个容器内被暂停的所用进程

-

top

-

查看容器内的进程

-

exec

-

在容器内执行进程

-

容器检视工具

-

ps

-

查看运行中的容器(不加任何选项)

-

logs

-

显示一个容器的日志信息

-

attach

-

连接到一个容器的标准输入输出

-

inspect

-

返回容器的底层信息

-

port

-

列出容器与主机的端口映射

-

diff

-

返回容器相对于镜像中的rootfs所作的改动

-

cp

-

容器与主机之间复制文件

-

export

-

将一个容器中的文件系统导出为一个tar包

-

stats

-

实时查看容器的资源占用情况

-

images相关

-

生成一个新image

-

build

-

通过一个Dockerfile构建一个image

-

commit

-

基于容器的rootfs创建一个新的image

-

import

-

将tar包中的内容作为文件系统创建一个image

-

load

-

从一个tar包中加载一个image

-

与image仓库有关

-

login

-

登录一个registry

-

logout

-

登出一个registry

-

pull

-

从registry中拉取一个image

-

push

-

将一个image推送到registry中

-

search

-

在registry中搜寻image

-

与image管理有关

-

images

-

显示系统中的image

-

history

-

显示一个image的变化历史

-

rmi

-

删除image

-

tag

-

给image打标签

-

save

-

将一个image保存到一个tar包中

-

其他

-

events

-

从docker daemon中获取实时事件

-

rename

-

重命名容器

-
- -其中有些子命令还有一些参数选项如docker run,通过docker COMMAND --help可以查看相应COMMAND命令的帮助,命令选项参考上文的命令选项约定。下面详细介绍每个命令的使用。 - - +# 容器管理 diff --git "a/content/zh/docs/Container/\345\256\271\345\231\250\347\256\241\347\220\206-36.md" "b/content/zh/docs/Container/\345\256\271\345\231\250\347\256\241\347\220\206-36.md" new file mode 100644 index 0000000000000000000000000000000000000000..e466652a93a6ebc7ff56aa67b8812f2aa8d6a378 --- /dev/null +++ "b/content/zh/docs/Container/\345\256\271\345\231\250\347\256\241\347\220\206-36.md" @@ -0,0 +1,231 @@ +# 容器管理 + +当前docker支持的子命令,按照功能划分为以下几组: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

功能划分

+

命令

+

命令功能

+

主机环境相关

+

version

+

查看docker版本信息

+

info

+

查看docker系统和主机环境信息

+

容器相关

+

容器生命周期管理

+

create

+

由image创建一个容器

+

run

+

由image创建一个容器并运行

+

start

+

开始一个已停止运行的容器

+

stop

+

停止一个运行中的容器

+

restart

+

重启一个容器

+

wait

+

等待一个容器停止,并打印出退出码

+

rm

+

删除一个容器

+

容器内进程管理

+

pause

+

暂停一个容器内的所有进程

+

unpause

+

恢复一个容器内被暂停的所用进程

+

top

+

查看容器内的进程

+

exec

+

在容器内执行进程

+

容器检视工具

+

ps

+

查看运行中的容器(不加任何选项)

+

logs

+

显示一个容器的日志信息

+

attach

+

连接到一个容器的标准输入输出

+

inspect

+

返回容器的底层信息

+

port

+

列出容器与主机的端口映射

+

diff

+

返回容器相对于镜像中的rootfs所作的改动

+

cp

+

容器与主机之间复制文件

+

export

+

将一个容器中的文件系统导出为一个tar包

+

stats

+

实时查看容器的资源占用情况

+

images相关

+

生成一个新image

+

build

+

通过一个Dockerfile构建一个image

+

commit

+

基于容器的rootfs创建一个新的image

+

import

+

将tar包中的内容作为文件系统创建一个image

+

load

+

从一个tar包中加载一个image

+

与image仓库有关

+

login

+

登录一个registry

+

logout

+

登出一个registry

+

pull

+

从registry中拉取一个image

+

push

+

将一个image推送到registry中

+

search

+

在registry中搜寻image

+

与image管理有关

+

images

+

显示系统中的image

+

history

+

显示一个image的变化历史

+

rmi

+

删除image

+

tag

+

给image打标签

+

save

+

将一个image保存到一个tar包中

+

其他

+

events

+

从docker daemon中获取实时事件

+

rename

+

重命名容器

+
+ +其中有些子命令还有一些参数选项如docker run,通过docker COMMAND --help可以查看相应COMMAND命令的帮助,命令选项参考上文的命令选项约定。下面详细介绍每个命令的使用。 + + + + diff --git "a/content/zh/docs/Container/\345\256\271\345\231\250\347\256\241\347\220\206.md" "b/content/zh/docs/Container/\345\256\271\345\231\250\347\256\241\347\220\206.md" index 61fd5204c6f01d2b23c6c8965f3dca264e96cff1..837392ffe59725c9ccb71574e220148f88edc424 100644 --- "a/content/zh/docs/Container/\345\256\271\345\231\250\347\256\241\347\220\206.md" +++ "b/content/zh/docs/Container/\345\256\271\345\231\250\347\256\241\347\220\206.md" @@ -1,4 +1,3 @@ # 容器管理 - diff --git "a/content/zh/docs/Container/\345\256\271\345\231\250\350\265\204\346\272\220\345\212\250\346\200\201\347\256\241\347\220\206\357\274\210iSulad-tools\357\274\211.md" "b/content/zh/docs/Container/\345\256\271\345\231\250\350\265\204\346\272\220\345\212\250\346\200\201\347\256\241\347\220\206\357\274\210iSulad-tools\357\274\211.md" deleted file mode 100644 index 24e0404174f2ce1be2f2eae57c5625d0ea34b287..0000000000000000000000000000000000000000 --- "a/content/zh/docs/Container/\345\256\271\345\231\250\350\265\204\346\272\220\345\212\250\346\200\201\347\256\241\347\220\206\357\274\210iSulad-tools\357\274\211.md" +++ /dev/null @@ -1,10 +0,0 @@ -# 容器资源动态管理(isulad-tools) - -普通容器无法支持对容器内的资源进行管理,例如添加一个块设备到容器、插入一块物理/虚拟网卡到容器。系统容器场景下,通过isulad-tools工具可以实现动态为容器挂载/卸载块设备,网络设备,路由和卷等资源。 - -要使用此功能,需要安装isulad-tools工具: - -``` -[root@localhost ~]# yum install isulad-tools -``` - diff --git "a/content/zh/docs/Container/\345\256\271\345\231\250\350\265\204\346\272\220\345\212\250\346\200\201\347\256\241\347\220\206\357\274\210syscontainer-tools\357\274\211.md" "b/content/zh/docs/Container/\345\256\271\345\231\250\350\265\204\346\272\220\345\212\250\346\200\201\347\256\241\347\220\206\357\274\210syscontainer-tools\357\274\211.md" new file mode 100644 index 0000000000000000000000000000000000000000..b2b2fc0fcea0e30af9a40ac5afaffc47593dbeba --- /dev/null +++ "b/content/zh/docs/Container/\345\256\271\345\231\250\350\265\204\346\272\220\345\212\250\346\200\201\347\256\241\347\220\206\357\274\210syscontainer-tools\357\274\211.md" @@ -0,0 +1,9 @@ +# 容器资源动态管理(syscontainer-tools) + +普通容器无法支持对容器内的资源进行管理,例如添加一个块设备到容器、插入一块物理/虚拟网卡到容器。系统容器场景下,通过syscontainer-tools工具可以实现动态为容器挂载/卸载块设备,网络设备,路由和卷等资源。 + +要使用此功能,需要安装syscontainer-tools工具: + +``` +[root@localhost ~]# yum install syscontainer-tools +``` diff --git "a/content/zh/docs/Container/\345\256\271\345\231\250\350\265\204\346\272\220\347\256\241\347\220\206.md" "b/content/zh/docs/Container/\345\256\271\345\231\250\350\265\204\346\272\220\347\256\241\347\220\206.md" index b4bc7a0872523b5070a4fa3a44c5dbd6d8f5777b..2414c7aed96ab4b77aa509e1ea868d01bf553527 100644 --- "a/content/zh/docs/Container/\345\256\271\345\231\250\350\265\204\346\272\220\347\256\241\347\220\206.md" +++ "b/content/zh/docs/Container/\345\256\271\345\231\250\350\265\204\346\272\220\347\256\241\347\220\206.md" @@ -1,4 +1 @@ # 容器资源管理 - - - diff --git "a/content/zh/docs/Container/\345\274\272\346\235\200docker\347\233\270\345\205\263\345\220\216\345\217\260\350\277\233\347\250\213\347\232\204\345\275\261\345\223\215.md" "b/content/zh/docs/Container/\345\274\272\346\235\200docker\347\233\270\345\205\263\345\220\216\345\217\260\350\277\233\347\250\213\347\232\204\345\275\261\345\223\215.md" index ef87461035e778a3a99f4dab154adddceca85150..93e4ca696714ce424525a69f3b3e56b25d077f5b 100644 --- "a/content/zh/docs/Container/\345\274\272\346\235\200docker\347\233\270\345\205\263\345\220\216\345\217\260\350\277\233\347\250\213\347\232\204\345\275\261\345\223\215.md" +++ "b/content/zh/docs/Container/\345\274\272\346\235\200docker\347\233\270\345\205\263\345\220\216\345\217\260\350\277\233\347\250\213\347\232\204\345\275\261\345\223\215.md" @@ -2,4 +2,3 @@ docker的调用链很长,强杀docker相关后台进程可能会导致一些数据状态不一致,本章节列举一些强杀可能导致的问题。 - diff --git "a/content/zh/docs/Container/\346\201\242\345\244\215\345\256\271\345\231\250.md" "b/content/zh/docs/Container/\346\201\242\345\244\215\345\256\271\345\231\250.md" new file mode 100644 index 0000000000000000000000000000000000000000..b6dc2c0282855cf633734785282e00463e5c92c7 --- /dev/null +++ "b/content/zh/docs/Container/\346\201\242\345\244\215\345\256\271\345\231\250.md" @@ -0,0 +1,45 @@ +# 恢复容器 + +## 描述 + +isula unpause用于恢复容器中所有的进程, 为isula pause的逆过程,仅支持runtime类型为lcr的容器。 + +## 用法 + +``` +isula unpause CONTAINER [CONTAINER...] +``` + +## 参数 + + + + + + + + + + + +

命令

+

参数

+

说明

+

pause

+

-H, --host

+

指定要连接的iSulad socket文件路径

+
+ +## 约束限制 + +- 只有状态为paused的容器可以被执行unpause操作 + +## 示例 + +恢复一个被暂停的容器,命令示例如下: + +``` +$ isula unpause 8fe25506fb5883b74c2457f453a960d1ae27a24ee45cdd78fb7426d2022a8bac + 8fe25506fb5883b74c2457f453a960d1ae27a24ee45cdd78fb7426d2022a8bac +``` + diff --git "a/content/zh/docs/Container/\346\214\202\345\215\267\347\256\241\347\220\206.md" "b/content/zh/docs/Container/\346\214\202\345\215\267\347\256\241\347\220\206.md" index d193e242c057060b2df8c66c3dd432e7c54083a0..8653e09103c324ee24ba22474a8422bcaca71691 100644 --- "a/content/zh/docs/Container/\346\214\202\345\215\267\347\256\241\347\220\206.md" +++ "b/content/zh/docs/Container/\346\214\202\345\215\267\347\256\241\347\220\206.md" @@ -22,7 +22,7 @@ ARG:命令对应的参数。 ## 接口说明 -**表 1** +**表 1**   

命令

diff --git "a/content/zh/docs/Container/\346\216\245\345\205\245\345\256\271\345\231\250.md" "b/content/zh/docs/Container/\346\216\245\345\205\245\345\256\271\345\231\250.md" index 68900b7df5a9c31a43c0a09e839f1b046ed1832c..30f264f1f45f63e13414516b2052450bd8ae7701 100644 --- "a/content/zh/docs/Container/\346\216\245\345\205\245\345\256\271\345\231\250.md" +++ "b/content/zh/docs/Container/\346\216\245\345\205\245\345\256\271\345\231\250.md" @@ -2,7 +2,7 @@ ## 描述 -isula attach命令用于将当前终端的标准输入、标准输出和标准错误连接到正在运行的容器。 +isula attach命令用于将当前终端的标准输入、标准输出和标准错误连接到正在运行的容器。仅支持runtime类型为lcr的容器。 ## 用法 diff --git "a/content/zh/docs/Container/\346\216\245\345\217\243-16.md" "b/content/zh/docs/Container/\346\216\245\345\217\243-19.md" similarity index 97% rename from "content/zh/docs/Container/\346\216\245\345\217\243-16.md" rename to "content/zh/docs/Container/\346\216\245\345\217\243-19.md" index af9890d0e1fad4b06dce6b4a7e88957cef967802..59e3adb4acb2ea4a6d166baefd4c3fd276aeabb8 100644 --- "a/content/zh/docs/Container/\346\216\245\345\217\243-16.md" +++ "b/content/zh/docs/Container/\346\216\245\345\217\243-19.md" @@ -1,16 +1,16 @@ -# 接口 - -isulad和isula都提供了hook的接口,isulad提供了默认的hook配置,会作用于所有容器;而isula提供的hook接口,只会作用于当前创建的容器。 - -isulad提供的默认OCI hooks配置: - -- 通过/etc/isulad/daemon.json配置文件的hook-spec配置项设置hook配置的文件路径:"hook-spec": "/etc/default/isulad/hooks/default.json"。 -- 通过isulad --hook-spec参数设置hook配置的文件路径。 - -isula提供的OCI hooks配置: - -- isula create --hook-spec:指定hook配置的json文件的路径。 -- isula run --hook-spec:指定hook配置的json文件的路径。 - -run的配置其实也是在create阶段生效了。 - +# 接口 + +isulad和isula都提供了hook的接口,isulad提供了默认的hook配置,会作用于所有容器;而isula提供的hook接口,只会作用于当前创建的容器。 + +isulad提供的默认OCI hooks配置: + +- 通过/etc/isulad/daemon.json配置文件的hook-spec配置项设置hook配置的文件路径:"hook-spec": "/etc/default/isulad/hooks/default.json"。 +- 通过isulad --hook-spec参数设置hook配置的文件路径。 + +isula提供的OCI hooks配置: + +- isula create --hook-spec:指定hook配置的json文件的路径。 +- isula run --hook-spec:指定hook配置的json文件的路径。 + +run的配置其实也是在create阶段生效了。 + diff --git "a/content/zh/docs/Container/\346\216\245\345\217\243-2.md" "b/content/zh/docs/Container/\346\216\245\345\217\243-2.md" index cd7ca09a2898f3e0d64067c49c538b0f38de47c9..528b6278f6963e76dcc716e8167f5ab0c69ab6fa 100644 --- "a/content/zh/docs/Container/\346\216\245\345\217\243-2.md" +++ "b/content/zh/docs/Container/\346\216\245\345\217\243-2.md" @@ -1651,8 +1651,4 @@
-- **[Runtime服务](Runtime服务.md)** - -- **[Image服务](Image服务.md)** - diff --git "a/content/zh/docs/Container/\346\216\245\345\217\243.md" "b/content/zh/docs/Container/\346\216\245\345\217\243.md" index 7d06c2b7636c2e7a07756ae848e4706abbc662d0..8a875b48496f3b55759dffa7ecdac06bbd545178 100644 --- "a/content/zh/docs/Container/\346\216\245\345\217\243.md" +++ "b/content/zh/docs/Container/\346\216\245\345\217\243.md" @@ -2,13 +2,14 @@ CNI对用户可见的接口,主要涉及CNI网络配置和Pod配置中CNI网络相关的项。 -- CNI网络配置相关的接口,主要是isulad指定CNI网络配置文件所在路径、CNI网络插件二进制文件所在的路径以及使用的网络模式;[表1 CNI网络配置接口](#zh-cn_topic_0183259146_table18221919589)。 +- CNI网络配置相关的接口,主要是isulad指定CNI网络配置文件所在路径、CNI网络插件二进制文件所在的路径以及使用的网络模式。详情请参见[表1 CNI网络配置接口](#zh-cn_topic_0183259146_table18221919589)。 - Pod配置中CNI网络相关的项,主要是设置Pod加入的附加CNI网络列表,默认情况Pod只会加入到default CNI网络平面中,可以通过该配置把Pod加入到多个CNI网络平面中。 **表 1** CNI网络配置接口 - +
  
diff --git "a/content/zh/docs/Container/\346\217\217\350\277\260-1.md" "b/content/zh/docs/Container/\346\217\217\350\277\260-1.md" index 2ee01501d869ed099cded9d40bb0d08e969d5463..d4046d5d487623f8a89f6d63cc24b49603a8ee53 100644 --- "a/content/zh/docs/Container/\346\217\217\350\277\260-1.md" +++ "b/content/zh/docs/Container/\346\217\217\350\277\260-1.md" @@ -11,5 +11,5 @@ CRI API 接口是由kubernetes 推出的容器运行时接口,CRI定义了容 ISulad使用的为pass使用的1.14版本API描述文件,与官方API略有出入,以本文档描述的接口为准。 >![](public_sys-resources/icon-note.gif) **说明:** ->CRI接口websocket流式服务,服务端监听地址为127.0.0.1,端口为10350,端口可通过命令行--websocket-server-listening-port参数接口或者daemon.json配置文件进行配置。 +>CRI接口websocket流式服务,服务端侦听地址为127.0.0.1,端口为10350,端口可通过命令行--websocket-server-listening-port参数接口或者daemon.json配置文件进行配置。 diff --git "a/content/zh/docs/Container/\346\217\217\350\277\260-15.md" "b/content/zh/docs/Container/\346\217\217\350\277\260-18.md" similarity index 97% rename from "content/zh/docs/Container/\346\217\217\350\277\260-15.md" rename to "content/zh/docs/Container/\346\217\217\350\277\260-18.md" index 47c0f12b8f82ab7ce7c4b26e865f6587b7d1e8bd..7031017c6efb87225e7d71ee2d722313cc476a92 100644 --- "a/content/zh/docs/Container/\346\217\217\350\277\260-15.md" +++ "b/content/zh/docs/Container/\346\217\217\350\277\260-18.md" @@ -1,47 +1,47 @@ -# 描述 - -支持在容器的生命周期中,运行OCI标准hooks。包括三种类型的hooks: - -- prestart hook:在执行isula start命令之后,而在容器的1号进程启动之前,被执行。 -- poststart hook:在容器1号进程启动之后,而在isula start命令返回之前,被执行。 -- poststop hook:在容器被停止之后,但是在停止命令返回之前,被执行。 - -OCI hooks的配置格式规范如下: - -- path:格式是字符串,必须项,必须为绝对路径,指定的文件必须有可执行权限。 -- args:格式是字符串数组,可选项,语义和execv的args一致。 -- env:格式是字符串数组,可选项,语义和环境变量一致,内容为键值对,如:"PATH=/usr/bin"。 -- timeout:格式是整数,可选项,必须大于0,表示钩子执行的超时时间。如果钩子进程运行时间超过配置的时间,那么钩子进程会被杀死。 - -hook的配置为json格式,一般存放在json结尾的文件中,示例如下: - -``` -{ - "prestart": [ - { - "path": "/usr/bin/echo", - "args": ["arg1", "arg2"], - "env": [ "key1=value1"], - "timeout": 30 - }, - { - "path": "/usr/bin/ls", - "args": ["/tmp"] - } - ], - "poststart": [ - { - "path": "/usr/bin/ls", - "args": ["/tmp"], - "timeout": 5 - } - ], - "poststop": [ - { - "path": "/tmp/cleanup.sh", - "args": ["cleanup.sh", "-f"] - } - ] -} -``` - +# 描述 + +支持在容器的生命周期中,运行OCI标准hooks。包括三种类型的hooks: + +- prestart hook:在执行isula start命令之后,而在容器的1号进程启动之前,被执行。 +- poststart hook:在容器1号进程启动之后,而在isula start命令返回之前,被执行。 +- poststop hook:在容器被停止之后,但是在停止命令返回之前,被执行。 + +OCI hooks的配置格式规范如下: + +- path:格式是字符串,必须项,必须为绝对路径,指定的文件必须有可执行权限。 +- args:格式是字符串数组,可选项,语义和execv的args一致。 +- env:格式是字符串数组,可选项,语义和环境变量一致,内容为键值对,如:"PATH=/usr/bin"。 +- timeout:格式是整数,可选项,必须大于0,表示钩子执行的超时时间。如果钩子进程运行时间超过配置的时间,那么钩子进程会被杀死。 + +hook的配置为json格式,一般存放在json结尾的文件中,示例如下: + +``` +{ + "prestart": [ + { + "path": "/usr/bin/echo", + "args": ["arg1", "arg2"], + "env": [ "key1=value1"], + "timeout": 30 + }, + { + "path": "/usr/bin/ls", + "args": ["/tmp"] + } + ], + "poststart": [ + { + "path": "/usr/bin/ls", + "args": ["/tmp"], + "timeout": 5 + } + ], + "poststop": [ + { + "path": "/tmp/cleanup.sh", + "args": ["cleanup.sh", "-f"] + } + ] +} +``` + diff --git "a/content/zh/docs/Container/\346\224\257\346\214\201CNI\347\275\221\347\273\234.md" "b/content/zh/docs/Container/\346\224\257\346\214\201CNI\347\275\221\347\273\234.md" index 4fb1645cf977ddcfad5992567e0e22057b4d83fa..a7fe955cda7a7d9019b84cd36fb2f986e6b31a7f 100644 --- "a/content/zh/docs/Container/\346\224\257\346\214\201CNI\347\275\221\347\273\234.md" +++ "b/content/zh/docs/Container/\346\224\257\346\214\201CNI\347\275\221\347\273\234.md" @@ -1,3 +1,2 @@ # 支持CNI网络 - diff --git "a/content/zh/docs/Container/\346\224\257\346\214\201OCI-hooks.md" "b/content/zh/docs/Container/\346\224\257\346\214\201OCI-hooks.md" index ce05939adfcfb92ab328ab9afad129458d68597e..a75f1789f7cfaf5552807c89b7a672442cfd330d 100644 --- "a/content/zh/docs/Container/\346\224\257\346\214\201OCI-hooks.md" +++ "b/content/zh/docs/Container/\346\224\257\346\214\201OCI-hooks.md" @@ -1,3 +1,2 @@ # 支持OCI hooks - diff --git "a/content/zh/docs/Container/\346\231\256\351\200\232\347\224\250\346\210\267\345\244\247\351\207\217\351\203\250\347\275\262\345\256\271\345\231\250\345\234\272\346\231\257\344\270\213\347\232\204\351\205\215\347\275\256\346\263\250\346\204\217\344\272\213\351\241\271.md" "b/content/zh/docs/Container/\346\231\256\351\200\232\347\224\250\346\210\267\345\244\247\351\207\217\351\203\250\347\275\262\345\256\271\345\231\250\345\234\272\346\231\257\344\270\213\347\232\204\351\205\215\347\275\256\346\263\250\346\204\217\344\272\213\351\241\271.md" index 7c57fbcc6c16cb44e3568eb8b34d08cb39055846..8629bd77465ff67947a172c18621739a733b0571 100644 --- "a/content/zh/docs/Container/\346\231\256\351\200\232\347\224\250\346\210\267\345\244\247\351\207\217\351\203\250\347\275\262\345\256\271\345\231\250\345\234\272\346\231\257\344\270\213\347\232\204\351\205\215\347\275\256\346\263\250\346\204\217\344\272\213\351\241\271.md" +++ "b/content/zh/docs/Container/\346\231\256\351\200\232\347\224\250\346\210\267\345\244\247\351\207\217\351\203\250\347\275\262\345\256\271\345\231\250\345\234\272\346\231\257\344\270\213\347\232\204\351\205\215\347\275\256\346\263\250\346\204\217\344\272\213\351\241\271.md" @@ -1,6 +1,6 @@ # 普通用户大量部署容器场景下的配置注意事项 -普通用户在OS主机上能创建的进程数的上限,例如可以由系统中“/etc/security/limits.d/20-nproc.conf”文件对应的值决定;普通用户在容器里能创建的进程数的上限,由容器镜像中“/etc/security/limits.d/20-nproc.conf”文件对应的值决定,如下所示: +普通用户在OS主机上能创建的进程数的上限,例如:可以在系统中创建配置文件“/etc/security/limits.d/20-nproc.conf”限制;类似的,普通用户在容器里也能创建的进程数的上限,由容器镜像中“/etc/security/limits.d/20-nproc.conf”文件对应的值决定,如下所示: ``` cat /etc/security/limits.conf diff --git "a/content/zh/docs/Container/\346\232\202\345\201\234\345\256\271\345\231\250.md" "b/content/zh/docs/Container/\346\232\202\345\201\234\345\256\271\345\231\250.md" new file mode 100644 index 0000000000000000000000000000000000000000..7f781d7c1ac6adae3755520b8491f386af3abe46 --- /dev/null +++ "b/content/zh/docs/Container/\346\232\202\345\201\234\345\256\271\345\231\250.md" @@ -0,0 +1,47 @@ +# 暂停容器 + +## 描述 + +isula pause用于暂停容器中所有的进程,仅支持runtime类型为lcr的容器。 + +## 用法 + +``` +isula pause CONTAINER [CONTAINER...] +``` + +## 参数 + + +

  

+

命令行

配置文件

@@ -64,4 +65,8 @@ CNI对用户可见的接口,主要涉及CNI网络配置和Pod配置中CNI网 } ``` +   + + + diff --git "a/content/zh/docs/Container/\346\216\245\345\217\243\345\210\227\350\241\250.md" "b/content/zh/docs/Container/\346\216\245\345\217\243\345\210\227\350\241\250.md" index ccd7e5435b1fe0e4eafa3ce21fa7255e568115e7..6573e17deeb9bc6290da8557973c9e4582a9be14 100644 --- "a/content/zh/docs/Container/\346\216\245\345\217\243\345\210\227\350\241\250.md" +++ "b/content/zh/docs/Container/\346\216\245\345\217\243\345\210\227\350\241\250.md" @@ -24,7 +24,7 @@

add-iface

说明:
  • 一个interface只能添加到1个容器中。
  • 执行结果以返回值为准(非零返回值)。
-

+

  

{

"device":"tap1",

@@ -34,7 +34,7 @@

"hwAddr":"02:42:20:6f:a2:80"

"vhostUserSocket":"/usr/local/var/run/openvswitch/vhost-user1"

}

-

+

  

device

+ + + + + + + + +

命令

+

参数

+

说明

+

pause

+

-H, --host

+

指定要连接的iSulad socket文件路径

+
+ +## 约束限制 + +- 只有状态为running的容器可以被执行pause操作 +- 当容器被pause后,无法执行其他生命周期管理操作(如restart/exec/attach/kill/stop/rm等) +- 当带有健康检查配置的容器被pause后,容器状态最终变为unhealthy状态 + +## 示例 + +暂停一个正在运行的容器,命令示例如下: + +``` +$ isula pause 8fe25506fb5883b74c2457f453a960d1ae27a24ee45cdd78fb7426d2022a8bac + 8fe25506fb5883b74c2457f453a960d1ae27a24ee45cdd78fb7426d2022a8bac +``` + diff --git "a/content/zh/docs/Container/\346\234\200\345\244\247\345\217\245\346\237\204\346\225\260\351\231\220\345\210\266.md" "b/content/zh/docs/Container/\346\234\200\345\244\247\345\217\245\346\237\204\346\225\260\351\231\220\345\210\266.md" index 6d630597669ea04542b5c4006794d5b6c20d61aa..cc4d73633339fd290d50094c2ea6ba264ef300c3 100644 --- "a/content/zh/docs/Container/\346\234\200\345\244\247\345\217\245\346\237\204\346\225\260\351\231\220\345\210\266.md" +++ "b/content/zh/docs/Container/\346\234\200\345\244\247\345\217\245\346\237\204\346\225\260\351\231\220\345\210\266.md" @@ -18,7 +18,7 @@

isula create/run

--files-limit

-

+

  

  • 整数值,不能为负数。
  • 指定为0表示不受限制,最大值限制由当前内核files cgroup决定。

top

-

+

  

-H, --host

stats

-

-

+

  

+

  

-H, --host

inspect

-

+

  

-H, --host

ps

-

-

-

-

+

  

+

  

+

  

+

  

-a, --all

logs

-

+

  

-H, --host

说明

run

+

run

--annotation

为容器添加一个主机设备

--dns

+

添加DNS服务器

+

--dns-opt

+

添加DNS选项

+

--dns-search

+

设定容器的搜索域

+

-e, --env

设置环境变量

@@ -109,6 +124,36 @@ run命令支持参数参考下表。

打印帮助信息

--health-cmd

+

在容器内执行的命令

+

--health-exit-on-unhealthy

+

检测到容器非健康时是否杀死容器

+

--health-interval

+

相邻两次命令执行的间隔时间

+

--health-retries

+

健康检查失败最大的重试次数

+

--health-start-period

+

容器初始化时间

+

--health-timeout

+

单次检查命令执行的时间上限

+

--hook-spec

钩子配置文件

@@ -154,11 +199,21 @@ run命令支持参数参考下表。

正整数,内存 + 交换空间,-1 表示不限制

--memory-swappiness

+

正整数,swappiness参数值可设置范围在0到100之间。 此参数值越低,就会让Linux系统尽量少用swap分区,多用内存;参数值越高就是反过来,使内核更多的去使用swap空间,默认值为-1,表示使用系统默认值。

+

--mount

挂载主机目录到容器中

--no-healthcheck

+

禁用健康检查配置

+

--name=NAME

容器名

diff --git "a/content/zh/docs/Container/\351\200\200\345\207\272CNI\347\275\221\347\273\234\345\210\227\350\241\250.md" "b/content/zh/docs/Container/\351\200\200\345\207\272CNI\347\275\221\347\273\234\345\210\227\350\241\250.md" index 23e7651d870ffe91d7efce5a4bbfc31d67010864..24bd3e54c5196022dc4cd5f95fcb651df89b2066 100644 --- "a/content/zh/docs/Container/\351\200\200\345\207\272CNI\347\275\221\347\273\234\345\210\227\350\241\250.md" +++ "b/content/zh/docs/Container/\351\200\200\345\207\272CNI\347\275\221\347\273\234\345\210\227\350\241\250.md" @@ -2,7 +2,7 @@ StopPodSandbox的时候,会调用退出CNI网络的接口,清理网络相关的资源。 ->![](public_sys-resources/icon-warning.gif) **警告:** +>![](public_sys-resources/icon-note.gif) **说明:** >1. 在调用RemovePodSandbox接口之前,至少要调用一次StopPodSandbox接口 ->2. StopPodSandbox调用CNI接口失败,导致的网络资源残留,由canal组件负责清理。 +>2. StopPodSandbox调用CNI接口失败,可能导致的网络资源残留。 diff --git "a/content/zh/docs/Container/\351\200\232\350\277\207systemd\345\220\257\345\212\250\345\256\271\345\231\250.md" "b/content/zh/docs/Container/\351\200\232\350\277\207systemd\345\220\257\345\212\250\345\256\271\345\231\250.md" index b9ee10390cc2fe0ef5b86285873b1d4b24ed19ca..43f33b3ca6b54c01b85ad7f0594e407fdeeeeb3f 100644 --- "a/content/zh/docs/Container/\351\200\232\350\277\207systemd\345\220\257\345\212\250\345\256\271\345\231\250.md" +++ "b/content/zh/docs/Container/\351\200\232\350\277\207systemd\345\220\257\345\212\250\345\256\271\345\231\250.md" @@ -33,6 +33,7 @@ - 系统容器内支持运行各类服务,服务的启停通过systemctl来管理,服务之间可能会出现相互依赖关系导致异常情况下某些服务进程出现D/Z状态,使得容器无法正常退出。 - 系统容器内的某些服务进程可能会影响其它操作结果,例如容器内若运行了NetworkManager服务,可能会影响向容器添加网卡的行为(网卡添加成功然后被NetworkManger停掉),导致不可预期的结果。 - 系统容器和主机暂时无法实现udev事件隔离,所以fstab配置也暂不支持。 +- systemd服务可能和libcgroup提供的cgconfig服务在功能上出现冲突,建议在容器内去掉libcgroup相关的包或者配置cgconfig服务的Delegate值为no。 ## 使用示例 diff --git "a/content/zh/docs/Container/\351\203\250\347\275\262\346\226\271\345\274\217.md" "b/content/zh/docs/Container/\351\203\250\347\275\262\346\226\271\345\274\217.md" index 1b57ba24f71fdf24eec4afd99418454ad0c8665f..6eae396342785547a34732322e5318cbce7be5e6 100644 --- "a/content/zh/docs/Container/\351\203\250\347\275\262\346\226\271\345\274\217.md" +++ "b/content/zh/docs/Container/\351\203\250\347\275\262\346\226\271\345\274\217.md" @@ -66,9 +66,9 @@ isulad配置文件为/etc/isulad/daemon.json,各配置字段说明如下: - - diff --git "a/content/zh/docs/SecHarden/\345\212\240\345\233\272\345\206\205\346\240\270\345\217\202\346\225\260.md" "b/content/zh/docs/SecHarden/\345\212\240\345\233\272\345\206\205\346\240\270\345\217\202\346\225\260.md" index f79030b5c5f19f963f8d15f9af10ae24f1a18868..a7e64a825c0cd83989ad45be3fa75624966784ae 100644 --- "a/content/zh/docs/SecHarden/\345\212\240\345\233\272\345\206\205\346\240\270\345\217\202\346\225\260.md" +++ "b/content/zh/docs/SecHarden/\345\212\240\345\233\272\345\206\205\346\240\270\345\217\202\346\225\260.md" @@ -191,7 +191,7 @@

配置参数

+ - @@ -76,63 +76,63 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + @@ -176,18 +202,18 @@ - - - - @@ -197,36 +223,36 @@ overlay2.basesize=${size} #等价于overlay2.size - - - - - - - - @@ -236,92 +262,92 @@ secure # 启动的容器umask值为0027(默认值) - - - - - - - - - - - - - - - - - - - - - - - - @@ -351,9 +377,9 @@

注意:如果启了一个容器A,然后启一个容器B,容器B的cgroup父路径指定为容器A的cgroup路径,在删除容器的时候需要先删除容器B再删除容器A,否则会导致cgroup资源残留。

- - - - - - - + + + + +

配置参数

配置文件示例

+

配置文件示例

参数解释

-e, --engine

+

-e, --engine

"engine": "lcr"

+

"engine": "lcr"

iSulad的运行时,默认是lcr

-G, --group

+

-G, --group

"group": "isulad"

+

"group": "isulad"

socket所属组

--hook-spec

+

--hook-spec

"hook-spec": "/etc/default/isulad/hooks/default.json"

+

"hook-spec": "/etc/default/isulad/hooks/default.json"

针对所有容器的默认钩子配置文件

-H, --host

+

-H, --host

"hosts": "unix:///var/run/isulad.sock"

+

"hosts": "unix:///var/run/isulad.sock"

通信方式

除本地socket外,还支持tcp://ip:port方式,port范围(0-65535,排除被占用端口)

--log-driver

+

--log-driver

"log-driver": "file"

+

"log-driver": "file"

日志驱动配置

-l, --log-level

+

-l, --log-level

"log-level": "ERROR"

+

"log-level": "ERROR"

设置日志输出级别

--log-opt

+

--log-opt

"log-opts": {

+

"log-opts": {

"log-file-mode": "0600",

"log-path": "/var/lib/isulad",

"max-file": "1",

@@ -144,18 +144,44 @@

可以指定max-file,max-size,log-path。max-file指日志文件个数;max-size指日志触发防爆的阈值,若max-file为1,max-size失效;log-path指定日志文件存储路径;log-file-mode用于设置日志文件的读写权限,格式要求必须为八进制格式,如0666。

--start-timeout

+

--start-timeout

"start-timeout": "2m"

+

"start-timeout": "2m"

启动容器的耗时

-p, --pidfile

+

--runtime

"pidfile": "/var/run/isulad.pid"

+

"default-runtime": "lcr"

+

创建容器时的runtime运行时,默认是lcr

+

当命令行和配置文件均未指定时,默认为lcr,runtime的三种指定方式优先级:命令行>配置文件>默认lcr,当前支持lcr、kata-runtime。

+

+
"runtimes":  {
+        "kata-runtime": {
+          "path": "/usr/bin/kata-runtime",
+          "runtime-args": [
+            "--kata-config",
+            "/usr/share/defaults/kata-containers/configuration.toml"
+          ]
+        }
+    }
+

启动容器时,通过此字段指定多runtimes配置,在此集合中的元素均为有效的启动容器的runtime运行时。

+

容器的runtime白名单,在此集合中的自定义runtime才是有效的。示例为以kata-runtime为例的配置。

+

-p, --pidfile

+

"pidfile": "/var/run/isulad.pid"

保存pid的文件

执行文件的根目录

--storage-driver

+

--storage-driver

"storage-driver": "overlay2"

+

"storage-driver": "overlay2"

镜像存储驱动,默认为overlay2

当前只支持overlay2

-s, --storage-opt

+

-s, --storage-opt

"storage-opts": [ "overlay2.override_kernel_check=true" ]

+

"storage-opts": [ "overlay2.override_kernel_check=true" ]

镜像存储驱动配置选项

--image-opt-timeout

+

--image-opt-timeout

"image-opt-timeout": "5m"

+

"image-opt-timeout": "5m"

镜像操作超时时间,默认为5m

值为-1表示不限制超时。

--registry-mirrors

+

--registry-mirrors

"registry-mirrors": [ "docker.io" ]

+

"registry-mirrors": [ "docker.io" ]

镜像仓库地址

--insecure-registry

+

--insecure-registry

"insecure-registries": [ ]

+

"insecure-registries": [ ]

不使用TLS校验的镜像仓库

--native.umask

+

--native.umask

"native.umask": "secure"

+

"native.umask": "secure"

容器umask策略,默认"secure",normal为不安全配置

--pod-sandbox-image

+

--pod-sandbox-image

"pod-sandbox-image": "rnd-dockerhub.huawei.com/library/pause-aarch64:3.0"

+

"pod-sandbox-image": "rnd-dockerhub.huawei.com/library/pause-aarch64:3.0"

pod默认使用镜像,默认为"rnd-dockerhub.huawei.com/library/pause-${machine}:3.0"

--network-plugin

+

--network-plugin

"network-plugin": ""

+

"network-plugin": ""

指定网络插件,默认为空字符,表示无网络配置,创建的sandbox只有loop网卡。

支持cni和空字符,其他非法值会导致isulad启动失败。

--cni-bin-dir

+

--cni-bin-dir

"cni-bin-dir": ""

+

"cni-bin-dir": ""

指定cni插件依赖的二进制的存储位置

默认为/opt/cni/bin

--cni-conf-dir

+

--cni-conf-dir

"cni-conf-dir": ""

+

"cni-conf-dir": ""

指定cni网络配置文件的存储位置

默认为/etc/cni/net.d

--image-layer-check=false

+

--image-layer-check=false

"image-layer-check": false

+

"image-layer-check": false

开启镜像层完整性检查功能,设置为true;关闭该功能,设置为false。默认为关闭。

isulad启动时会检查镜像层的完整性,如果镜像层被破坏,则相关的镜像不可用。isulad进行镜像完整性校验时,无法校验内容为空的文件和目录,以及链接文件。因此若镜像因掉电导致上述类型文件丢失,isulad的镜像数据完整性校验可能无法识别。isulad版本变更时需要检查是否支持该参数,如果不支持,需要从配置文件中删除。

--insecure-skip-verify-enforce=false

+

--insecure-skip-verify-enforce=false

"insecure-skip-verify-enforce": false

+

"insecure-skip-verify-enforce": false

Bool类型,是否强制跳过证书的主机名/域名验证,默认为false。当设置为true时,为不安全配置,会跳过证书的主机名/域名验证

默认为false(不跳过),注意:因isulad使用的yajl json 解析库限制,若在/etc/isulad/daemon.json配置文件中配置非Bool类型的其他符合json格式的值时,isulad将使用默认值false。

--use-decrypted-key=true

+

--use-decrypted-key=true

"use-decrypted-key": true

+

"use-decrypted-key": true

Bool类型,指定是否使用不加密的私钥。指定为true,表示使用不加密的私钥;指定为false,表示使用的为加密后的私钥,即需要进行双向认证。

默认配置为true(使用不加密的私钥),注意:因isulad使用的yajl json 解析库限制,若在/etc/isulad/daemon.json配置文件中配置非Bool类型的其他符合json格式的值时,isulad将使用默认值true。

--tls

+

--tls

"tls":false

+

"tls":false

Bool类型,是否使用TLS

默认值为false, 仅用于-H tcp://IP:PORT方式

--tlsverify

+

--tlsverify

"tlsverify":false

+

"tlsverify":false

Bool类型,是否使用TLS,并验证远程访问

仅用于-H tcp://IP:PORT方式

--tlscacert

+

--tlscacert

--tlscert

--tlskey

"tls-config": {

+

"tls-config": {

"CAFile": "/root/.iSulad/ca.pem",

"CertFile": "/root/.iSulad/server-cert.pem",

"KeyFile":"/root/.iSulad/server-key.pem"

@@ -332,18 +358,18 @@

仅用于-H tcp://IP:PORT方式

--authorization-plugin

+

--authorization-plugin

"authorization-plugin": "authz-broker"

+

"authorization-plugin": "authz-broker"

用户权限认证插件

当前只支持authz-broker

--cgroup-parent

+

--cgroup-parent

"cgroup-parent": "lxc/mycgroup"

+

"cgroup-parent": "lxc/mycgroup"

字符串类型,容器默认cgroup父路径

--default-ulimits

+

--default-ulimits

"default-ulimits": {

+

"default-ulimits": {

"nofile": {

"Name": "nofile",

"Hard": 6400,

@@ -366,16 +392,16 @@

指定限制的资源类型,如“nofile”。两个字段名字必须相同,即都为nofile,否则会报错。Hard指定的值需要大于等于Soft'。如果Hard字段或者Soft字段未设置,则默认该字段默认为0。

--websocket-server-listening-port

-

"websocket-server-listening-port": 10350

-

设置CRI websocket流式服务监听端口,默认端口号10350

-

指定CRI websocket流式服务监听端,如果客户端指定了

-

--websocket-server-listening-port,以客户端参数为准。端口范围1024-49151

-

--websocket-server-listening-port

+

"websocket-server-listening-port": 10350

+

设置CRI websocket流式服务侦听端口,默认端口号10350

+

指定CRI websocket流式服务侦听端,如果客户端指定了

+

--websocket-server-listening-port,以客户端参数为准。端口范围1024-49151

+
@@ -385,6 +411,7 @@ $ cat /etc/isulad/daemon.json { "group": "isulad", + "default-runtime": "lcr", "graph": "/var/lib/isulad", "state": "/var/run/isulad", "engine": "lcr", diff --git "a/content/zh/docs/Container/\351\203\250\347\275\262\351\205\215\347\275\256-22.md" "b/content/zh/docs/Container/\351\203\250\347\275\262\351\205\215\347\275\256-25.md" similarity index 94% rename from "content/zh/docs/Container/\351\203\250\347\275\262\351\205\215\347\275\256-22.md" rename to "content/zh/docs/Container/\351\203\250\347\275\262\351\205\215\347\275\256-25.md" index 22a5a392d2f9a26f54924db06d0b4ec6e1e49b55..a88861d01c3b4617d5ae6ab5400af5e17d7cb8ef 100644 --- "a/content/zh/docs/Container/\351\203\250\347\275\262\351\205\215\347\275\256-22.md" +++ "b/content/zh/docs/Container/\351\203\250\347\275\262\351\205\215\347\275\256-25.md" @@ -1,2 +1 @@ -# 部署配置 - +# 部署配置 diff --git "a/content/zh/docs/Container/\351\205\215\347\275\256TLS\350\256\244\350\257\201\344\270\216\345\274\200\345\220\257\350\277\234\347\250\213\350\256\277\351\227\256.md" "b/content/zh/docs/Container/\351\205\215\347\275\256TLS\350\256\244\350\257\201\344\270\216\345\274\200\345\220\257\350\277\234\347\250\213\350\256\277\351\227\256.md" index 624c4ec8d1ccfa4a85f36c8fb75196ca3e210599..85d788847cc82e82bd1f7c3b9a13cac01eb71e88 100644 --- "a/content/zh/docs/Container/\351\205\215\347\275\256TLS\350\256\244\350\257\201\344\270\216\345\274\200\345\220\257\350\277\234\347\250\213\350\256\277\351\227\256.md" +++ "b/content/zh/docs/Container/\351\205\215\347\275\256TLS\350\256\244\350\257\201\344\270\216\345\274\200\345\220\257\350\277\234\347\250\213\350\256\277\351\227\256.md" @@ -129,6 +129,7 @@ iSulad采用C/S模式进行设计,在默认情况,iSulad守护进程isulad >- 采用RPM安装方式时,服务端配置可通过/etc/isulad/daemon.json以及/etc/sysconfig/iSulad配置修改 >- 相比非认证或者单向认证方式,双向认证具备更高的安全性,推荐使用双向认证的方式进行通讯 >- GRPC开源组件日志不由iSulad进行接管,如果需要查看GRPC相关日志,请按需设置GRPC\_VERBOSITY和GRPC\_TRACE环境变量 +>   ## 示例 diff --git "a/content/zh/docs/Container/\351\205\215\347\275\256devicemapper\345\255\230\345\202\250\351\251\261\345\212\250-31.md" "b/content/zh/docs/Container/\351\205\215\347\275\256devicemapper\345\255\230\345\202\250\351\251\261\345\212\250-31.md" new file mode 100644 index 0000000000000000000000000000000000000000..f4da608b86587add05e1770b8ac829e6cd8e2fe6 --- /dev/null +++ "b/content/zh/docs/Container/\351\205\215\347\275\256devicemapper\345\255\230\345\202\250\351\251\261\345\212\250-31.md" @@ -0,0 +1,46 @@ +# 配置devicemapper存储驱动 + +用户如果需要使用devicemapper存储驱动,可以通过如下两种方式显示指定。 + +- 编辑/etc/docker/daemon.json,通过storage-driver字段显示指定。 + + ``` + cat /etc/docker/daemon.json + { + "storage-driver": "devicemapper" + } + ``` + + +- 编辑/etc/sysconfig/docker-storage,通过docker deamon启动参数显示指定。 + + ``` + cat /etc/sysconfig/docker-storage + DOCKER_STORAGE_OPTIONS="--storage-driver=devicemapper" + ``` + + +## 注意事项 + +- 使用devicemapper必须使用devicemapper+direct-lvm的方式,配置的方法可以参考 [https://docs.docker.com/engine/userguide/storagedriver/device-mapper-driver/\#configure-direct-lvm-mode-for-production](https://docs.docker.com/engine/userguide/storagedriver/device-mapper-driver/#configure-direct-lvm-mode-for-production) 。 +- 配置devicemapper时,如果系统上没有足够的空间给thinpool做自动扩容,请禁止自动扩容功能。 +- 禁止把/etc/lvm/profile/docker-thinpool.profile中如下两个值都改成100。 + + ``` + activation { + thin_pool_autoextend_threshold=80 + thin_pool_autoextend_percent=20 + } + ``` + +- 使用devicemapper时推荐加上--storage-opt dm.use\_deferred\_deletion=true --storage-opt dm.use\_deferred\_removal=true。 +- 使用devicemapper时,容器文件系统推荐使用ext4,需要在docker daemon的配置参数中加 上--storage-opt dm.fs=ext4。 +- 当graphdriver为devicemapper时,如果metadata文件损坏且不可恢复,需要人工介入恢复。禁止直接操作或篡改daemon存储devicemapper的元数据。 +- 使用devicemapper lvm时,异常掉电导致的devicemapper thinpool损坏,无法保证thinpool损坏后可以修复,也不能保证数据的完整性,需重建thinpool。 + +**docker daemon开启了user namespace特性,切换devicemapper存储池时的注意事项** + +- 一般启动容器时,deviceset-metadata文件为:/var/lib/docker/devicemapper/metadata/deviceset-metadata。 +- 使用了user namespace场景下,deviceset-metadata文件使用的是:/var/lib/docker/\{userNSUID.GID\}/devicemapper/metadata/deviceset-metadata。 +- 使用devicemapper存储驱动,容器在user namespace场景和普通场景之间切换时,需要将对应deviceset-metadata文件中的BaseDeviceUUID内容清空;针对thinpool扩容或者重建的场景下,也同样的需要将对应deviceset-metadata文件中的BaseDeviceUUID内容清空,否则docker服务会重启失败。 + diff --git "a/content/zh/docs/Container/\351\205\215\347\275\256devicemapper\345\255\230\345\202\250\351\251\261\345\212\250.md" "b/content/zh/docs/Container/\351\205\215\347\275\256devicemapper\345\255\230\345\202\250\351\251\261\345\212\250.md" index d3c904a49aa367f0f62b31df2e8c449b038b9979..eff5f5b294a7b5b1d7f36dde3768250d46ea9bde 100644 --- "a/content/zh/docs/Container/\351\205\215\347\275\256devicemapper\345\255\230\345\202\250\351\251\261\345\212\250.md" +++ "b/content/zh/docs/Container/\351\205\215\347\275\256devicemapper\345\255\230\345\202\250\351\251\261\345\212\250.md" @@ -1,46 +1,173 @@ -# 配置devicemapper存储驱动 +# 配置devicemapper存储驱动 -用户如果需要使用devicemapper存储驱动,可以通过如下两种方式显示指定。 +使用devicemapper存储驱动需要先配置一个thinpool设备,而配置thinpool需要一个独立的块设备,且该设备需要有足够的空闲空间用于创建thinpool,请用户根据实际需求确定。这里假设独立块设备为/dev/xvdf,具体的配置方法如下: -- 编辑/etc/docker/daemon.json,通过storage-driver字段显示指定。 +**一、配置thinpool** + +1. 停止isulad服务。 ``` - cat /etc/docker/daemon.json - { - "storage-driver": "devicemapper" - } + # systemctl stop isulad + ``` + +2. 基于块设备创建一个lvm卷。 + + ``` + # pvcreate /dev/xvdf + ``` + +3. 使用刚才创建的物理卷创建一个卷组。 + + ``` + # vgcreate isula /dev/xvdf + Volume group "isula" successfully created: + ``` + +4. 创建名为thinpool和thinpoolmeta的两个逻辑卷。 + + ``` + # lvcreate --wipesignatures y -n thinpool isula -l 95%VG + Logical volume "thinpool" created. + ``` + + ``` + # lvcreate --wipesignatures y -n thinpoolmeta isula -l 1%VG + Logical volume "thinpoolmeta" created. + ``` + +5. 将新创建的两个逻辑卷转换成thinpool以及thinpool所使用的metadata,这样就完成了thinpool配置。 + + ``` + # lvconvert -y --zero n -c 512K --thinpool isula/thinpool --poolmetadata isula/thinpoolmeta + + WARNING: Converting logical volume isula/thinpool and isula/thinpoolmeta to + thin pool's data and metadata volumes with metadata wiping. + THIS WILL DESTROY CONTENT OF LOGICAL VOLUME (filesystem etc.) + Converted isula/thinpool to thin pool. ``` -- 编辑/etc/sysconfig/docker-storage,通过docker deamon启动参数显示指定。 +   + +**二、修改isulad配置文件** + +1. 如果环境之前运行过isulad,请先备份之前的数据。 ``` - cat /etc/sysconfig/docker-storage - DOCKER_STORAGE_OPTIONS="--storage-driver=devicemapper" + # mkdir /var/lib/isulad.bk + # mv /var/lib/isulad/* /var/lib/isulad.bk ``` +2. 修改配置文件 + + 这里提供了两种配置方式,用户可根据实际情况的选择合适的方式。 -## 注意事项 + - 编辑/etc/isulad/daemon.json,配置storage-driver字段值为devicemapper,并配置storage-opts字段的相关参数,支持参数请参见[参数说明](#zh-cn_topic_0222861454_section1712923715282)。配置参考如下所示: + + ``` + { + "storage-driver": "devicemapper" + "storage-opts": [ + "dm.thinpooldev=/dev/mapper/isula-thinpool", + "dm.fs=ext4", + "dm.min_free_space=10%" + ] + } + ``` + + - 或者也可以通过编辑/etc/sysconfig/iSulad,在isulad启动参数里显式指定,支持参数请参见[参数说明](#zh-cn_topic_0222861454_section1712923715282)。配置参考如下所示: + + ``` + OPTIONS="--storage-driver=devicemapper --storage-opt dm.thinpooldev=/dev/mapper/isula-thinpool --storage-opt dm.fs=ext4 --storage-opt dm.min_free_space=10%" + ``` + +3. 启动isulad,使配置生效。 + + ``` + # systemctl start isulad + ``` + + +## 参数说明 + +storage-opts 支持的参数请参见[表1](#zh-cn_topic_0222861454_table3191161993812)。 + +**表 1** starage-opts字段参数说明 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

参数

+

是否必选

+

含义

+

dm.fs

+

+

用于指定容器使用的文件系统类型。当前必须配置为ext4,即dm.fs=ext4

+

dm.basesize

+

+

用于指定单个容器的最大存储空间大小,单位为k/m/g/t/p,也可以使用大写字母,例如dm.basesize=50G。该参数只在首次初始化时有效。

+

dm.mkfsarg

+

+

用于在创建基础设备时指定额外的mkfs参数。例如“dm.mkfsarg=-O ^has_journal”

+

dm.mountopt

+

+

用于在挂载容器时指定额外的mount参数。例如dm.mountopt=nodiscard

+

dm.thinpooldev

+

+

用于指定容器/镜像存储时使用的thinpool设备。

+

dm.min_free_space

+

+

用于指定最小的预留空间,用百分比表示。例如dm.min_free_space=10%,表示当剩余存储空间只剩10%左右时,创建容器等和存储相关操作就会失败。

+
+ +## 注意事项 -- 使用devicemapper必须使用devicemapper+direct-lvm的方式,配置的方法可以参考 [https://docs.docker.com/engine/userguide/storagedriver/device-mapper-driver/\#configure-direct-lvm-mode-for-production](https://docs.docker.com/engine/userguide/storagedriver/device-mapper-driver/#configure-direct-lvm-mode-for-production) 。 - 配置devicemapper时,如果系统上没有足够的空间给thinpool做自动扩容,请禁止自动扩容功能。 -- 禁止把/etc/lvm/profile/docker-thinpool.profile中如下两个值都改成100。 + + 禁止自动扩容的方法是把/etc/lvm/profile/isula-thinpool.profile中thin\_pool\_autoextend\_threshold和thin\_pool\_autoextend\_percent两个值都改成100,如下所示: ``` activation { - thin_pool_autoextend_threshold=80 - thin_pool_autoextend_percent=20 + thin_pool_autoextend_threshold=100 + thin_pool_autoextend_percent=100 } ``` -- 使用devicemapper时推荐加上--storage-opt dm.use\_deferred\_deletion=true --storage-opt dm.use\_deferred\_removal=true。 -- 使用devicemapper时,容器文件系统推荐使用ext4,需要在docker daemon的配置参数中加 上--storage-opt dm.fs=ext4。 +- 使用devicemapper时,容器文件系统必须配置为ext4,需要在isulad的配置参数中加上--storage-opt dm.fs=ext4。 - 当graphdriver为devicemapper时,如果metadata文件损坏且不可恢复,需要人工介入恢复。禁止直接操作或篡改daemon存储devicemapper的元数据。 - 使用devicemapper lvm时,异常掉电导致的devicemapper thinpool损坏,无法保证thinpool损坏后可以修复,也不能保证数据的完整性,需重建thinpool。 -**docker daemon开启了user namespace特性,切换devicemapper存储池时的注意事项** +**iSula开启了user namespace特性,切换devicemapper存储池时的注意事项** -- 一般启动容器时,deviceset-metadata文件为:/var/lib/docker/devicemapper/metadata/deviceset-metadata。 -- 使用了user namespace场景下,deviceset-metadata文件使用的是:/var/lib/docker/\{userNSUID.GID\}/devicemapper/metadata/deviceset-metadata。 -- 使用devicemapper存储驱动,容器在user namespace场景和普通场景之间切换时,需要将对应deviceset-metadata文件中的BaseDeviceUUID内容清空;针对thinpool扩容或者重建的场景下,也同样的需要将对应deviceset-metadata文件中的BaseDeviceUUID内容清空,否则docker服务会重启失败。 +- 一般启动容器时,deviceset-metadata文件为:/var/lib/isulad/devicemapper/metadata/deviceset-metadata。 +- 使用了user namespace场景下,deviceset-metadata文件使用的是:/var/lib/isulad/\{userNSUID.GID\}/devicemapper/metadata/deviceset-metadata。 +- 使用devicemapper存储驱动,容器在user namespace场景和普通场景之间切换时,需要将对应deviceset-metadata文件中的BaseDeviceUUID内容清空;针对thinpool扩容或者重建的场景下,也同样的需要将对应deviceset-metadata文件中的BaseDeviceUUID内容清空,否则isulad服务会重启失败。 diff --git "a/content/zh/docs/Container/\351\205\215\347\275\256overlay2\345\255\230\345\202\250\351\251\261\345\212\250.md" "b/content/zh/docs/Container/\351\205\215\347\275\256overlay2\345\255\230\345\202\250\351\251\261\345\212\250.md" index 24cb0cdcaaa20e880d375f74dc4967da1353fdfc..81d8878ed9c5fab3226b56cb7a2b12ce39ec3a77 100644 --- "a/content/zh/docs/Container/\351\205\215\347\275\256overlay2\345\255\230\345\202\250\351\251\261\345\212\250.md" +++ "b/content/zh/docs/Container/\351\205\215\347\275\256overlay2\345\255\230\345\202\250\351\251\261\345\212\250.md" @@ -61,6 +61,8 @@ docker默认为使用overlay2存储驱动,也可以通过如下两种方式显 容器使用配置了overlay2存储驱动的过程中,可能出现挂载点被覆盖的异常情况。例如 +   + ## 异常场景-挂载点被覆盖 挂载关系:在问题容器的挂载点的下面,存在一个/var/lib/docker/overlay2的挂载点: @@ -87,6 +89,8 @@ docker rm: Error response from daemon: driver "overlay2" failed to remove root f docker info | grep "Storage Driver" ``` +    + 2. 查询当前的挂载点: ``` diff --git "a/content/zh/docs/Container/\351\205\215\347\275\256\346\226\271\346\263\225.md" "b/content/zh/docs/Container/\351\205\215\347\275\256\346\226\271\346\263\225.md" index 2f72ca3f5e7141a9b7f346947b64dbf86587368e..7914d708f2d612657620e56f770d5b1e10e522b9 100644 --- "a/content/zh/docs/Container/\351\205\215\347\275\256\346\226\271\346\263\225.md" +++ "b/content/zh/docs/Container/\351\205\215\347\275\256\346\226\271\346\263\225.md" @@ -3,14 +3,14 @@ 在容器启动时的配置: ``` -isula run -itd --health-cmd "echo iSulad >> /tmp/health_check_file || exit 1" --health-interval 5m --health-timeout 3s --health-exit-on-unhealthy centos bash +isula run -itd --health-cmd "echo iSulad >> /tmp/health_check_file || exit 1" --health-interval 5m --health-timeout 3s --health-exit-on-unhealthy busybox bash ``` 可配置的选项: - --health-cmd,必选,在容器内执行的命令。返回值为0表示成功,非0表示失败。 - --health-interval,默认 30s,最大为int64上限(纳秒),自定义配置最小值1s,相邻两次命令执行的间隔时间(注:入参0s时视为default)。 -- --health-timeout,默认 30s,最大为int64上限(纳秒),自定义配置最小值1s,单次检查命令执行的时间上限,超时则任务命令执行失败(注:入参0s时视为default) +- --health-timeout,默认 30s,最大为int64上限(纳秒),自定义配置最小值1s,单次检查命令执行的时间上限,超时则任务命令执行失败(注:入参0s时视为default),仅支持runtime类型为lcr的容器。 - --health-start-period,默认 0s,最大为int64上限(纳秒),自定义配置最小值1s,容器初始化时间。 - --health-retries,默认 3,最大为int32上限,健康检查失败最大的重试次数。 - --health-exit-on-unhealthy,默认false,检测到容器非健康时是否杀死容器。 diff --git "a/content/zh/docs/Container/\351\225\234\345\203\217\347\256\241\347\220\206-30.md" "b/content/zh/docs/Container/\351\225\234\345\203\217\347\256\241\347\220\206-34.md" similarity index 96% rename from "content/zh/docs/Container/\351\225\234\345\203\217\347\256\241\347\220\206-30.md" rename to "content/zh/docs/Container/\351\225\234\345\203\217\347\256\241\347\220\206-34.md" index fd2536e348133917c5b3fd362f14c9689c3264ad..b59d41dc3d8650dc15ec82df016d56c2dbcbea55 100644 --- "a/content/zh/docs/Container/\351\225\234\345\203\217\347\256\241\347\220\206-30.md" +++ "b/content/zh/docs/Container/\351\225\234\345\203\217\347\256\241\347\220\206-34.md" @@ -1,2 +1,2 @@ -# 镜像管理 - +# 镜像管理 + diff --git "a/content/zh/docs/Container/\351\225\234\345\203\217\347\256\241\347\220\206-33.md" "b/content/zh/docs/Container/\351\225\234\345\203\217\347\256\241\347\220\206-37.md" similarity index 94% rename from "content/zh/docs/Container/\351\225\234\345\203\217\347\256\241\347\220\206-33.md" rename to "content/zh/docs/Container/\351\225\234\345\203\217\347\256\241\347\220\206-37.md" index 6e535107ab1ae3f23309be63def9776a0b3e1ec8..f015f51d59a02d58fb9d28020ee5673d53eea5a8 100644 --- "a/content/zh/docs/Container/\351\225\234\345\203\217\347\256\241\347\220\206-33.md" +++ "b/content/zh/docs/Container/\351\225\234\345\203\217\347\256\241\347\220\206-37.md" @@ -1,2 +1,5 @@ -# 镜像管理 - +# 镜像管理 + + + + diff --git "a/content/zh/docs/Container/\351\225\234\345\203\217\347\256\241\347\220\206.md" "b/content/zh/docs/Container/\351\225\234\345\203\217\347\256\241\347\220\206.md" index 1df655bacfe563f72a5ed3a6e6cd0ed2622ddb69..79dca6812b61812f67ca3a0fe03aff84559eb952 100644 --- "a/content/zh/docs/Container/\351\225\234\345\203\217\347\256\241\347\220\206.md" +++ "b/content/zh/docs/Container/\351\225\234\345\203\217\347\256\241\347\220\206.md" @@ -1 +1,3 @@ # 镜像管理 + + diff --git "a/content/zh/docs/Container/\351\231\204\345\275\225-19.md" "b/content/zh/docs/Container/\351\231\204\345\275\225-22.md" similarity index 93% rename from "content/zh/docs/Container/\351\231\204\345\275\225-19.md" rename to "content/zh/docs/Container/\351\231\204\345\275\225-22.md" index c8ba7c3c43dc1cf062fc30851008ab85c806d42c..1cc9321be939136766ae040b5e22f8cda1b62e5b 100644 --- "a/content/zh/docs/Container/\351\231\204\345\275\225-19.md" +++ "b/content/zh/docs/Container/\351\231\204\345\275\225-22.md" @@ -1,2 +1 @@ -# 附录 - +# 附录 diff --git "a/content/zh/docs/Container/\351\231\204\345\275\225-25.md" "b/content/zh/docs/Container/\351\231\204\345\275\225-28.md" similarity index 93% rename from "content/zh/docs/Container/\351\231\204\345\275\225-25.md" rename to "content/zh/docs/Container/\351\231\204\345\275\225-28.md" index 0248916ca9349986d76b2152821dce54a5ee6319..02ace2a31cc0ee40bf0fc3a5974211c017e0f7d8 100644 --- "a/content/zh/docs/Container/\351\231\204\345\275\225-25.md" +++ "b/content/zh/docs/Container/\351\231\204\345\275\225-28.md" @@ -1,2 +1 @@ -# 附录 - +# 附录 diff --git "a/content/zh/docs/Container/\351\231\204\345\275\225.md" "b/content/zh/docs/Container/\351\231\204\345\275\225.md" index f31176ae4c6bb32642315a824651b228ced30fe3..cad6a4c02f43fa6cc670547595f5a4af0516858e 100644 --- "a/content/zh/docs/Container/\351\231\204\345\275\225.md" +++ "b/content/zh/docs/Container/\351\231\204\345\275\225.md" @@ -1,5 +1 @@ # 附录 - - - - diff --git "a/content/zh/docs/Container/\351\231\220\345\210\266Blkio\350\265\204\346\272\220.md" "b/content/zh/docs/Container/\351\231\220\345\210\266Blkio\350\265\204\346\272\220.md" index 91226fb96f15cbb0f0e072fed4b547f00011f354..e9337eb50e81a925c046f6e0d49232d8c58fc8bb 100644 --- "a/content/zh/docs/Container/\351\231\220\345\210\266Blkio\350\265\204\346\272\220.md" +++ "b/content/zh/docs/Container/\351\231\220\345\210\266Blkio\350\265\204\346\272\220.md" @@ -57,7 +57,7 @@ 举例: ``` - docker run -tid --runtime kata-runtime --network none --annotation com.github.containers.virtcontainers.blkio_cgroup='{"blkiocgroup":[{"path":"/dev/sda","limits":[{"type":"throttle_read_bps","value":400},{"type":"throttle_write_bps","value":400},{"type":"throttle_read_iops","value":700},{"type":"throttle_write_iops","value":699}]},{"limits":[{"type":"blkio_weight","value":78}]}]}' rnd-dockerhub.huawei.com/official/pause + docker run -tid --runtime kata-runtime --network none --annotation com.github.containers.virtcontainers.blkio_cgroup='{"blkiocgroup":[{"path":"/dev/sda","limits":[{"type":"throttle_read_bps","value":400},{"type":"throttle_write_bps","value":400},{"type":"throttle_read_iops","value":700},{"type":"throttle_write_iops","value":699}]},{"limits":[{"type":"blkio_weight","value":78}]}]}' busybox sleep 999999 ``` 上面命令表示对启动的安全容器所使用的/dev/sda磁盘进行blkio限流,分别将throttle\_read\_bps限速为400bps,throttle\_write\_bps限速为400bps,throttle\_read\_iops限速为700次/秒,throttle\_write\_iops限速为699次/秒,以及所在blkio cgroup组的权重值设置为78。 diff --git "a/content/zh/docs/Container/\351\231\220\345\210\266CPU\350\265\204\346\272\220.md" "b/content/zh/docs/Container/\351\231\220\345\210\266CPU\350\265\204\346\272\220.md" index 7f7450b6f0a7965596cc4fe2e25b2c9aa12d16dd..14418ca7002d334831c85ad265d0fafb54911787 100644 --- "a/content/zh/docs/Container/\351\231\220\345\210\266CPU\350\265\204\346\272\220.md" +++ "b/content/zh/docs/Container/\351\231\220\345\210\266CPU\350\265\204\346\272\220.md" @@ -12,7 +12,7 @@ ``` # 启动一个pause容器 - docker run -tid --runtime kata-runtime --network none --annotation io.kubernetes.docker.type=podsandbox --annotation com.github.containers.virtcontainers.sandbox_cpu=4 ubuntu-arm64 bash + docker run -tid --runtime kata-runtime --network none --annotation io.kubernetes.docker.type=podsandbox --annotation com.github.containers.virtcontainers.sandbox_cpu=4 busybox sleep 999999 be3255a3f66a35508efe419bc52eccd3b000032b9d8c9c62df611d5bdc115954 # 进入容器查看CPU信息,查看CPU个数是否与com.github.containers.virtcontainers.sandbox_cpu配置的CPU个数相等 @@ -90,7 +90,7 @@ ``` # 启动一个pause容器,轻量级虚机默认分配了1个vcpu - docker run -tid --runtime kata-runtime --network none --annotation io.kubernetes.docker.type=podsandbox ubuntu bash + docker run -tid --runtime kata-runtime --network none --annotation io.kubernetes.docker.type=podsandbox busybox sleep 999999 77b40fb72f63b11dd3fcab2f6dabfc7768295fced042af8c7ad9c0286b17d24f # 查看启动完pause容器后轻量级虚机中CPU个数 @@ -105,7 +105,7 @@ Socket(s): 1 # 在同一个Pod中启动新的容器并通过--cpus设置容器需要的CPU数量为4 - docker run -tid --runtime kata-runtime --network none --cpus 4 --annotation io.kubernetes.docker.type=container --annotation io.kubernetes.sandbox.id=77b40fb72f63b11dd3fcab2f6dabfc7768295fced042af8c7ad9c0286b17d24f ubuntu bash + docker run -tid --runtime kata-runtime --network none --cpus 4 --annotation io.kubernetes.docker.type=container --annotation io.kubernetes.sandbox.id=77b40fb72f63b11dd3fcab2f6dabfc7768295fced042af8c7ad9c0286b17d24f busybox sleep 999999 7234d666851d43cbdc41da356bf62488b89cd826361bb71d585a049b6cedafd3 # 查看当前轻量级虚机中CPU的个数 @@ -134,6 +134,10 @@ Socket(s): 1 ``` +    + +    + >![](public_sys-resources/icon-note.gif) **说明:** >由于pause容器只是一个占位容器没有工作负载,所以轻量级虚机启动时默认分配的1个CPU可以被其它容器共享,因此上面例子中启动的新容器只需要再热插3个CPU到轻量级虚机中即可。 diff --git "a/content/zh/docs/Container/\351\231\220\345\210\266\345\206\205\345\255\230\350\265\204\346\272\220.md" "b/content/zh/docs/Container/\351\231\220\345\210\266\345\206\205\345\255\230\350\265\204\346\272\220.md" index f7b93ba1ab23d86fa49ebc4c06a587800f8332a2..7ba420485c0d5d1a14cedc2e1be632309c820995 100644 --- "a/content/zh/docs/Container/\351\231\220\345\210\266\345\206\205\345\255\230\350\265\204\346\272\220.md" +++ "b/content/zh/docs/Container/\351\231\220\345\210\266\345\206\205\345\255\230\350\265\204\346\272\220.md" @@ -12,7 +12,7 @@ ``` # 启动一个pause容器,通过--annotation com.github.containers.virtcontainers.sandbox_mem=4G为轻量级虚机分配4G内存 - docker run -tid --runtime kata-runtime --network none --annotation io.kubernetes.docker.type=podsandbox --annotation com.github.containers.virtcontainers.sandbox_mem=4G ubuntu-arm64 bash + docker run -tid --runtime kata-runtime --network none --annotation io.kubernetes.docker.type=podsandbox --annotation com.github.containers.virtcontainers.sandbox_mem=4G busybox sleep 999999 1532c3e59e7a45cd6b419aa1db07dd0069b0cdd93097f8944177a25e457e4297 # 查看轻量级虚机中内存信息,查看内存大小是否与com.github.containers.virtcontainers.sandbox_mem配置的内存大小相等 @@ -60,7 +60,7 @@ ``` # 启动一个pause容器,轻量级虚机默认分配了1GB内存 - docker run -tid --runtime kata-runtime --network none --annotation io.kubernetes.docker.type=podsandbox ubuntu bash + docker run -tid --runtime kata-runtime --network none --annotation io.kubernetes.docker.type=podsandbox busybox sleep 999999 99b78508ada3fa7dcbac457bb0f6e3784e64e7f7131809344c5496957931119f # 查看启动完pause容器后轻量级虚机中的内存大小 @@ -70,7 +70,7 @@ Swap: 0 0 0 # 在同一个Pod中启动新的容器并通过-m设置容器需要的内存大小为4G - docker run -tid --runtime kata-runtime --network none -m 4G --annotation io.kubernetes.docker.type=container --annotation io.kubernetes.sandbox.id=99b78508ada3fa7dcbac457bb0f6e3784e64e7f7131809344c5496957931119f ubuntu bash + docker run -tid --runtime kata-runtime --network none -m 4G --annotation io.kubernetes.docker.type=container --annotation io.kubernetes.sandbox.id=99b78508ada3fa7dcbac457bb0f6e3784e64e7f7131809344c5496957931119f busybox sleep 999999 c49461745a712b2ef3127fdf43b2cbb034b7614e6060b13db12b7a5ff3c830c8 # 查看当前轻量级虚机中内存的大小 diff --git "a/content/zh/docs/SecHarden/SELinux\351\205\215\347\275\256.md" "b/content/zh/docs/SecHarden/SELinux\351\205\215\347\275\256.md" new file mode 100644 index 0000000000000000000000000000000000000000..3c8d1fcde02ec9895ee8b8652b003611358c4c42 --- /dev/null +++ "b/content/zh/docs/SecHarden/SELinux\351\205\215\347\275\256.md" @@ -0,0 +1,67 @@ +# SELinux配置 + +## 概述 + +自由访问控制DAC(Discretionary Access Control)基于用户、组和其他权限,决定一个资源是否能被访问的因素是某个资源是否拥有对应用户的权限,它不能使系统管理员创建全面和细粒度的安全策略。SELinux(Security-Enhanced Linux)是Linux内核的一个模块,也是Linux的一个安全子系统。SELinux的实现了强制访问控制MAC(Mandatory Access Control ),每个进程和系统资源都有一个特殊的安全标签,资源能否被访问除了DAC规定的原则外,还需要判断每一类进程是否拥有对某一类资源的访问权限。 + +openEuler默认使用SELinux提升系统安全性。SELinux分为三种模式: + +- permissive:SELinux仅打印告警而不强制执行。 +- enforcing:SELinux安全策略被强制执行。 +- disabled:不加载SELinux安全策略。 + +## 配置说明 + +openEuler默认开启SELinux,且默认模式为enforcing,用户可以通过修改/etc/selinux/config中配置项SELINUX的值变更SELinux模式。 + +- 关闭SELinux策略的配置如下: + + ``` + SELINUX=disabled + ``` + +- 使用permissive策略的配置如下: + + ``` + SELINUX=permissive + ``` + + +>![](public_sys-resources/icon-note.gif) **说明:** +>disabled与另两种模式切换时需重启系统生效。 +>``` +># reboot +>``` + +## SELinux相关命令 + +- 查询SELinux模式。例如下述查询的SELinux模式为Permissive: + + ``` + # getenforce + Permissive + ``` + +- 设置SELinux模式,0表示permissive模式,1表示enforcing模式,例如设置为enforcing模式的命令如下。该命令不能设置disabled模式,且系统重启后,恢复到/etc/selinux/config中设置的模式。 + + ``` + # setenforce 1 + ``` + +- 查询运行SELinux的系统状态。SELinux status表示SELinux的状态,enabled表示启用SELinux,disabled表示关闭SELinux。Current mode表示SELinux当前的安全策略。 + + ``` + # sestatus + SELinux status: enabled + SELinuxfs mount: /sys/fs/selinux + SELinux root directory: /etc/selinux + Loaded policy name: targeted + Current mode: enforcing + Mode from config file: enforcing + Policy MLS status: enabled + Policy deny_unknown status: allowed + Memory protection checking: actual (secure) + Max kernel policy version: 31 + ``` + + diff --git a/content/zh/docs/SecHarden/zh-cn_bookmap_0192073180.md b/content/zh/docs/SecHarden/zh-cn_bookmap_0192073180.md deleted file mode 100644 index 9014a51fe298c7e4d7af760bcacb9dbdb8633f35..0000000000000000000000000000000000000000 --- a/content/zh/docs/SecHarden/zh-cn_bookmap_0192073180.md +++ /dev/null @@ -1,50 +0,0 @@ -# openEuler 1.0 安全加固指南 - -- [法律声明](法律声明.md) -- [前言](前言.md) -- [操作系统加固概述](操作系统加固概述.md) - - [加固目的](加固目的.md) - - [加固方案](加固方案.md) - - [加固影响](加固影响.md) - -- [加固指导](加固指导.md) - - [系统服务](系统服务.md) - - [加固SSH服务](加固SSH服务.md) - - - [文件权限](文件权限.md) - - [设置文件的权限和属主](设置文件的权限和属主.md) - - [删除无主文件](删除无主文件.md) - - [处理空链接文件](处理空链接文件.md) - - [设置守护进程的umask值](设置守护进程的umask值.md) - - [为全局可写目录添加粘滞位属性](为全局可写目录添加粘滞位属性.md) - - [删除非授权文件的全局可写属性](删除非授权文件的全局可写属性.md) - - [限制at命令的使用权限](限制at命令的使用权限.md) - - [限制cron命令的使用权限](限制cron命令的使用权限.md) - - - [内核参数](内核参数.md) - - [加固内核参数](加固内核参数.md) - - - [授权认证](授权认证.md) - - [设置网络远程登录的警告信息](设置网络远程登录的警告信息.md) - - [禁止通过CTRL+ALT+DEL重启系统](禁止通过CTRL+ALT+DEL重启系统.md) - - [设置终端的自动退出时间](设置终端的自动退出时间.md) - - [设置用户的默认umask值为077](设置用户的默认umask值为077.md) - - [设置GRUB2加密口令](设置GRUB2加密口令.md) - - [安全单用户模式](安全单用户模式.md) - - [禁止交互式启动](禁止交互式启动.md) - - - [账户口令](账户口令.md) - - [屏蔽系统帐户](屏蔽系统帐户.md) - - [限制使用su命令的帐户](限制使用su命令的帐户.md) - - [设置口令复杂度](设置口令复杂度.md) - - [设置口令有效期](设置口令有效期.md) - - [设置口令的加密算法](设置口令的加密算法.md) - - [登录失败超过三次后锁定](登录失败超过三次后锁定.md) - - [加固su命令](加固su命令.md) - - -- [附录](附录.md) - - [文件和目录权限含义](文件和目录权限含义.md) - - [umask值含义](umask值含义.md) - - diff --git "a/content/zh/docs/SecHarden/\345\212\240\345\233\272SSH\346\234\215\345\212\241.md" "b/content/zh/docs/SecHarden/\345\212\240\345\233\272SSH\346\234\215\345\212\241.md" index f7c3031fcc54f96e475ea31e01a09c7f42cae3ae..b08a41192b438176ae6125503a5d089e77d45138 100644 --- "a/content/zh/docs/SecHarden/\345\212\240\345\233\272SSH\346\234\215\345\212\241.md" +++ "b/content/zh/docs/SecHarden/\345\212\240\345\233\272SSH\346\234\215\345\212\241.md" @@ -142,7 +142,7 @@ SSH(Secure Shell)是目前较可靠,专为远程登录会话和其他网

PermitRootLogin

是否允许root账户直接使用SSH登录系统

+

是否允许root账户直接使用SSH登录系统

说明:

若需要直接使用root账户通过SSH登录系统,请修改/etc/ssh/sshd_config文件的PermitRootLogin字段的值为yes。

-2. 加载sysctl.conf文件中设置的内核参数 +2. 加载sysctl.conf文件中设置的内核参数。 ``` sysctl -p /etc/sysctl.conf diff --git "a/content/zh/docs/SecHarden/\345\212\240\345\233\272\346\223\215\344\275\234.md" "b/content/zh/docs/SecHarden/\345\212\240\345\233\272\346\223\215\344\275\234.md" new file mode 100644 index 0000000000000000000000000000000000000000..c245a861a11bef31edd6ace0aa3d8fde061abab8 --- /dev/null +++ "b/content/zh/docs/SecHarden/\345\212\240\345\233\272\346\223\215\344\275\234.md" @@ -0,0 +1,115 @@ +# 加固操作 + +## 概述 + +安全加固工具会根据usr-security.conf设置加固策略,使用加固工具设置加固策略需要用户修改usr-security.conf。本节介绍usr-security.conf的修改规则。用户可配置的加固项请参见[加固指导](加固指导.md)对应内容。 + +## 注意事项 + +- 修改配置后,需要重启安全加固服务使配置生效。重启方法请参见[加固生效](加固生效.md)对应内容。 +- 用户修改加固配置时,仅修改/etc/openEuler\_security/usr-security.conf文件,不建议修改/etc/openEuler\_security/security.conf。security.conf中为基本加固项,仅运行一次。 +- 当重启安全加固服务使配置生效后,在usr-security.conf中删除对应加固项并重启安全加固服务并不能清除之前的配置。 +- 安全加固操作记录在日志文件/var/log/openEuler-security.log中。 + +## 配置格式 + +usr-security.conf中的每一行代表一项配置,根据配置内容的不同有不同配置格式,这里给出各类配置的格式说明。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>- 所有配置项以执行ID开头,执行ID仅为了方便用户识别配置内容,取值为正整数,由用户自行定义。 +>- 配置项的各内容之间使用@作为分隔符。 +>- 若实际配置内容中包含@,需要使用@@表示以和分隔符区分,例如实际内容为xxx@yyy,则配置为xxx@@yyy。目前不支持@位于配置内容的开头和结尾。 + +- d:注释 + + 格式:执行ID@d@对象文件@匹配项 + + 功能:将对象文件中以匹配项开头(行首可以有空格)的行注释(在行首添加\#)。 + + 示例:执行ID为401,注释/etc/sudoers文件中以%wheel开头的行。 + + ``` + 401@d@/etc/sudoers@%wheel + ``` + + +- m:替换 + + 格式:执行ID@m@对象文件@匹配项@替换目标值 + + 功能:将对象文件中以匹配项开头(行首可以有空格)的行替换为“匹配项加替换目标值 ”。若匹配行开头有空格,替换后将删除这些空格。 + + 示例:执行ID为101,将/etc/ssh/sshd\_config文件中以Protocol 开头的行替换为Protocol 2。匹配和替换时也会考虑Protocol后的空格。 + + ``` + 101@m@/etc/ssh/sshd_config@Protocol @2 + ``` + +- sm:精确修改 + + 格式:执行ID@sm@对象文件@匹配项@替换目标值 + + 功能:将对象文件中以匹配项开头(行首可以有空格)的行替换为“匹配项加替换目标值 ”。若匹配行开头有空格,替换后将保留这些空格,这是sm和m的区别。 + + 示例:执行ID为201,将/etc/audit/hzqtest文件中以size开头的行替换为size 2048。 + + ``` + 201@sm@/etc/audit/hzqtest@size @2048 + ``` + + +- M:修改子项 + + 格式:执行ID@M@对象文件@匹配项@匹配子项\[@匹配子项的值\] + + 功能:匹配对象文件中以匹配项开头(行首可以有空格)的行,并将该行中以匹配子项开始的内容替换为“匹配子项和匹配子项的值”,其中匹配子项的值可选。 + + 示例:执行ID为101,找到file文件中以key开头的行,并将这些行中以key2开始的内容替换为key2value2。 + + ``` + 101@M@file@key@key2@value2 + ``` + +- systemctl:管理服务 + + 格式:执行ID@systemctl@对象服务@具体操作 + + 功能:使用systemctl管理对象服务,具体操作可取值为start、stop、restart、disable等systemctl所有可用的命令。 + + 示例:执行ID为218,停止cups.service服务,等同于systemctl stop cups.service的配置行。 + + ``` + 218@systemctl @cups.service@stop + ``` + +- 其他命令 + + 格式:执行ID@命令@对象文件 + + 功能:执行对应命令,即执行命令行“命令 对象文件”。 + + 示例一:执行ID为402,使用rm -f命令删除文件/etc/pki/ca-trust/extracted/pem/email-ca-bundle.pem。 + + ``` + 402@rm -f @/etc/pki/ca-trust/extracted/pem/email-ca-bundle.pem + ``` + + 示例二:执行ID为215,使用touch命令创建文件/etc/cron.allow。 + + ``` + 215@touch @/etc/cron.allow + ``` + + 示例三:执行ID为214,使用chown命令将文件/etc/at.allow的属主改为root:root。 + + ``` + 214@chown root:root @/etc/at.allow + ``` + + 示例四:执行ID为214,使用chmod命令去除文件/etc/at.allow属主所在群组及其他非属主用户的rwx权限。 + + ``` + 214@chmod og-rwx @/etc/at.allow + ``` + + diff --git "a/content/zh/docs/SecHarden/\345\212\240\345\233\272\346\226\271\346\241\210.md" "b/content/zh/docs/SecHarden/\345\212\240\345\233\272\346\226\271\346\241\210.md" index c67421e2750d329b8ce9ba5afa671164737289fe..fac8853801902bb9d8f4453576d21f59fd9e9007 100644 --- "a/content/zh/docs/SecHarden/\345\212\240\345\233\272\346\226\271\346\241\210.md" +++ "b/content/zh/docs/SecHarden/\345\212\240\345\233\272\346\226\271\346\241\210.md" @@ -4,7 +4,9 @@ ## 加固方式 -openEuler默认搭载系统安全加固包security-tool,在安装时生成安全加固服务。系统在首次启动时自动运行安全加固服务,执行默认的安全策略配置。用户可以根据需求定制安全加固工具或者通过修改相关配置定制加固方案,本文档介绍相关的加固方法。 +用户可以通过手动修改加固配置或执行相关命令对系统进行加固,也可以通过加固工具批量修改加固项。openEuler的安全加固工具security tool以openEuler-security.service服务的形式运行。系统首次启动时会自动运行该服务去执行默认加固策略,且自动设置后续开机不启动该服务。 + +用户可以通过修改security.conf,使用安全加固工具实现个性化安全加固的效果。 ## 加固内容 diff --git "a/content/zh/docs/SecHarden/\345\212\240\345\233\272\347\224\237\346\225\210.md" "b/content/zh/docs/SecHarden/\345\212\240\345\233\272\347\224\237\346\225\210.md" new file mode 100644 index 0000000000000000000000000000000000000000..f27767b47915a86142772a73d8341c4a18e2ea38 --- /dev/null +++ "b/content/zh/docs/SecHarden/\345\212\240\345\233\272\347\224\237\346\225\210.md" @@ -0,0 +1,8 @@ +# 加固生效 + +完成修改usr-security.conf文件后,请运行如下命令使新添加的配置生效。 + +``` +systemctl restart openEuler-security.service +``` + diff --git "a/content/zh/docs/SecHarden/\345\256\211\345\205\250\345\212\240\345\233\272\345\267\245\345\205\267.md" "b/content/zh/docs/SecHarden/\345\256\211\345\205\250\345\212\240\345\233\272\345\267\245\345\205\267.md" new file mode 100644 index 0000000000000000000000000000000000000000..2bbdb274f843fe32099daf861205cdc5f70abff5 --- /dev/null +++ "b/content/zh/docs/SecHarden/\345\256\211\345\205\250\345\212\240\345\233\272\345\267\245\345\205\267.md" @@ -0,0 +1 @@ +# 安全加固工具 diff --git "a/content/zh/docs/SecHarden/\346\226\207\344\273\266\345\222\214\347\233\256\345\275\225\346\235\203\351\231\220\345\220\253\344\271\211.md" "b/content/zh/docs/SecHarden/\346\226\207\344\273\266\345\222\214\347\233\256\345\275\225\346\235\203\351\231\220\345\220\253\344\271\211.md" index afdbe2bcd0f557b36d8f42669d08629becc446f8..f590cb7fc4d1311a80519b63754268e6f096a74e 100644 --- "a/content/zh/docs/SecHarden/\346\226\207\344\273\266\345\222\214\347\233\256\345\275\225\346\235\203\351\231\220\345\220\253\344\271\211.md" +++ "b/content/zh/docs/SecHarden/\346\226\207\344\273\266\345\222\214\347\233\256\345\275\225\346\235\203\351\231\220\345\220\253\344\271\211.md" @@ -1,6 +1,6 @@ # 文件和目录权限含义 -Linux系统中文件和目录权限用于限定谁能通过何种方式对文件和目录进行访问和操作。文件和目录的访问权限分为只读、只写和可执行三种。 +Linux系统中文件和目录权限用于限定谁能通过何种方式对文件和目录进行访问和操作。文件和目录的访问权限分为只读,只写和可执行三种。 有三种不同类型的用户可对文件和目录进行访问: @@ -12,7 +12,7 @@ Linux系统中文件和目录权限用于限定谁能通过何种方式对文件 假设/usr/src的权限为755,将每位数字转化为二进制后为:111101101,含义如下: -- 左侧三个bit位"111"表示文件所有者的权限依次为:可读、可写、可执行。 -- 中间三个bit位"101"表示同组用户的权限依次为:可读、不可写、可执行。 -- 右侧三个bit位"101"表示其他用户的权限依次为:可读、不可写、可执行。 +- 左侧三个bit位111表示文件所有者的权限依次为:可读、可写、可执行。 +- 中间三个bit位101表示同组用户的权限依次为:可读、不可写、可执行。 +- 右侧三个bit位101表示其他用户的权限依次为:可读、不可写、可执行。 diff --git "a/content/zh/docs/SecHarden/\351\231\220\345\210\266sudo\345\221\275\344\273\244\347\232\204\344\275\277\347\224\250\346\235\203\351\231\220.md" "b/content/zh/docs/SecHarden/\351\231\220\345\210\266sudo\345\221\275\344\273\244\347\232\204\344\275\277\347\224\250\346\235\203\351\231\220.md" new file mode 100644 index 0000000000000000000000000000000000000000..2a7f2637e1e04de415e120d353237ca31c5e1f4b --- /dev/null +++ "b/content/zh/docs/SecHarden/\351\231\220\345\210\266sudo\345\221\275\344\273\244\347\232\204\344\275\277\347\224\250\346\235\203\351\231\220.md" @@ -0,0 +1,14 @@ +# 限制sudo命令的使用权限 + +## 说明 + +sudo命令用于普通用户以root权限执行命令。为了增强系统安全性,有必要对sudo命令的使用权进行控制,只允许roo使用sudo命令,限制其他帐户使用。 + +## 实现 + +sudo命令的使用控制通过修改/etc/sudoers文件实现,需要注释掉如下配置行: + +``` +#%wheel ALL=(ALL) ALL +``` + diff --git "a/content/zh/docs/Virtualization/IOThread\351\205\215\347\275\256.md" "b/content/zh/docs/Virtualization/IOThread\351\205\215\347\275\256.md" new file mode 100644 index 0000000000000000000000000000000000000000..a81c17cabe0eab0476b7d49cb8c556da670b6faf --- /dev/null +++ "b/content/zh/docs/Virtualization/IOThread\351\205\215\347\275\256.md" @@ -0,0 +1,59 @@ +# IOThread配置 + +## 概述 + +KVM平台上,对虚拟磁盘的读写在后端默认由QEMU主线程负责处理。这样会造成如下问题: + +- 虚拟机的I/O请求都由一个QEMU主线程进行处理,因此单线程的CPU利用率成为虚拟机I/O性能的瓶颈。 +- 虚拟机I/O在QEMU主线程处理时会持有QEMU全局锁\(qemu\_global\_mutex\),一旦I/O处理耗时较长,QEMU主线程长时间占有全局锁,会导致虚拟机vCPU无法正常调度,影响虚拟机整体性能及用户体验。 + +可以为virtio-blk磁盘或者virtio-scsi控制器配置IOThread属性,在QEMU后端单独开辟IOThread线程处理虚拟磁盘读写请求,IOThread线程和virtio-blk磁盘或virtio-scsi控制器可配置成一对一的映射关系,尽可能地减少对QEMU主线程的影响,提高虚拟机整体I/O性能,提升用户体验。 + +## 配置说明 + +使用IOThread线程处理虚拟机磁盘读写请求,需要修改虚拟机配置,这里给出具体的配置说明。 + +- 配置虚拟机高性能虚拟磁盘的总数。例如通过配置IOThread线程的总数为4: + + ``` + + VMName + 4194304 + 4194304 + 4 + 4 + ``` + +- 给virtio-blk磁盘配置IOThread属性。**<**iothread**\>**表示IOThread线程编号,编号从1开始配置,最大为的配置值,且编号不能重复使用。例如将编号为2的IOThread配置给virtio-blk磁盘使用: + + ``` + + + + +
+ + ``` + +- 给virtio-scsi控制器配置IOThread属性。例如将编号为2的IOThread配置给virtio-scsi控制器使用: + + ``` + + + +
+ + ``` + +- IOThread线程绑定物理CPU + + 虚拟磁盘IOThread线程的绑核配置,将IOThread线程绑定到用户指定的物理CPU范围内,不影响vCPU线程的资源占用诉求。表示IOThread线程编号,表示绑定的物理CPU编号。 + + ``` + + + + + ``` + + diff --git "a/content/zh/docs/Virtualization/Libvirt\351\211\264\346\235\203.md" "b/content/zh/docs/Virtualization/Libvirt\351\211\264\346\235\203.md" new file mode 100644 index 0000000000000000000000000000000000000000..b2523aea5f55fe83d99ebb076cc786b91113cda5 --- /dev/null +++ "b/content/zh/docs/Virtualization/Libvirt\351\211\264\346\235\203.md" @@ -0,0 +1,84 @@ +# Libvirt鉴权 + +## 简介 + +用户使用libvirt远程调用功能时,如果不进行任何鉴权校验,所有连接到主机所在网络的第三方程序都可以通过libvirt的远程调用操作虚拟机,存在安全隐患。为了提升系统安全性,openEuler提供了libvirt鉴权功能,即用户通过libvirt远程调用操作虚拟机前,必须经过身份校验,只有特定用户允许访问虚拟机,从而保护组网中的虚拟机。 + +## 开启libvirt鉴权 + +openEuler默认关闭libvirt远程调用功能,这里给出开启libvirt远程调用和libvirt鉴权功能的方法。 + +1. 登录主机。 +2. 修改libvirt服务配置文件/etc/libvirt/libvirtd.conf,开启libvirt远程调用和libvirt鉴权功能。例如使用基于SASL(Simple Authentication and Security Layer)协议的TCP远程调用配置参考如下: + + ``` + # 传输层安全协议,0表示关闭,1表示开启,由用户自行配置 + listen_tls = 0 + # 开启基于TCP的远程调用,开启libvirt远程调用和libvirt鉴权功能必须配置为1 + listen_tcp = 1 + # TCP远程调用所使用的协议,由用户自行配置,此处以sasl为例 + auth_tcp = "sasl" + ``` + +3. 修改/etc/sasl2/libvirt.conf配置文件,设置SASL认证机制和sasldb数据库。 + + ``` + # sasl协议的认证机制 + mech_list: digest-md5 + # 存放用户和用户密码的数据库 + sasldb_path: /etc/libvirt/passwd.db + ``` + +4. 添加用于SASL验证的用户并设置其密码,假设用户名为userName,命令参考如下: + + ``` + # saslpasswd2 -a libvirt userName + Password: + Again (for verification): + ``` + +5. 修改/etc/sysconfig/libvirtd配置文件,开启libvirt侦听选项。 + + ``` + LIBVIRTD_ARGS="--listen" + ``` + +6. 重启libvirtd服务,使修改生效。 + + ``` + # systemctl restart libvirtd + ``` + +7. 确认libvirt远程调用的鉴权功能是否生效。根据提示输入用户名和密码能够成功连接libvirt服务,说明开启成功。 + + ``` + # virsh -c qemu+tcp://192.168.0.1/system + Please enter your authentication name: openeuler + Please enter your password: + Welcome to virsh, the virtualization interactive terminal. + + Type: 'help' for help with commands + 'quit' to quit + + virsh # + ``` + + +## 管理SASL + +这里给出管理SASL用户的操作。 + +- 查询数据库中存在的用户 + + ``` + # sasldblistusers2 -f /etc/libvirt/passwd.db + user@localhost.localdomain: userPassword + ``` + +- 从数据库中删除用户user + + ``` + # saslpasswd2 -a libvirt -d user + ``` + + diff --git "a/content/zh/docs/Virtualization/PCI\347\233\264\351\200\232.md" "b/content/zh/docs/Virtualization/PCI\347\233\264\351\200\232.md" new file mode 100644 index 0000000000000000000000000000000000000000..6a5f81583fcbcbaaf51dc7a0a2ba2c039345dff4 --- /dev/null +++ "b/content/zh/docs/Virtualization/PCI\347\233\264\351\200\232.md" @@ -0,0 +1,84 @@ +# PCI直通 + +PCI直通是指将host上的物理PCI设备直接呈现给一台虚拟机,供虚拟机直接访问的一种使用方式。PCI直通使用了vfio设备直通方式,为虚拟机配置PCI直通的xml配置如下: + +``` + + + +
+ + +
+ +``` + +**表 1** PCI直通设备配置项 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

参数名

+

说明

+

取值

+

hostdev.source.address.domain

+

host OS上的PCI设备的domain号。

+

>=0

+

hostdev.source.address.bus

+

host OS上的PCI设备bus号。

+

>=1

+

hostdev.source.address.slot

+

host OS上的PCI设备的device号。

+

>=0

+

hostdev.source.address.function

+

host OS上的PCI设备的function号。

+

>=0

+

hostdev.driver.name

+

可选配置项,指定PCI直通的后端驱动。

+

vfio(默认配置项)

+

hostdev.rom

+

直通设备的ROM是否呈现给虚拟机。

+

可以配置为“on/off”,默认为“on”。

+
  • on:表示直通设备的ROM呈现给虚拟机,例如:直通网卡虚拟机需要从该网卡的PXE启动时,可以将该选项配置为“on”,HBA卡直通虚拟机需要从ROM中启动时可以将该选项配置为“on”。
  • off:表示直通设备的ROM不呈现给虚拟机。
+

hostdev.address type

+

PCI设备呈现的Guest内bdf号。

+

[0x03-0x1e](slot范围)

+

说明:

+
  • domain为域信息,bus为总线号,slot为插槽号,function为功能
  • 除了slot插槽号,这里其余均默认为0。
  • 第一个slot插槽号0x00被系统占用,第二个slot号0x01被IDE控制器和USB控制器占用,第三个slot号0x02被video占用。
  • 最后一个slot号0x1f被pvchannel占用。
+
+ +>![](public_sys-resources/icon-note.gif) **说明:** +>VFIO直通方式的最小直通单位是iommu\_group,host根据硬件上的ACS位,来划分iommu\_group。同一个iommu\_group中的设备只允许直通给同一台虚拟机(一个PCI设备上的若干个function,如果属于同一个iommu\_group,只允许直通给一个虚拟机使用)。 + diff --git "a/content/zh/docs/Virtualization/SR-IOV\347\233\264\351\200\232.md" "b/content/zh/docs/Virtualization/SR-IOV\347\233\264\351\200\232.md" new file mode 100644 index 0000000000000000000000000000000000000000..26845f952037a88ccf929b846115fd614aba0921 --- /dev/null +++ "b/content/zh/docs/Virtualization/SR-IOV\347\233\264\351\200\232.md" @@ -0,0 +1,171 @@ +# SR-IOV直通 + +## 概述 + +SR-IOV(Single Root I/O Virtualizaiton)是一种基于硬件的虚拟化解决方案,通过SR-IOV技术可以将一个PF(Physical Function)虚拟成多个VF(Virtual Function),每个VF都可以单独被直通给一个虚拟机,极大地提升了硬件资源利用率和虚拟机的I/O性能。一种典型的应用场景就是网卡SR-IOV设备直通,利用SR-IOV技术可以将一个物理网卡(PF)虚拟成多个VF网卡,再把VF直通给虚拟机使用。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>- SR-IOV需要物理硬件支持,使用SR-IOV前请确保要直通的硬件设备支持该能力,并且Host侧的设备驱动程序工作在SR-IOV模式下。 +>- 查询网卡具体型号的办法如下: +>例如下述回显,第一列为网卡的PCI号,19e5:1822为网卡的厂商号设备号。 +>``` +># lspci | grep Ether +>05:00.0 Ethernet controller: Device 19e5:1822 (rev 45) +>07:00.0 Ethernet controller: Device 19e5:1822 (rev 45) +>09:00.0 Ethernet controller: Device 19e5:1822 (rev 45) +>0b:00.0 Ethernet controller: Device 19e5:1822 (rev 45) +>81:00.0 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01) +>81:00.1 Ethernet controller: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection (rev 01) +>``` + +## 操作方法 + +配置SR-IOV直通网卡的操作步骤如下: + +1. 开启网卡的SR-IOV模式。 + 1. 请确保Guest OS有网卡供应商提供的VF驱动支持,否则Guest OS内VF无法正常工作。 + 2. 在host OS的BIOS中开启SMMU/IOMMU的支持。不同厂家服务器的开启方式可能不同,请参考各服务器的帮助文档。 + 3. HOST驱动配置,开启SR-IOV的VF模式。这里以Hi1822网卡为例,开启16个VF。 + + ``` + echo 16 > /sys/class/net/ethX/device/sriov_numvfs + ``` + +2. 获取PF和VF的PCI BDF信息。 + 1. 获取当前单板上的网卡资源列表,参考命令如下: + + ``` + # lspci | grep Eth + 03:00.0 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family (4*25GE) (rev 45) + 04:00.0 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family (4*25GE) (rev 45) + 05:00.0 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family (4*25GE) (rev 45) + 06:00.0 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family (4*25GE) (rev 45) + 7d:00.0 Ethernet controller: Huawei Technologies Co., Ltd. Device a222 (rev 20) + 7d:00.1 Ethernet controller: Huawei Technologies Co., Ltd. Device a222 (rev 20) + 7d:00.2 Ethernet controller: Huawei Technologies Co., Ltd. Device a221 (rev 20) + 7d:00.3 Ethernet controller: Huawei Technologies Co., Ltd. Device a221 (rev 20) + ``` + + 2. 查看VF的PCI BDF信息,参考命令如下: + + ``` + # lspci | grep "Virtual Function" + 03:00.1 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family Virtual Function (rev 45) + 03:00.2 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family Virtual Function (rev 45) + 03:00.3 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family Virtual Function (rev 45) + 03:00.4 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family Virtual Function (rev 45) + 03:00.5 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family Virtual Function (rev 45) + 03:00.6 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family Virtual Function (rev 45) + 03:00.7 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family Virtual Function (rev 45) + 03:01.0 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family Virtual Function (rev 45) + 03:01.1 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family Virtual Function (rev 45) + 03:01.2 Ethernet controller: Huawei Technologies Co., Ltd. Hi1822 Family Virtual Function (rev 45) + ``` + + 3. 选择一个可用的VF,根据其BDF信息将其配置写入虚拟机的配置文件中。以03:00.1设备为例,对应的bus号是03,slot号是00,function号是1。 + +3. 识别和管理PF/VF对应关系。 + 1. 识别PF对应的VF关系,以PF 03.00.0为例: + + ``` + # ls -l /sys/bus/pci/devices/0000\:03\:00.0/ + ``` + + 可下显示如下的软链接信息,根据信息可以获得其对应的VF编号(virtfnX)和PCI BDF号。 + + 2. 识别VF对应的PF关系,以VF 03:00.1为例: + + ``` + # ls -l /sys/bus/pci/devices/0000\:03\:00.1/ + ``` + + 可显示下述软连接信息,即可获得其对应PF的PCI BDF号。 + + ``` + lrwxrwxrwx 1 root root 0 Mar 28 22:44 physfn -> ../0000:03:00.0 + ``` + + 3. 获知PF/VF对应的网卡设备名称,例如: + + ``` + # ls /sys/bus/pci/devices/0000:03:00.0/net + eth0 + ``` + + 4. 设置VF的mac/vlan/qos信息,确保VF在直通之前处于UP状态。以VF 03:00.1为例,假设PF为eth0,VF编号为0。 + + ``` + # ip link set eth0 vf 0 mac 90:E2:BA:21:XX:XX # 设置mac地址 + # ifconfig eth0 up + # ip link set eth0 vf 0 rate 100 # 设置VF出口速率,单位Mbps + # ip link show eth0 # 查看mac/vlan/qos信息,确认设置成功 + ``` + +4. 挂载SR-IOV网卡到虚拟机中。 + + 创建虚拟机时,在虚拟机配置文件中增加SR-IOV直通的配置项。 + + ``` + + + +
+ + + + + + ``` + + **表 1** SR-IOV配置选项说明 + + + + + + + + + + + + + + + + + + + + + + + + +

参数名

+

说明

+

取值

+

hostdev.managed

+

libvirt处理PCI设备的两种模式。

+

no:默认配置,表示直通设备由用户自行管理。

+

yes:表示直通设备由libvirt管理。SR-IOV直通场景需要配置为yes。

+

hostdev.source.address.bus

+

host OS上的PCI设备bus号。

+

>=1

+

hostdev.source.address.slot

+

host OS上的PCI设备device号。

+

>=0

+

hostdev.source.address.function

+

host OS上的PCI设备function号。

+

>=0

+
+ + >![](public_sys-resources/icon-note.gif) **说明:** + >关闭SR-IOV功能。 + >在虚拟机使用完毕后(虚拟机关机,所有的VF均没有在使用中的时候),若要关闭SR-IOV功能。执行操作如下: + >这里以Hi1822网卡(eth0对应PF的网口名称)为例: + >``` + >echo 0 > /sys/class/net/eth0/device/sriov_numvfs + >``` + + diff --git "a/content/zh/docs/Virtualization/XML\351\205\215\347\275\256\346\226\207\344\273\266\347\244\272\344\276\213.md" "b/content/zh/docs/Virtualization/XML\351\205\215\347\275\256\346\226\207\344\273\266\347\244\272\344\276\213.md" index 61438cac966e7b51699dc2b89b6a4ca177e7eedc..a668c11afa6430fb5f22afd6732474139db9f146 100644 --- "a/content/zh/docs/Virtualization/XML\351\205\215\347\275\256\346\226\207\344\273\266\347\244\272\344\276\213.md" +++ "b/content/zh/docs/Virtualization/XML\351\205\215\347\275\256\346\226\207\344\273\266\347\244\272\344\276\213.md" @@ -2,11 +2,11 @@ ## 概述 -本节给出两个基本的虚拟机XML配置文件示例,供用户参考。 +本节给出两个基本的AArch64虚拟机和一个x86\_64虚拟机的XML配置文件示例,供用户参考。 ## 示例一 -一个包含基本元素的XML配置文件,其内容示例如下: +一个包含基本元素的AArch64架构虚拟机的XML配置文件,其内容示例如下: ``` @@ -14,7 +14,7 @@ 8 4 - hvm + hvm /usr/share/edk2/aarch64/QEMU_EFI-pflash.raw /var/lib/libvirt/qemu/nvram/openEulerVM.fd @@ -40,7 +40,7 @@ - + @@ -64,7 +64,7 @@ ## 示例二 -一个包含基本元素及总线元素的XML配置文件,其配置示例如下: +一个包含基本元素及总线元素AArch64架构虚拟机的XML配置文件,其配置示例如下: ``` @@ -72,7 +72,7 @@ 8 4 - hvm + hvm /usr/share/edk2/aarch64/QEMU_EFI-pflash.raw /var/lib/libvirt/qemu/nvram/openEulerVM.fd @@ -98,7 +98,85 @@ - + + + + + + + +
+ + +
+ + + +
+ + +
+ + +
+ + +
+ + +
+ + + + + + + + + + + + +``` + +## 示例三 + +一个包含基本元素及总线元素x86\_64架构虚拟机的XML配置文件,其配置示例如下: + +``` + + openEulerVM + 8 + 4 + + hvm + /usr/share/edk2/ovmf/OVMF.fd + /usr/share/edk2/ovmf/OVMF_CODE.fd + + + + + + + + 1 + + destroy + restart + restart + + /usr/libexec/qemu-kvm + + + + + + + + + diff --git "a/content/zh/docs/Virtualization/figures/KVM\346\236\266\346\236\204\345\233\276.png" "b/content/zh/docs/Virtualization/figures/KVM\346\236\266\346\236\204\345\233\276.png" index 3ef69177b0b0e0d35c33b9b69c5402aa6f1a1e78..62b13a899ef6eb7ab3e6b2d4a754396734e3b6b3 100644 Binary files "a/content/zh/docs/Virtualization/figures/KVM\346\236\266\346\236\204\345\233\276.png" and "b/content/zh/docs/Virtualization/figures/KVM\346\236\266\346\236\204\345\233\276.png" differ diff --git a/content/zh/docs/Virtualization/figures/zh-cn_image_0183148772.png b/content/zh/docs/Virtualization/figures/zh-cn_image_0183148772.png deleted file mode 100644 index 8d5a343524e14d11a3e2a94be4066fbb2d20599e..0000000000000000000000000000000000000000 Binary files a/content/zh/docs/Virtualization/figures/zh-cn_image_0183148772.png and /dev/null differ diff --git a/content/zh/docs/Virtualization/figures/zh-cn_image_0189777265.png b/content/zh/docs/Virtualization/figures/zh-cn_image_0189777265.png deleted file mode 100644 index f187c3d3de35a19cf836f11dc1cc98c9a85787a9..0000000000000000000000000000000000000000 Binary files a/content/zh/docs/Virtualization/figures/zh-cn_image_0189777265.png and /dev/null differ diff --git "a/content/zh/docs/Virtualization/figures/\347\212\266\346\200\201\350\275\254\346\215\242\345\233\276.png" "b/content/zh/docs/Virtualization/figures/\347\212\266\346\200\201\350\275\254\346\215\242\345\233\276.png" index afe3885705f54703381f8f7d3c7a37b9d0618eed..e29d998e78064672bfc3641c26c0eb086d585000 100644 Binary files "a/content/zh/docs/Virtualization/figures/\347\212\266\346\200\201\350\275\254\346\215\242\345\233\276.png" and "b/content/zh/docs/Virtualization/figures/\347\212\266\346\200\201\350\275\254\346\215\242\345\233\276.png" differ diff --git "a/content/zh/docs/Virtualization/figures/\350\231\232\346\213\237\345\214\226\346\236\266\346\236\204.png" "b/content/zh/docs/Virtualization/figures/\350\231\232\346\213\237\345\214\226\346\236\266\346\236\204.png" index f187c3d3de35a19cf836f11dc1cc98c9a85787a9..bd90a00d1fbe4d8356ec0dec3106c10dafd46950 100644 Binary files "a/content/zh/docs/Virtualization/figures/\350\231\232\346\213\237\345\214\226\346\236\266\346\236\204.png" and "b/content/zh/docs/Virtualization/figures/\350\231\232\346\213\237\345\214\226\346\236\266\346\236\204.png" differ diff --git "a/content/zh/docs/Virtualization/figures/\350\231\232\346\213\237\347\275\221\347\273\234\347\273\223\346\236\204\345\233\276.png" "b/content/zh/docs/Virtualization/figures/\350\231\232\346\213\237\347\275\221\347\273\234\347\273\223\346\236\204\345\233\276.png" index df08bb408415d539ce524478337b4c7a76d49e58..af5b2c44fe451371fb16115df15ae8ea8a723e28 100644 Binary files "a/content/zh/docs/Virtualization/figures/\350\231\232\346\213\237\347\275\221\347\273\234\347\273\223\346\236\204\345\233\276.png" and "b/content/zh/docs/Virtualization/figures/\350\231\232\346\213\237\347\275\221\347\273\234\347\273\223\346\236\204\345\233\276.png" differ diff --git a/content/zh/docs/Virtualization/halt-polling.md b/content/zh/docs/Virtualization/halt-polling.md index 0e35339eb96be325748719870b41ea31fb3eb180..b1052024f1c71464ccb7d2b48a2d90827020507c 100644 --- a/content/zh/docs/Virtualization/halt-polling.md +++ b/content/zh/docs/Virtualization/halt-polling.md @@ -2,14 +2,16 @@ ## 概述 -在计算资源充足的情况下,为使虚拟机获得接近物理机的性能,可以使用halt-polling特性。此时vCPU因halt触发vm-exit后,并不会立即调用scheduler,把计算资源让给其他主机侧进程;而是会根据配置先polling一段时间,若该vCPU在polling期间被唤醒,那么vCPU可以直接vm-entry执行Guest任务,而不用从主机侧的idle进程唤醒,减少了调度流程的开销,一定程度上提高了虚拟机系统的性能。 +在计算资源充足的情况下,为使虚拟机获得接近物理机的性能,可以使用halt-polling特性。没有使用halt-polling特性时,当vCPU空闲退出后,主机会把CPU资源分配给其他进程使用。当主机开启halt-polling特性时,虚拟机vCPU处于空闲时会polling一段时间,polling的时间由具体配置决定。若该vCPU在polling期间被唤醒,可以不从主机侧调度而继续运行,减少了调度流程的开销,从而在一定程度上提高了虚拟机系统的性能。 >![](public_sys-resources/icon-note.gif) **说明:** >halt-polling的机制保证虚拟机的vCPU线程的及时响应,但在虚拟机空载的时候,主机侧也会polling,导致主机看到vCPU所在CPU占用率比较高,而实际虚拟机内部CPU占用率并不高。 -## 操作步骤 +## 操作指导 -通过sysfs可以动态修改vCPU用于halt-polling的时间,默认配置为500000,单位为ns。 +系统默认开启了halt-polling特性,polling的时间默认为500000ns。用户可以通过文件halt\_poll\_ns内容动态修改vCPU用于halt-polling的时间,单位为ns。 + +例如设置polling时间为400000的命令如下: ``` # echo 400000 > /sys/module/kvm/parameters/halt_poll_ns diff --git "a/content/zh/docs/Virtualization/kworker\351\232\224\347\246\273\347\273\221\345\256\232.md" "b/content/zh/docs/Virtualization/kworker\351\232\224\347\246\273\347\273\221\345\256\232.md" new file mode 100644 index 0000000000000000000000000000000000000000..2ae0aadd1b05399d9c91dc84a01857746e4b212b --- /dev/null +++ "b/content/zh/docs/Virtualization/kworker\351\232\224\347\246\273\347\273\221\345\256\232.md" @@ -0,0 +1,14 @@ +# kworker隔离绑定 + +## 概述 + +kworker是Linux内核实现的per-CPU线程,用来执行系统中的workqueue请求。kworker线程会和vCPU线程争抢物理核资源,导致虚拟化业务性能抖动。为了使虚拟机能够稳定的运行,减少kworker线程对虚拟机的干扰,可以将主机上的kworker线程绑定到特定的CPU上运行。 + +## 操作步骤 + +用户可以通过修改/sys/devices/virtual/workqueue/cpumask文件,将workqueue中的任务绑定到cpumask中指定的CPU上。cpumask中的掩码以十六进制表示,例如将kworker绑定到CPU0\~CPU7上,对应掩码为ff,修改的命令如下: + +``` +# echo ff > /sys/devices/virtual/workqueue/cpumask +``` + diff --git a/content/zh/docs/Virtualization/qemu-ga.md b/content/zh/docs/Virtualization/qemu-ga.md new file mode 100644 index 0000000000000000000000000000000000000000..b4cd454a5dbe7444ddb1122f32a3f2dfe2798f2c --- /dev/null +++ b/content/zh/docs/Virtualization/qemu-ga.md @@ -0,0 +1,63 @@ +# qemu-ga + +## 概述 + +qemu-ga(Qemu Guest Agent)它是运行在虚拟机内部的守护进程,它允许用户在host OS上通过QEMU提供带外通道实现对guest OS的多种管理操作:包括文件操作(open、read、write、close,seek、flush等)、内部关机、虚拟机休眠(suspend-disk、suspend-ram、suspend-hybrid),获取虚拟机内部的信息(包括内存,CPU,网卡,OS等相关信息 )等。 + +在一些对安全要求较高的使用场景,为了防止虚拟机内部信息泄露,qemu-ga提供了黑名单功能,用户可以通过黑名单选择性屏蔽qemu-ga提供的部分功能。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>qemu-ga对应的安装包是qemu-guest-agent-xx.rpm,openEuler默认不安装。xx为实际版本号。 + +## 操作方法 + +添加qemu-ga黑名单的操作步骤如下: + +1. 登录虚拟机,确定qemu-guest-agent服务存在且处于运行状态。 + + ``` + # systemctl status qemu-guest-agent |grep Active + Active: active (running) since Wed 2018-03-28 08:17:33 CST; 9h ago + ``` + +2. 查询qemu-ga哪些命令可以加入黑名单: + + ``` + # qemu-ga --blacklist ? + guest-sync-delimited + guest-sync + guest-ping + guest-get-time + guest-set-time + guest-info + ... + ``` + + +1. 设置黑名单。通过修改/usr/lib/systemd/system/qemu-guest-agent.service,将需要屏蔽的命令添加到该文件的--blacklist中,不同命令使用空格分隔。例如将guest-file-open和guest-file-close命令加入黑名单的配置参考如下: + + ``` + [Service] + ExecStart=-/usr/bin/qemu-ga \ + --blacklist=guest-file-open guest-file-close + ``` + + +1. 重启qemu-guest-agent服务: + + ``` + # systemctl daemon-reload + # systemctl restart qemu-guest-agent + ``` + +2. 确认虚拟机开启qemu-ga黑名单功能是否生效,即qemu-ga进程配置的参数--blacklist是否正确。 + + ``` + # ps -ef|grep qemu-ga|grep -E "blacklist=|b=" + root 727 1 0 08:17 ? 00:00:00 /usr/bin/qemu-ga --method=virtio-serial --path=/dev/virtio-ports/org.qemu.guest_agent.0 --blacklist=guest-file-open guest-file-close guest-file-read guest-file-write guest-file-seek guest-file-flush -F/etc/qemu-ga/fsfreeze-hook + ``` + + >![](public_sys-resources/icon-note.gif) **说明:** + >更多关于qemu-ga的资料可以参见[https://wiki.qemu.org/Features/GuestAgent](https://wiki.qemu.org/Features/GuestAgent)。 + + diff --git "a/content/zh/docs/Virtualization/sVirt\344\277\235\346\212\244.md" "b/content/zh/docs/Virtualization/sVirt\344\277\235\346\212\244.md" new file mode 100644 index 0000000000000000000000000000000000000000..feba81008ab7dc4d707c299e6235b30dd16cb12a --- /dev/null +++ "b/content/zh/docs/Virtualization/sVirt\344\277\235\346\212\244.md" @@ -0,0 +1,62 @@ +# sVirt保护 + +## 概述 + +在只使用自由访问控制DAC(Discretionary Acces Control)策略的虚拟化环境中,主机上运行的恶意虚拟机可能存在攻击hypervisor或其他虚拟机的情况。为了提升虚拟化场景的安全性,openEuler使用了sVirt保护。sVirt是基于SELinux,适用于KVM虚拟化场景的安全防护技术。虚拟机本质是主机操作系统上的普通进程,sVirt机制在hypervisor将虚拟机对应的QEMU进程进行SELinux标记分类,除了使用type表示虚拟化专有进程和文件,还用不同的的category(在seclevel区间)表示不同虚拟机,每个虚拟机只能访问自身相同category的文件设备,防止虚拟机访问非授权的主机或其他虚拟机的文件和设备,从而防止虚拟机逃逸,提升主机和虚拟机的安全性。 + +## 开启sVirt保护 + +**一、开启主机的SELinux** + +1. 登录主机。 +2. 开启主机SELinux功能。 + 1. 修改/boot/grub2/grub.cfg,将selinux设置为1。 + + ``` + selinux=1 + ``` + + 2. 修改/etc/selinux/config,将SELINUX模式设置为enforcing。 + + ``` + SELINUX=enforcing + ``` + +3. 重启主机。 + + ``` + # reboot + ``` + + +**二、创建开启sVirt功能的虚拟机** + +1. 虚拟机配置文件中添加如下配置: + + ``` + + ``` + + 或确认没有下述配置: + + ``` + + ``` + +2. 创建虚拟机。 + + ``` + # virsh define openEulerVM.xml + ``` + + +**三、确认sVirt开启成功** + +执行下述命令检查运行中的虚拟机QEMU进程是否已经启用sVirt防护,若存在"svirt\_t:s0:c"表示已经启用sVirt防护。 + +``` +# ps -eZ|grep qemu |grep "svirt_t:s0:c" +system_u:system_r:svirt_t:s0:c200,c947 11359 ? 00:03:59 qemu-kvm +system_u:system_r:svirt_t:s0:c427,c670 13790 ? 19:02:07 qemu-kvm +``` + diff --git a/content/zh/docs/Virtualization/zh-cn_bookmap_0183145741.md b/content/zh/docs/Virtualization/zh-cn_bookmap_0183145741.md deleted file mode 100644 index 699caf794f8fd47fbf8794763c8e51559b019874..0000000000000000000000000000000000000000 --- a/content/zh/docs/Virtualization/zh-cn_bookmap_0183145741.md +++ /dev/null @@ -1,77 +0,0 @@ -# 虚拟化用户指南 - -- [法律声明](法律声明.md) -- [前言](前言.md) -- [认识虚拟化](认识虚拟化.md) -- [安装指南](安装指南.md) - - [最低硬件要求](最低硬件要求.md) - - [安装虚拟化核心组件](安装虚拟化核心组件.md) - - [安装方法](安装方法.md) - - [验证安装是否成功](验证安装是否成功.md) - - -- [用户和管理员指南](用户和管理员指南.md) - - [准备环境](准备环境.md) - - [准备虚拟机镜像](准备虚拟机镜像.md) - - [准备虚拟机网络](准备虚拟机网络.md) - - [准备UEFI引导工具集EDK II](准备UEFI引导工具集EDK-II.md) - - - [虚拟机配置](虚拟机配置.md) - - [总体介绍](总体介绍.md) - - [虚拟机描述](虚拟机描述.md) - - [虚拟CPU和虚拟内存](虚拟CPU和虚拟内存.md) - - [配置虚拟设备](配置虚拟设备.md) - - [存储设备](存储设备.md) - - [网络设备](网络设备.md) - - [总线配置](总线配置.md) - - [其它常用设备](其它常用设备.md) - - - [其他常见配置项](其他常见配置项.md) - - [XML配置文件示例](XML配置文件示例.md) - - - [管理虚拟机](管理虚拟机.md) - - [虚拟机生命周期](虚拟机生命周期.md) - - [总体介绍](总体介绍-0.md) - - [管理命令](管理命令.md) - - [示例](示例.md) - - - [在线修改虚拟机配置](在线修改虚拟机配置.md) - - [查询虚拟机信息](查询虚拟机信息.md) - - [登录虚拟机](登录虚拟机.md) - - [使用VNC密码登录](使用VNC密码登录.md) - - [配置VNC TLS登录](配置VNC-TLS登录.md) - - - - [热迁移虚拟机](热迁移虚拟机.md) - - [总体介绍](总体介绍-1.md) - - [应用场景](应用场景.md) - - [注意事项和约束限制](注意事项和约束限制.md) - - [热迁移操作](热迁移操作.md) - - - [管理系统资源](管理系统资源.md) - - [管理虚拟CPU](管理虚拟CPU.md) - - [CPU份额](CPU份额.md) - - [绑定qemu进程至物理CPU](绑定qemu进程至物理CPU.md) - - [调整虚拟CPU绑定关系](调整虚拟CPU绑定关系.md) - - - [管理虚拟内存](管理虚拟内存.md) - - [NUMA简介](NUMA简介.md) - - [配置Host NUMA](配置Host-NUMA.md) - - [配置Guest NUMA](配置Guest-NUMA.md) - - - - [管理设备](管理设备.md) - - [配置虚拟机PCIe控制器](配置虚拟机PCIe控制器.md) - - [管理虚拟磁盘](管理虚拟磁盘.md) - - [管理虚拟网卡](管理虚拟网卡.md) - - [配置虚拟串口](配置虚拟串口.md) - - - [最佳实践](最佳实践.md) - - [halt-polling](halt-polling.md) - - [内存大页](内存大页.md) - - -- [附录](附录.md) - - [术语和缩略语](术语和缩略语.md) - - diff --git "a/content/zh/docs/Virtualization/\344\275\223\347\263\273\346\236\266\346\236\204\347\233\270\345\205\263\351\205\215\347\275\256.md" "b/content/zh/docs/Virtualization/\344\275\223\347\263\273\346\236\266\346\236\204\347\233\270\345\205\263\351\205\215\347\275\256.md" new file mode 100644 index 0000000000000000000000000000000000000000..f9c49c6104b9b4c4dd88a46626eb4c5f40503e87 --- /dev/null +++ "b/content/zh/docs/Virtualization/\344\275\223\347\263\273\346\236\266\346\236\204\347\233\270\345\205\263\351\205\215\347\275\256.md" @@ -0,0 +1,59 @@ +# 体系架构相关配置 + +## 概述 + +XML中还有一部分体系架构相关的配置,这部分配置包括主板,CPU,一些与体系架构相关的feature,本章节主要介绍它们的配置和含义。 + +## 元素介绍 + +- os:定义虚拟机启动参数。 + + 子元素type:指定虚拟机类型,属性arch表示架构类型,如aarch64,属性machine表示虚拟机的芯片组类型,虚拟机支持的芯片组可以通过 **qemu-kvm -machine ?**命令查询,如AArch64结构使用“virt”类型。 + + 子元素loader:指定加载固件 ,如配置EDK提供的UEFI文件,属性readonly表示是否是只读文件,值为“yes”或“no”,属性type表示loader的类型,常用的值有“rom”、“pflash”。 + + 子元素nvram:指定nvram文件路径,用于存储UEFI启动配置。 + + +- features:hypervisor支持控制一些虚拟机CPU/machine的特性,如高级电源管理接口“acpi”,ARM处理器指定GICv3中断控制器等。 + +## AArch64架构配置示例 + +虚拟机的类型为AArch64结构,使用virt芯片组,利用UEFI启动的虚拟机配置如下: + +``` + + ... + + hvm + /usr/share/edk2/aarch64/QEMU_EFI-pflash.raw + /var/lib/libvirt/qemu/nvram/openEulerVM.fd + + ... + +``` + +为虚拟机配置ACPI和GIC V3中断控制器特性。 + +``` + + + + +``` + +## x86\_64架构配置示例 + +x86\_64架构支持BIOS和UEFI两种启动方式,如果不配置loader,则使用默认启动方式BIOS。这里给出启动方式为UEFI、芯片组为q35的配置参考。 + +``` + + ... + + hvm + /usr/share/edk2/ovmf/OVMF.fd + + ... + +``` + diff --git "a/content/zh/docs/Virtualization/\345\205\266\344\273\226\345\270\270\350\247\201\351\205\215\347\275\256\351\241\271.md" "b/content/zh/docs/Virtualization/\345\205\266\344\273\226\345\270\270\350\247\201\351\205\215\347\275\256\351\241\271.md" index e5d0b0be029cda84ad4da9509c15a3d2d042a25f..f5b6775a184f73fd3479cf35f228a837f266527e 100644 --- "a/content/zh/docs/Virtualization/\345\205\266\344\273\226\345\270\270\350\247\201\351\205\215\347\275\256\351\241\271.md" +++ "b/content/zh/docs/Virtualization/\345\205\266\344\273\226\345\270\270\350\247\201\351\205\215\347\275\256\351\241\271.md" @@ -1,4 +1,4 @@ -# 其他常见配置项 +# 其他常见配置项 ## 概述 @@ -6,17 +6,8 @@ ## 元素介绍 -- os:定义虚拟机启动参数。 - - 子元素type:指定虚拟机类型,属性arch表示架构类型,如aarch64,属性machine表示虚拟机的芯片组类型,如aarch64结构使用“virt-4.0”类型。 - - 子元素loader:指定加载固件 ,如配置EDK提供的EFI文件,属性readonly表示是否是只读文件,值为“yes”或“no”,属性type表示loader的类型,常用的值有“rom”、“pflash”。 - - 子元素nvram:指定nvram文件路径,用于存储EFI启动配置。 - - -- features:Hypervisor支持控制一些虚拟机CPU/machine的特性,如高级电源管理接口“acpi”,ARM处理器指定GICv3中断控制器等。 - iothreads:指定iothread数量,可以用于加速存储设备性能。 + - on\_poweroff:虚拟机关闭时采取的动作。 - on\_reboot:虚拟机重启时采取的动作。 - on\_crash:虚拟机崩溃时采取的动作。 @@ -27,29 +18,6 @@ ## 配置示例 -虚拟机的类型为aarch64结构,使用virt-4.0芯片组,利用UEFI启动的虚拟机配置如下: - -``` - - ... - - hvm - /usr/share/edk2/aarch64/QEMU_EFI-pflash.raw - /var/lib/libvirt/qemu/nvram/openEulerVM.fd - - ... - -``` - -为虚拟机配置ACPI和GIC V3中断控制器特性。 - -``` - - - - -``` - 为虚拟机配置两个iothread,用于加速存储设备性能。 ``` diff --git "a/content/zh/docs/Virtualization/\345\205\266\345\256\203\345\270\270\347\224\250\350\256\276\345\244\207.md" "b/content/zh/docs/Virtualization/\345\205\266\345\256\203\345\270\270\347\224\250\350\256\276\345\244\207.md" index 0282dc1ef9e385231e8af83a40c9842018db57b9..8bab0521db366c338ec2fc225c52e60938aa5c9e 100644 --- "a/content/zh/docs/Virtualization/\345\205\266\345\256\203\345\270\270\347\224\250\350\256\276\345\244\207.md" +++ "b/content/zh/docs/Virtualization/\345\205\266\345\256\203\345\270\270\347\224\250\350\256\276\345\244\207.md" @@ -13,10 +13,20 @@ - video:媒体设备 - 属性type:媒体设备类型。常用属性值为virtio。 + 属性type:媒体设备类型。AArch架构常用属性值为virtio,x86\_64架构通常使用属性值为vga或cirrus。 子元素model:video的子元素,用于指定媒体设备类型。 + 在model元素中,type属性为vga表示配置VGA类型显卡,vram属性代表显存大小,单位默认为KB。 + + 例如:给x86\_64架构虚拟机配置16MB的VGA类型的显卡,XML示例如下,其中vram属性代表显存大小,单位默认为KB: + + ``` + + ``` + - input:输出设备 属性type:指定输出设备类型。常用属性值为tabe、keyboard,分别表示输出设备为写字板、键盘。 diff --git "a/content/zh/docs/Virtualization/\345\206\205\345\255\230\345\244\247\351\241\265.md" "b/content/zh/docs/Virtualization/\345\206\205\345\255\230\345\244\247\351\241\265.md" index 687e5cf41835eabde8eb65de17007f1fbdbf67c4..d4f3b83a936d83ed5370b5e0a00c7fffbbcd6099 100644 --- "a/content/zh/docs/Virtualization/\345\206\205\345\255\230\345\244\247\351\241\265.md" +++ "b/content/zh/docs/Virtualization/\345\206\205\345\255\230\345\244\247\351\241\265.md" @@ -11,12 +11,12 @@ - 透明大页 - openEuler默认开启透明大页模式(THP),虚拟机分配内存时自动选择可用的2M连续页,同时自动完成大页的拆分合并,当没有可用的2M连续页时,它会选择可用的4K页面进行分配。透明大页的好处是不需要用户感知,同时能尽量使用2M大页以提升内存访问性能。 + 如果开启透明大页模式(THP)(openEuler默认关闭,需要手动打开),虚拟机分配内存时自动选择可用的2M连续页,同时自动完成大页的拆分合并,当没有可用的2M连续页时,它会选择可用的4K页面进行分配。透明大页的好处是不需要用户感知,同时能尽量使用2M大页以提升内存访问性能。 在虚拟机完全使用静态大页的场景下,可以通过关闭透明大页的方法,减少宿主机操作系统的开销,以便虚拟机获得更稳定的性能。 -## 操作步骤 +## 操作指导 - 使用静态大页 diff --git "a/content/zh/docs/Virtualization/\345\207\206\345\244\207UEFI\345\274\225\345\257\274\345\267\245\345\205\267\351\233\206EDK-II.md" "b/content/zh/docs/Virtualization/\345\207\206\345\244\207UEFI\345\274\225\345\257\274\345\267\245\345\205\267\351\233\206EDK-II.md" deleted file mode 100644 index 9f2ad02e21c369a4e598f041e76c7d1908f00fb5..0000000000000000000000000000000000000000 --- "a/content/zh/docs/Virtualization/\345\207\206\345\244\207UEFI\345\274\225\345\257\274\345\267\245\345\205\267\351\233\206EDK-II.md" +++ /dev/null @@ -1,35 +0,0 @@ -# 准备UEFI引导工具集EDK II - -## 概述 - -统一的可扩展固件接口UEFI(Unified Extensible Firmware Interface)是一种全新类型的接口标准,用于开机自检、引导操作系统的启动,是传统BIOS的一种替代方案。EDK II是一套实现了UEFI标准的开源代码,在虚拟化场景中,通常利用EDK II工具集,通过UEFI的方式启动虚拟机。使用EDK II工具需要在虚拟机启动之前安装对应的软件包 ,本节介绍EDK II的安装方法。 - -## 安装方法 - -安装工具集EDK II的操作步骤如下: - -1. 安装edk软件包,命令如下: - - ``` - # yum install -y edk2-aarch64 - ``` - -2. 查询edk软件是否安装成功,命令如下: - - ``` - # rpm -qi edk2-aarch64 - ``` - - 若edk软件安装成功,命令和回显如下: - - ``` - # rpm -qi edk2-aarch64 - Name : edk2-aarch64 - Version : 20180815gitcb5f4f45ce - Release : 1.oe3 - Architecture: noarch - Install Date: Mon 22 Jul 2019 04:52:33 PM CST - Group : Applications/Emulators - ``` - - diff --git "a/content/zh/docs/Virtualization/\345\207\206\345\244\207\345\274\225\345\257\274\345\233\272\344\273\266.md" "b/content/zh/docs/Virtualization/\345\207\206\345\244\207\345\274\225\345\257\274\345\233\272\344\273\266.md" new file mode 100644 index 0000000000000000000000000000000000000000..99777de0f484dcfb1ce8de6d0d1b2e67cd526fad --- /dev/null +++ "b/content/zh/docs/Virtualization/\345\207\206\345\244\207\345\274\225\345\257\274\345\233\272\344\273\266.md" @@ -0,0 +1,62 @@ +# 准备引导固件 + +## 概述 + +针对不同的架构,引导的方式有所差异。x86支持UFEI(Unified Extensible Firmware Interface)和BIOS方式启动,AArch64仅支持UFEI方式启动。openEuler默认已安装BIOS启动对应的引导文件,不需要用户额外操作。所以这里仅介绍UEFI启动方式的安装方法。 + +统一的可扩展固件接口UEFI是一种全新类型的接口标准,用于开机自检、引导操作系统的启动,是传统BIOS的一种替代方案。EDK II是一套实现了UEFI标准的开源代码,在虚拟化场景中,通常利用EDK II工具集,通过UEFI的方式启动虚拟机。使用EDK II工具需要在虚拟机启动之前安装对应的软件包 ,本节介绍EDK II的安装方法。 + +## 安装方法 + +如果使用UEFI方式引导,需要安装工具集EDK II,AArch64架构对应的安装包为edk2-aarch64,x86架构对应的安装包为edk2-ovmf。这里以AArch64架构为例,给出具体的安装方法,x86架构仅需将edk2-aarch64替换为edk2-ovmf。 + +1. 安装edk软件包,命令如下: + + 在AArch64架构下edk2的包名为edk2-aarch64 + + ``` + # yum install -y edk2-aarch64 + ``` + + 在x86\_64架构下edk2的包名为edk2-ovmf + + ``` + # yum install -y edk2-ovmf + ``` + +2. 查询edk软件是否安装成功,命令如下: + + 在AArch64架构下查询如下 + + ``` + # rpm -qi edk2-aarch64 + ``` + + 若edk软件安装成功,回显类似如下: + + ``` + Name : edk2-aarch64 + Version : 20180815gitcb5f4f45ce + Release : 1.oe3 + Architecture: noarch + Install Date: Mon 22 Jul 2019 04:52:33 PM CST + Group : Applications/Emulators + ``` + + 在x86\_64架构下查询如下 + + ``` + # rpm -qi edk2-ovmf + ``` + + 若edk软件安装成功,回显类似如下: + + ``` + Name : edk2-ovmf + Version : 201908 + Release : 6.oe1 + Architecture: noarch + Install Date: Thu 19 Mar 2020 09:09:06 AM CST + ``` + + diff --git "a/content/zh/docs/Virtualization/\345\207\206\345\244\207\347\216\257\345\242\203.md" "b/content/zh/docs/Virtualization/\345\207\206\345\244\207\347\216\257\345\242\203.md" index 8e06c1d03583b2be2672d92d6ab7279018c89596..043312ef95d569b210f02576a862853b2b9db937 100644 --- "a/content/zh/docs/Virtualization/\345\207\206\345\244\207\347\216\257\345\242\203.md" +++ "b/content/zh/docs/Virtualization/\345\207\206\345\244\207\347\216\257\345\242\203.md" @@ -1,2 +1 @@ # 准备环境 - diff --git "a/content/zh/docs/Virtualization/\345\255\230\345\202\250\345\277\253\347\205\247.md" "b/content/zh/docs/Virtualization/\345\255\230\345\202\250\345\277\253\347\205\247.md" new file mode 100644 index 0000000000000000000000000000000000000000..062115bfa084f56d0871c87e3661112c8e04efb4 --- /dev/null +++ "b/content/zh/docs/Virtualization/\345\255\230\345\202\250\345\277\253\347\205\247.md" @@ -0,0 +1,41 @@ +# 存储快照 + +## 概述 + +虚拟机在使用过程中可能由于病毒对系统的破坏、系统文件被误删除或误格式化等原因造成虚拟机系统损坏导致系统无法启动。为了使损坏的系统快速恢复,openEuler提供了存储快照功能。openEuler可以在用户不感知的情况下制作虚拟机在某一时刻的快照(制作通常指需要几秒钟),该快照能帮助用户将磁盘快速恢复到某一时刻的状态,例如系统损坏后能快速恢复系统,从而提升系统可靠性。 + +>![](public_sys-resources/icon-note.gif) **说明:** +>当前存储快照只支持raw、qcow2格式镜像,不支持block块设备。 + +## 操作步骤 + +制作虚拟机存储快照的操作步骤如下: + +1. 登录主机,通过virsh domblklist命令查询虚拟机使用的磁盘。 + + ``` + # virsh domblklist openEulerVM + Target Source + --------------------------------------------- + vda /mnt/openEuler-image.qcow2 + ``` + + +1. 创建虚拟机磁盘快照_openEuler-snapshot1.qcow2_,命令及回显如下: + + ``` + # virsh snapshot-create-as --domain openEulerVM --disk-only --diskspec vda,snapshot=external,file=/mnt/openEuler-snapshot1.qcow2 --atomic + Domain snapshot 1582605802 created + ``` + + +1. 磁盘快照查询操作。 + + ``` + # virsh snapshot-list openEulerVM + Name Creation Time State + --------------------------------------------------------- + 1582605802 2020-02-25 12:43:22 +0800 disk-snapshot + ``` + + diff --git "a/content/zh/docs/Virtualization/\345\255\230\345\202\250\350\256\276\345\244\207.md" "b/content/zh/docs/Virtualization/\345\255\230\345\202\250\350\256\276\345\244\207.md" index a7a3bddf1f93613bd7caf1cb8216958a2e3840c9..dc2e7fd1f4a60be8cc1596d68ef0d6d4c325b660 100644 --- "a/content/zh/docs/Virtualization/\345\255\230\345\202\250\350\256\276\345\244\207.md" +++ "b/content/zh/docs/Virtualization/\345\255\230\345\202\250\350\256\276\345\244\207.md" @@ -101,7 +101,7 @@ XML配置文件使用disk元素配置存储设备,disk常见的属性如[表1] ## 配置示例 -按照“准备虚拟机镜像”章节的操作完成虚拟机镜像准备后,可以使用如下XML配置文件示例,为虚拟机配置虚拟磁盘。 +按照[准备虚拟机镜像](准备虚拟机镜像.md)操作完成虚拟机镜像准备后,可以使用如下XML配置文件示例,为虚拟机配置虚拟磁盘。 例如,该示例为虚拟机配置了两个IO线程,一个块磁盘设备和一个光盘设备,第一个IO线程分配给块磁盘设备使用。该块磁盘设备的后端介质为qcow2格式,且被作为优先启动盘。 @@ -118,7 +118,7 @@ XML配置文件使用disk元素配置存储设备,disk常见的属性如[表1] - + diff --git "a/content/zh/docs/Virtualization/\345\256\211\345\205\250\346\234\200\344\275\263\345\256\236\350\267\265.md" "b/content/zh/docs/Virtualization/\345\256\211\345\205\250\346\234\200\344\275\263\345\256\236\350\267\265.md" new file mode 100644 index 0000000000000000000000000000000000000000..48f6f323191b934cd569fdfbd4bd88194b5391b1 --- /dev/null +++ "b/content/zh/docs/Virtualization/\345\256\211\345\205\250\346\234\200\344\275\263\345\256\236\350\267\265.md" @@ -0,0 +1,2 @@ +# 安全最佳实践 + diff --git "a/content/zh/docs/Virtualization/\345\256\211\350\243\205\346\214\207\345\215\227.md" "b/content/zh/docs/Virtualization/\345\256\211\350\243\205\346\214\207\345\215\227.md" index 2dbbb7ea4d9473ea3c0419f42a75c5d93eaaa984..a076352982b3aaf667bf2e1230d33250aa90ffd0 100644 --- "a/content/zh/docs/Virtualization/\345\256\211\350\243\205\346\214\207\345\215\227.md" +++ "b/content/zh/docs/Virtualization/\345\256\211\350\243\205\346\214\207\345\215\227.md" @@ -1,3 +1,5 @@ # 安装指南 本章介绍在openEuler中安装虚拟化组件的方法。 + + diff --git "a/content/zh/docs/Virtualization/\345\256\211\350\243\205\346\226\271\346\263\225.md" "b/content/zh/docs/Virtualization/\345\256\211\350\243\205\346\226\271\346\263\225.md" index 12eae217f76b890b95382a69c938e22c63d3c1e2..c6829c234ef9b49667ab9909d75b889d9bed8191 100644 --- "a/content/zh/docs/Virtualization/\345\256\211\350\243\205\346\226\271\346\263\225.md" +++ "b/content/zh/docs/Virtualization/\345\256\211\350\243\205\346\226\271\346\263\225.md" @@ -2,12 +2,12 @@ ## 前提条件 -- 已经配置yum源。配置方式请参见《openEuler 1.0 管理员指南》。 +- 已经配置yum源。配置方式请参见《openEuler 20.03 LTS 管理员指南》。 - 安装操作需要管理员权限。 ## 安装步骤 -1. 安装qemu组件。 +1. 安装QEMU组件。 ``` # yum install -y qemu diff --git "a/content/zh/docs/Virtualization/\345\256\211\350\243\205\350\231\232\346\213\237\345\214\226\346\240\270\345\277\203\347\273\204\344\273\266.md" "b/content/zh/docs/Virtualization/\345\256\211\350\243\205\350\231\232\346\213\237\345\214\226\346\240\270\345\277\203\347\273\204\344\273\266.md" index 9638c91980abe1b2b5446b575e89b3fdf449e583..7e40b21c2aaa586f7fdd37eda40e226efebdbf4e 100644 --- "a/content/zh/docs/Virtualization/\345\256\211\350\243\205\350\231\232\346\213\237\345\214\226\346\240\270\345\277\203\347\273\204\344\273\266.md" +++ "b/content/zh/docs/Virtualization/\345\256\211\350\243\205\350\231\232\346\213\237\345\214\226\346\240\270\345\277\203\347\273\204\344\273\266.md" @@ -1,3 +1,2 @@ # 安装虚拟化核心组件 - diff --git "a/content/zh/docs/Virtualization/\346\200\247\350\203\275\346\234\200\344\275\263\345\256\236\350\267\265.md" "b/content/zh/docs/Virtualization/\346\200\247\350\203\275\346\234\200\344\275\263\345\256\236\350\267\265.md" new file mode 100644 index 0000000000000000000000000000000000000000..956265d22ad45b5e5524ed813f4c1edee1540a05 --- /dev/null +++ "b/content/zh/docs/Virtualization/\346\200\247\350\203\275\346\234\200\344\275\263\345\256\236\350\267\265.md" @@ -0,0 +1 @@ +# 性能最佳实践 diff --git "a/content/zh/docs/Virtualization/\346\200\273\344\275\223\344\273\213\347\273\215-0.md" "b/content/zh/docs/Virtualization/\346\200\273\344\275\223\344\273\213\347\273\215-0.md" index 06bbf14a8e9e25718e949b29b06c671af2dcb85f..87aaa11c70e25288061c825b93e44a90838bf65b 100644 --- "a/content/zh/docs/Virtualization/\346\200\273\344\275\223\344\273\213\347\273\215-0.md" +++ "b/content/zh/docs/Virtualization/\346\200\273\344\275\223\344\273\213\347\273\215-0.md" @@ -24,7 +24,7 @@ ## 虚拟机标识 -在Libvirt中,完成创建的虚拟机实例称做一个“domain”,其描述了虚拟机的CPU、内存、网络设备、存储设备等各种资源的配置信息。在同一个主机上,每个domain具有唯一标识,通过虚拟机名称Name、UUID、Id表示,对应含义请参见[表1](#table84397266483)。在虚拟机生命周期期间,可以通过虚拟机标识对特定虚拟机进行操作。 +在libvirt中,完成创建的虚拟机实例称做一个“domain”,其描述了虚拟机的CPU、内存、网络设备、存储设备等各种资源的配置信息。在同一个主机上,每个domain具有唯一标识,通过虚拟机名称Name、UUID、Id表示,对应含义请参见[表1](#table84397266483)。在虚拟机生命周期期间,可以通过虚拟机标识对特定虚拟机进行操作。 **表 1** domain标识说明 @@ -56,5 +56,5 @@
>![](public_sys-resources/icon-note.gif) **说明:** ->可通过virsh命令查询虚拟机Id和UUID,操作方法请参见“查询虚拟机信息”章节内容。 +>可通过virsh命令查询虚拟机Id和UUID,操作方法请参见[查询虚拟机信息](查询虚拟机信息.md)章节内容。 diff --git "a/content/zh/docs/Virtualization/\346\200\273\347\272\277\351\205\215\347\275\256.md" "b/content/zh/docs/Virtualization/\346\200\273\347\272\277\351\205\215\347\275\256.md" index 9218716675d0ec223a7accf14e66f45bc00fa912..77f9b22732061dbaa42f489baaafcae6fb29d928 100644 --- "a/content/zh/docs/Virtualization/\346\200\273\347\272\277\351\205\215\347\275\256.md" +++ "b/content/zh/docs/Virtualization/\346\200\273\347\272\277\351\205\215\347\275\256.md" @@ -7,11 +7,11 @@ PCIe总线是一种典型的树结构,具有比较好的扩展性,总线之间通过控制器关联,这里以PCIe总线为例介绍如何为虚拟机配置总线拓扑。 >![](public_sys-resources/icon-note.gif) **说明:** ->总线的配置相对比较繁琐,若不需要精确控制设备拓扑结构,可以使用Libvirt自动生成的缺省总线配置。 +>总线的配置相对比较繁琐,若不需要精确控制设备拓扑结构,可以使用libvirt自动生成的缺省总线配置。 ## 元素介绍 -在Libvirt的XML配置中,每个控制器元素(使用controller元素表示)可以表示一个总线,根据虚拟机架构的不同,一个控制器上通常可以挂载一个或多个控制器或设备。这里介绍常用属性和子元素。 +在libvirt的XML配置中,每个控制器元素(使用controller元素表示)可以表示一个总线,根据虚拟机架构的不同,一个控制器上通常可以挂载一个或多个控制器或设备。这里介绍常用属性和子元素。 controller:控制器元素,表示一个总线。 diff --git "a/content/zh/docs/Virtualization/\346\234\200\344\275\216\347\241\254\344\273\266\350\246\201\346\261\202.md" "b/content/zh/docs/Virtualization/\346\234\200\344\275\216\347\241\254\344\273\266\350\246\201\346\261\202.md" index bf72463538ddcac940d57e6814a2fb69d1f5beef..f8cdbd79db49d151c999ba2bc2d84ee94d56b006 100644 --- "a/content/zh/docs/Virtualization/\346\234\200\344\275\216\347\241\254\344\273\266\350\246\201\346\261\202.md" +++ "b/content/zh/docs/Virtualization/\346\234\200\344\275\216\347\241\254\344\273\266\350\246\201\346\261\202.md" @@ -2,7 +2,8 @@ 在openEuler系统中安装虚拟化组件,最低硬件要求: -- AArch64处理器架构(建议ARMv8处理器) +- AArch64处理器架构:ARMv8以上并且支持虚拟化扩展 +- X86\_64处理器架构:支持VT-x - 2核CPU - 4GB的内存 - 16GB可用磁盘空间 diff --git "a/content/zh/docs/Virtualization/\346\234\200\344\275\263\345\256\236\350\267\265.md" "b/content/zh/docs/Virtualization/\346\234\200\344\275\263\345\256\236\350\267\265.md" index 25237daaf39cfd8f5858972f6923b79a71ae3cf9..1c482e52b35c5ae1c54e9bcf578c0ad620a25bf1 100644 --- "a/content/zh/docs/Virtualization/\346\234\200\344\275\263\345\256\236\350\267\265.md" +++ "b/content/zh/docs/Virtualization/\346\234\200\344\275\263\345\256\236\350\267\265.md" @@ -1 +1,2 @@ # 最佳实践 + diff --git "a/content/zh/docs/Virtualization/\346\234\257\350\257\255\345\222\214\347\274\251\347\225\245\350\257\255.md" "b/content/zh/docs/Virtualization/\346\234\257\350\257\255\345\222\214\347\274\251\347\225\245\350\257\255.md" index c6180ef28956edb64906f9b8feacb32e10e81c14..09ca4ce21317daeb64c848f70500e4d4f54f508d 100644 --- "a/content/zh/docs/Virtualization/\346\234\257\350\257\255\345\222\214\347\274\251\347\225\245\350\257\255.md" +++ "b/content/zh/docs/Virtualization/\346\234\257\350\257\255\345\222\214\347\274\251\347\225\245\350\257\255.md" @@ -41,16 +41,6 @@

即虚拟机监视器VMM,是一种运行在基础物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件。

客户机操作系统

-

即Guest OS,指运行在虚拟机上的操作系统。

-

宿主机操作系统

-

即Host OS,指被虚拟的物理机的操作系统。

-

虚拟机

使用虚拟化技术,通过软件模拟完整的计算机硬件系统功能,构造出的完整虚拟计算机系统。

@@ -66,82 +56,82 @@

英文全称

中文全称

+

中文全称

含义

+

含义

NUMA

Non Uniform Memory Access Architecture

+

Non-Uniform Memory Access Architecture

非统一内存访问架构

+

非统一内存访问架构

NUMA是一种为多处理器计算机设计的内存架构。在NUMA下,处理器访问它自己的本地内存的速度比非本地内存(内存位于另一个处理器,或者是处理器之间共享的内存)快一些。

+

NUMA是一种为多处理器计算机设计的内存架构。在NUMA下,处理器访问它自己的本地内存的速度比非本地内存(内存位于另一个处理器,或者是处理器之间共享的内存)快一些。

KVM

Kernel-based Virtual Machine

基于内核的虚拟机

+

基于内核的虚拟机

KVM是基于内核的虚拟机,是Linux的一个内核模块,该模块使得Linux成为一个Hypervisor

+

KVM是基于内核的虚拟机,是Linux的一个内核模块,该模块使得Linux成为一个hypervisor

OVS

Open vSwitch

开放虚拟交换标准

+

开放虚拟交换标准

OVS是一个高质量的多层虚拟交换机,使用开源Apache2.0许可协议。

+

OVS是一个高质量的多层虚拟交换机,使用开源Apache2.0许可协议。

QEMU

Quick Emulator

快速模拟器

+

快速模拟器

QEMU是一个通用的可执行硬件虚拟化的开源模拟器。

+

QEMU是一个通用的可执行硬件虚拟化的开源模拟器。

SMP

Symmetric Multi-Processor

对称多处理

+

对称多处理

SMP是一种多处理器的计算机硬件架构。现在多数的处理器系统都采用对称多处理器架构。该架构系统拥有多个处理器,各处理器共享内存子系统和总线结构。

+

SMP是一种多处理器的计算机硬件架构。现在多数的处理器系统都采用对称多处理器架构。该架构系统拥有多个处理器,各处理器共享内存子系统和总线结构。

UEFI

Unified Extensible Firmware Interface

统一的可扩展固件接口

+

统一的可扩展固件接口

一种详细描述全新类型接口的标准。该接口用于操作系统自动从预启动的操作环境,加载到一种操作系统上。

+

一种详细描述全新类型接口的标准。该接口用于操作系统自动从预启动的操作环境,加载到一种操作系统上。

VM

Virtual Machine

虚拟机

+

虚拟机

使用虚拟化技术,通过软件模拟完整的计算机硬件系统功能,构造出的完整虚拟计算机系统。

+

使用虚拟化技术,通过软件模拟完整的计算机硬件系统功能,构造出的完整虚拟计算机系统。

VMM

Virtual Machine Monitor

虚拟机监视器

+

虚拟机监视器

是一种运行在基础物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件。

+

是一种运行在基础物理服务器和操作系统之间的中间软件层,可允许多个操作系统和应用共享硬件。

virsh schedinfo <VMInstance>

包括vCPU份额信息。

+

包括vCPU份额信息。

vCPU数目

@@ -110,7 +110,7 @@ Libvirt组件提供了一组查询虚拟机状态信息的命令,包括虚拟

virsh iothreadinfo <VMInstance>

虚拟机I/O线程及其CPU亲和性。

+

查询虚拟机I/O线程及其CPU亲和性信息

关闭虚拟机。启动虚拟机关机流程,若关机失败可使用强制关闭

virsh destory <VMInstanse>

+

virsh destroy <VMInstanse>

强制关闭虚拟机