AI开发平台MODELARTS-NPU Snt9B裸金属服务器docker网络配置方案:操作步骤
操作步骤
- (推荐)基于host模式配置
使用host模式,docker容器可以直接使用宿主机的IP和端口,更加简单便捷,更推荐在多机分布式训练时使用。但是在设置容器的ssh免密登录时,仍需要将容器的22端口和主机某个端口相映射。
进入容器中,修改/etc/ssh/sshd_config文件,增加port映射。
Port 18888
例如,在文件增加下面这一行,即为将容器的22端口和主机18888端口相映射。
重启sshd服务,执行如下命令。
/usr/sbin/sshd
此时,有两种方式实现免密登录。
- (推荐)方式一:重新制作docker镜像(推荐)
在一个容器内,参考NPU Snt9B裸金属服务器多机免密互通解决方案完成配置后,将该容器打包为镜像,上传到华为云容器管理服务SWR,其他各个机器从SWR中使用docker pull命令拉取该镜像即可。不同机器使用同一个镜像,由于共用密钥,可以实现多机多容器免密登录。
- 方式二:参考NPU Snt9B裸金属服务器多机免密互通解决方案,分别配置每个容器的ssh免密登录信息,保证多机多容器之间实现互相ssh免密登录。
- (推荐)方式一:重新制作docker镜像(推荐)
- 基于桥接模式(Bridge)配置
首先在创建docker容器时,要将容器需要对外暴露的端口和宿主机端口进行映射。
docker run -itd -p 18888:22 my_image
例如,上述命令就是将容器的22端口与宿主机的18888端口相映射。在宿主机执行如下命令,配置IP转发,用于容器内的网络访问。
sed -i 's/net\.ipv4\.ip_forward=0/net\.ipv4\.ip_forward=1/g' /etc/sysctl.conf sysctl -p | grep net.ipv4.ip_forward
以上命令含义为:Linux系统默认是禁止数据包转发的,转发即当主机拥有多于一块的网卡时,一块网卡收到数据包并根据数据包的目的ip地址将数据包发往本机另一块网卡。由于从外部访问容器内部时需要访问宿主机的地址和对应的容器映射的地址,访问的数据包到宿主机上后经过ip包解析后通过目的port和iptables的规则会将数据包由eth0网卡转发至docker0网桥上进行下一步路由。所以如果容器的宿主机上的ip_forward未打开,该宿主机上的容器则不能被其他宿主机访问。
最后,参考NPU Snt9B裸金属服务器多机免密互通解决方案配置容器的ssh免密登录信息,保证多机多容器之间实现互相ssh免密登录。