---
title: 主机网络共享模式
description: "通过主机网络共享模式，容器可以直接使用宿主机的网络栈。在Docker中创建使用主机网络共享模式的Nginx容器，实现了容器与宿主机网络的高效通信。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengwebs/ecosystemEnable/Nginx/kunpengnginx_04_0009.html
sourcePath: /source/zh/kunpengwebs/ecosystemEnable/Nginx/kunpengnginx_04_0009.html
indexId: cdda509f5ce1cff0e31a4745fa432a9892ea495b964bedb0ff826b68db3c2ca670
---
# 主机网络共享模式

通过主机网络共享模式，容器可以直接使用宿主机的网络栈。在Docker中创建使用主机网络共享模式的Nginx容器，实现了容器与宿主机网络的高效通信。

在CentOS或openEuler中创建并运行一个连接到Docker宿主机网络栈的容器的具体操作步骤如下：

1. 创建单个容器。

  - CentOS：
    1 docker run -itd --privileged -v /home/share/:/home/share/ --cpuset-cpus 0-1 --cpuset-mems 0 --memory 8589934592 --net=host --name nginx_1 arm/centos7/nginx:http /bin/bash

  - openEuler：
    1 docker run -itd --privileged -v /home/share/:/home/share/ --cpuset-cpus 0-1 --cpuset-mems 0 --memory 8589934592 --net=host --name nginx_1 arm/openeuler20/nginx:http /bin/bash

命令说明参考表1。

**表1 命令说明**

| 命令 | 说明 |
| --- | --- |
| \-v | 指定共享目录。 |
| \-\-cpuset\-cpus | 指定容器分配的物理核。 |
| \-\-cpuset\-mems | 指定容器的内存分配在哪个node上。 |
| \-\-memory | 指定容器分配的内存大小。 |
| \-\-net | 指定容器使用的网络模式，这里使用host网络模式。 |
| \-\-name | 指定容器名。 |
| arm/centos7/nginx:http 或者 arm/openeuler20/nginx:http | 指定容器使用的镜像。 |


如果需要批量创建容器，建议使用脚本文件。以下是一个可创建24个容器的CentOS脚本示例。

```
#!/bin/bash
# filename: ContainerCreate.sh
beginCore=0;
endCore=1;
for i in  {1..6}
do
        name=nginx_$i
        docker run -itd --privileged -v /home/share/:/home/share/ --cpuset-cpus $beginCore-$endCore --cpuset-mems 0 --memory 8589934592 --net=host --name $name arm/centos7/nginx:http  /bin/bash
        let "beginCore+=4"
        let "endCore+=4"
done
for i in {7..12}
do
        name=nginx_$i
        docker run -itd --privileged -v /home/share/:/home/share/ --cpuset-cpus $beginCore-$endCore --cpuset-mems 1 --memory 8589934592 --net=host --name $name arm/centos7/nginx:http  /bin/bash
        let "beginCore+=4"
        let "endCore+=4"
done
for i in {13..18}
do
        name=nginx_$i
        docker run -itd --privileged -v /home/share/:/home/share/ --cpuset-cpus $beginCore-$endCore --cpuset-mems 2 --memory 8589934592 --net=host --name $name arm/centos7/nginx:http  /bin/bash
        let "beginCore+=4"

        let "endCore+=4"
done
for i in {19..24}
do
        name=nginx_$i
        docker run -itd --privileged -v /home/share/:/home/share/  --cpuset-cpus $beginCore-$endCore --cpuset-mems 3 --memory 8589934592 --net=host --name $name arm/centos7/nginx:http  /bin/bash
        let "beginCore+=4"
        let "endCore+=4"
done
```


2. 查看已经启动的容器。
  1 docker ps

  如果执行docker ps没有容器，则执行以下命令查看报错。 1 2 docker ps -a docker logs nginx_1
