主机网络共享模式
通过主机网络共享模式,容器可以直接使用宿主机的网络栈。在Docker中创建使用主机网络共享模式的Nginx容器,实现了容器与宿主机网络的高效通信。
在CentOS或openEuler中创建并运行一个连接到Docker宿主机网络栈的容器的具体操作步骤如下:
- 创建单个容器。
- 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
- CentOS:
- 查看已经启动的容器。
1
docker ps
如果执行docker ps没有容器,则执行以下命令查看报错。
1 2
docker ps -a docker logs nginx_1
父主题: 创建Nginx容器