# 共享内存通道<a name="ZH-CN_TOPIC_0184808022"></a>

## 功能描述<a name="zh-cn_topic_0182200837_section17345803370"></a>

系统容器提供容器与主机进程通过共享内存进行通信的功能，通过在容器创建时配置\--host-channel参数，可以在容器与主机之间共享同一tmpfs，从而达到主机与容器间通信的功能。

## 参数说明<a name="zh-cn_topic_0182200837_section12656610153716"></a>

<a name="zh-cn_topic_0182200837_table1869210387418"></a>
<table><thead align="left"><tr id="zh-cn_topic_0182200837_row1569373816419"><th class="cellrowborder" valign="top" width="18%" id="mcps1.1.4.1.1"><p id="zh-cn_topic_0182200837_p106936387415"><a name="zh-cn_topic_0182200837_p106936387415"></a><a name="zh-cn_topic_0182200837_p106936387415"></a>命令</p>
</th>
<th class="cellrowborder" valign="top" width="18.25%" id="mcps1.1.4.1.2"><p id="zh-cn_topic_0182200837_p15693173814112"><a name="zh-cn_topic_0182200837_p15693173814112"></a><a name="zh-cn_topic_0182200837_p15693173814112"></a>参数</p>
</th>
<th class="cellrowborder" valign="top" width="63.74999999999999%" id="mcps1.1.4.1.3"><p id="zh-cn_topic_0182200837_p346122717615"><a name="zh-cn_topic_0182200837_p346122717615"></a><a name="zh-cn_topic_0182200837_p346122717615"></a>参数指定值说明</p>
</th>
</tr>
</thead>
<tbody><tr id="zh-cn_topic_0182200837_row12693163810415"><td class="cellrowborder" valign="top" width="18%" headers="mcps1.1.4.1.1 "><p id="zh-cn_topic_0182200837_p66931838134110"><a name="zh-cn_topic_0182200837_p66931838134110"></a><a name="zh-cn_topic_0182200837_p66931838134110"></a>isula create/run</p>
</td>
<td class="cellrowborder" valign="top" width="18.25%" headers="mcps1.1.4.1.2 "><p id="zh-cn_topic_0182200837_p20308121310422"><a name="zh-cn_topic_0182200837_p20308121310422"></a><a name="zh-cn_topic_0182200837_p20308121310422"></a>--host-channel</p>
</td>
<td class="cellrowborder" valign="top" width="63.74999999999999%" headers="mcps1.1.4.1.3 "><a name="zh-cn_topic_0182200837_ul16925155365712"></a><a name="zh-cn_topic_0182200837_ul16925155365712"></a><ul id="zh-cn_topic_0182200837_ul16925155365712"><li>字符串变量，格式为：<pre class="screen" id="zh-cn_topic_0182200837_screen46854212570"><a name="zh-cn_topic_0182200837_screen46854212570"></a><a name="zh-cn_topic_0182200837_screen46854212570"></a>&lt;host path&gt;:&lt;container path&gt;:&lt;rw/ro&gt;:&lt;size limit&gt;</pre>
</li><li>参数说明如下：<p id="zh-cn_topic_0182200837_p1888853414582"><a name="zh-cn_topic_0182200837_p1888853414582"></a><a name="zh-cn_topic_0182200837_p1888853414582"></a>&lt;host  path&gt;：将在宿主机上挂载tmpfs的路径，必须是绝对路径。</p>
<p id="zh-cn_topic_0182200837_p288863414581"><a name="zh-cn_topic_0182200837_p288863414581"></a><a name="zh-cn_topic_0182200837_p288863414581"></a>&lt;container  path&gt;：将在容器内挂载tmpfs的路径，必须是绝对路径。</p>
<p id="zh-cn_topic_0182200837_p888843420582"><a name="zh-cn_topic_0182200837_p888843420582"></a><a name="zh-cn_topic_0182200837_p888843420582"></a>&lt;rw/ro&gt;：在容器内挂载的文件系统的使用权限，只能配置为rw（可读写）或ro（只读），默认为rw。</p>
<p id="zh-cn_topic_0182200837_p0889133414583"><a name="zh-cn_topic_0182200837_p0889133414583"></a><a name="zh-cn_topic_0182200837_p0889133414583"></a>&lt;size  limit&gt;：挂载的tmpfs能够使用的最大限制，最小支持1物理页（4KB），最大支持系统总物理内存的1/2 。默认为64MB。</p>
</li></ul>
</td>
</tr>
</tbody>
</table>

## 约束限制<a name="zh-cn_topic_0182200837_section19832164817371"></a>

-   宿主机上挂载的tmpfs的生命周期为从容器启动到容器删除，容器删除并解除对空间的占用后会移除这片空间。
-   容器删除时会将宿主机上挂载tmpfs的路径删除，所以不允许使用宿主机上已存在的目录。
-   为了宿主机上非root用户运行的进程能够与容器内进行通信，宿主机上tmpfs挂载的权限为1777。

## 使用示例<a name="zh-cn_topic_0182200837_section1677183517372"></a>

创建容器时指定\--host-channel参数：

```
[root@localhost ~]# isula run --rm -it --host-channel /testdir:/testdir:rw:32M --system-container --external-rootfs /root/myrootfs none init 
root@3b947668eb54:/# dd if=/dev/zero of=/testdir/test.file bs=1024 count=64K 
dd: error writing '/testdir/test.file': No space left on device 
32769+0 records in 
32768+0 records out 
33554432 bytes (34 MB, 32 MiB) copied, 0.0766899 s, 438 MB/s
```

>![](public_sys-resources/icon-note.gif) **说明：**   
>-   使用--host-channel大小限制时，若在容器内创建共享文件，则会受到容器内的内存配额限制（在容器内存使用达到极限时可能会产生oom）。  
>-   若用户在主机端创建共享文件，则不受容器内的内存配额限制。  
>-   若用户需要在容器内创建共享文件，且业务为内存密集型，可以通过设置容器内存配额为在原本基础上加上--host-channel配置的大小来消除影响。  

