在/etc/systemd/nspawn下创建 [容器名称].nspawn
如果/etc/systemd/nspawn不存在则创建
一般容器内容,格式如下:
[Exec] Boot=yes ResolvConf=off Timezone=off [Network] Zone=bridge Port=tcp:80:80 Port=tcp:443:443
Boot=yes意思是--boot或-b
ResolvConf=off意思是/etc/resolv.conf不从宿主机复制
Timezone=off意思是/etc/localtime不从宿主机复制
Zone=bridge意思是--network-zone=bridge
Port=tcp:80:80 可选,意思是把主机的80端口映射到容器的80端口
创建文件/etc/systemd/network/20-vz-bridge.network内容如下:
[Match] Name=vz-bridge [Network] Address=192.168.56.1/24 IPMasquerade=both
意思是设置nspawn网桥的ip为192.168.56.1
Name=vz-bridge中bridge是与.nspawn中的Zone一致,修改需要同时修改。
IPMasquerade=both是保证容器内可以上网用的。
在容器内创建/etc/systemd/network/20-host0.network
[Match] Name=host0 [Network] Address=192.168.56.100/24 Gateway=192.168.56.1
客户根据不同的需求修改ip地址
在容器内修改/etc/resolv.conf
nameserver 223.5.5.5 nameserver 223.6.6.6
先安装iptables与持久化工具apt install iptables iptables-persistent
iptables -t nat -A POSTROUTING -o host0 -j MASQUERADE netfilter-persistent save systemctl enable --now netfilter-persistent.service
先安装iptables持久化工具apt install iptables-persistent
执行允许虚拟网桥路由转发命令
iptables -A FORWARD -i vz-bridge -j ACCEPT iptables -A FORWARD -o vz-bridge -j ACCEPT netfilter-persistent save systemctl enable --now netfilter-persistent.service
方法如下:
docker network create -d macvlan \ --subnet=192.168.56.0/24 \ --gateway=192.168.56.1 \ -o parent=vz-bridge \ br-docker docker run -d \ --name homeassistant \ --privileged \ --restart=unless-stopped \ -e TZ=Asia/Shanghai \ -v /etc/homeassistant:/config \ -v /run/dbus:/run/dbus:ro \ --network=br-docker \ --ip 192.168.56.101 \ ghcr.io/home-assistant/home-assistant:stable
该方法执行后,可以通过nspawn容器访问docker容器
反向代理信任设置位置为UI下设置 -> 系统 -> 网络 -> HTTP 服务器 -> 反向代理