马上注册,自学更多教程,下载更多资源。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
群晖 NAS 默认提供了两种网络模式,即 Bridge 桥接模式和本机 Host 模式。然而,若要使 Docker 容器获得局域网 IP,我们就需要开启 macvlan 网络模式。这一模式能够为 Docker 容器赋予独立的 IP 地址,有效避免端口冲突,从而极大地方便了端口映射操作。以下是对各网络模式的详细讲解:
Bridge 模式:在此模式下,Docker 容器内部会构建一个虚拟网桥,容器内部的网段通常为 172.17.0.X。这种模式的特点是容器无法获取主机的网络 IP,若要访问容器中的服务,就必须进行端口映射。并且,由于容器使用的端口不能与主机占用的端口相冲突,所以若不进行端口映射,容器将无法被正常使用。例如,当我们在容器中运行一个 Web 服务,若未将容器内的 80 端口映射到主机的其他可用端口,那么外部网络将无法访问该容器中的 Web 服务。
Host 模式:Host 模式会将容器直接绑定到主机网卡上,容器将使用主机的 IP 地址。但同样需要注意的是,容器使用的端口不能与主机已占用的端口冲突,因为一旦容器使用了某些端口,就相当于主机自动占用了这些端口。比如,若主机已经在使用 80 端口提供服务,那么在 Host 模式下的容器就不能再使用 80 端口,否则会产生冲突导致服务异常。
bridge - host 模式:该模式借助主机的虚拟网卡来创建虚拟网桥,然后将容器的网卡绑定到这个能够直通局域网的虚拟网桥上。这种模式在一定程度上结合了 Bridge 模式和 Host 模式的特点,既可以利用虚拟网桥实现网络隔离与配置的灵活性,又能够让容器与局域网有更直接的连接,方便容器在局域网环境中的通信与服务提供。
启用虚拟交换机:
控制面板→网络→网络界面→管理→启用Open vSwitch 这一步意思是开启虚拟交换机功能
SSH连接NAS创建macvlan网络
使用ssh工具或者命令:ssh 账号@IP地址 连接群晖NAS然后执行下面命令:
群晖切换root账户
[Plain Text] 纯文本查看 复制代码 sudo –i
下面这一步很重要。
[Plain Text] 纯文本查看 复制代码 ip addr
使用以上命令查看一下自己网络(NAS的ip)用的接口,一般是ovs_eth0 我这里是ovs_eth1
执行创建网络命令
执行创建网络命令,指令根据自己的IP网段修改,我的IP网段为192.168.100.X,网关地址为192.168.100.1,根据自己的情况修改。
[Plain Text] 纯文本查看 复制代码 docker network create -d macvlan --subnet=192.168.100.0/24 --gateway=192.168.100.1 -o parent=ovs_eth1 bridge-host
这样我们就可以在容器中选择bridge-host网络模式了
注意:如果创建Docker容器的时候使用bridge-host网络模式,并不手动指定IP的话,默认会从192.168.x.2按照顺序排列下去。
指定IP的方法,需要ssh连接nas后使用命令:
[Plain Text] 纯文本查看 复制代码 docker run -itd --restart=always --network bridge-host --ip 192.168.100.5 --name centos7.9 centos:centos7.9.2009
命令详解:
整体作用
这条命令的主要目的是在 Docker 环境中基于指定的 CentOS 7.9 镜像启动一个容器,并对容器进行一系列的配置,使其在特定的网络环境下以指定的 IP 地址运行,且设置为在宿主机重启时自动重启容器。
命令参数解释docker run:这是 Docker 的核心命令,用于从镜像创建并启动一个新的容器。
-itd:这是三个参数的组合简写形式。
-i:表示以交互模式(interactive)运行容器,使得可以在容器内进行输入操作,通常用于需要与容器内的进程进行交互的场景,比如进入容器的命令行终端进行操作。
-t:为容器分配一个伪终端(tty),与 -i 配合使用可以提供一个类似在本地终端操作容器内部系统的体验,比如可以像在本地登录到一台服务器那样在容器内执行命令。
-d:表示让容器在后台(detached)运行,即启动容器后命令行不会被容器内运行的进程占用,而是可以继续在宿主机上执行其他命令。
--restart=always:这个参数设置容器的重启策略。当设置为 always 时,意味着无论什么原因导致容器停止运行(比如宿主机重启、容器内应用程序崩溃等),Docker 都会自动尝试重新启动这个容器,以保证容器始终处于运行状态。
--network bridge-host:指定容器所使用的网络模式。这里使用的是一种特殊的网络设置方式,bridge-host 模式结合了桥接(bridge)网络和主机(host)网络的一些特性。通常情况下,桥接网络会为容器创建一个独立的网络 namespace,使其有自己独立的 IP 地址等网络配置,与宿主机和其他容器的网络相对隔离;而主机网络则是让容器直接使用宿主机的网络栈,容器内的网络配置几乎等同于宿主机。bridge-host 模式可能是一种自定义的网络配置方式(具体取决于 Docker 环境的设置),它可能是在保证容器能以某种类似桥接网络获取独立 IP 地址的同时,又能部分共享主机网络的一些特性,以便于容器与宿主机及其他网络设备更好地进行通信等。
--ip 192.168.100.5:明确为容器指定一个静态 IP 地址。在上述提到的 bridge-host 网络模式下(或者其他支持静态 IP 分配的网络模式中),将容器的 IP 地址设置为 192.168.100.5,这样在网络环境中就可以通过这个 IP 地址来访问该容器提供的服务等。
--name centos7.9:为启动的容器指定一个名称为 centos7.9。给容器命名便于后续对容器进行管理,比如通过容器名称来启动、停止、删除容器等操作,而不需要使用容器的长 ID(每个容器在 Docker 中有一个唯一的 ID)。
centos:centos7.9.2009:这是指定要用来启动容器的镜像名称及标签。这里表示使用名为 centos 的镜像仓库中的 centos7.9.2009 版本的镜像来创建容器。镜像就像是一个容器的模板,包含了运行一个特定应用程序或操作系统环境所需的文件系统、配置等内容,Docker 通过这个镜像来创建出实际运行的容器。
上一篇:使用SSH进入Docker下进行指令操作 下一篇:群晖Docker宝塔面板官方原版v7.7.0备份破解版付费插件不过期 |