通过主机网络共享模式,容器可以直接使用宿主机的网络栈。在Docker中创建使用主机网络共享模式的Nginx容器,实现了容器与宿主机网络的高效通信。
在CentOS或openEuler中创建并运行一个连接到Docker宿主机网络栈的容器的具体操作步骤如下:
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 |
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。
命令 |
说明 |
---|---|
-v |
指定共享目录。 |
--cpuset-cpus |
指定容器分配的物理核。 |
--cpuset-mems |
指定容器的内存分配在哪个node上。 |
--memory |
指定容器分配的内存大小。 |
--net |
指定容器使用的网络模式,这里使用host网络模式。 |
--name |
指定容器名。 |
arm/centos7/nginx:http 或者 arm/openeuler20/nginx:http |
指定容器使用的镜像。 |
如果需要批量创建容器,建议使用脚本文件。以下是一个可创建24个容器的CentOS脚本示例。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | #!/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 |
1 | docker ps
|
如果执行docker ps没有容器,则执行以下命令查看报错。
1 2 | docker ps -a docker logs nginx_1 |