文章目录
  1. 前言
  2. 何来限制
  3. 使用pipework配置独立的ip地址
  4. 鸣谢

前言

我近日将家中服务器系统从pve更换为unRaid,由于unRaid不支持lxc虚拟机 所以便将所有服务迁移到了docker容器。由于我希望每个服务都能有它自己的域名用于访问 便使用了 Nginx proxy manager进行统一代理的同时配置https证书。

何来限制

因为unRaid系统的完善 在创建容器时 将网络类型选择为 Custom:br0 即可从主路由处获得一个独立ip用于访问;但由于这是通过docker macvlan获取的ip,macvlan模式下的容器 跟宿主机之间没有 访问权限,对其他同网段的服务器和容器可以联通。

使用pipework配置独立的ip地址

由于unRaid系统安装于u盘 每次启动会先从u盘载入数据 所以这使得在系统中做出的修改在重启后会还原,于是我将pipework存放于u盘目录 每次启动时通过 /boot/CONFIG/GO 来自动执行配置

#!/bin/bash
# Start the Management Utility
 /usr/local/sbin/emhttp &
 modprobe i915

# pipework
 cp /boot/pipework /usr/local/bin/  ##将pipework从u盘拷贝至运行目录
 chmod +x /usr/local/bin/pipework   ##赋予pipework可执行权限
 sleep 30s                          ##等待30s 以便容器启动
 /usr/local/bin/pipework br0 Nginx-Proxy-Manager-Official 10.0.0.3/24@10.0.0.1  ##为名为Nginx-Proxy-Manager-Official的容器桥接至br0 配置静态ip地址10.0.0.3

由于使用pipework添加ip地址不是docker官方给出的方案 所以在被添加的容器重启后ip地址会失效 需要重新再执行指令添加 因此我在 /boot/CONFIG/GO 中每次开机都将pipework拷贝至 /usr/local/bin 这样在系统终端内便可直接使用 pipework 指令,如果仅需要开机时自动配置 /boot/CONFIG/GO 可简化为

#!/bin/bash
# Start the Management Utility
 /usr/local/sbin/emhttp &
 modprobe i915

# pipework
 sleep 30s
 /boot/pipework br0 Nginx-Proxy-Manager-Official 10.0.0.3/24@10.0.0.1

如果使用的不是unraid系统 debian ubuntu之类的linux系统 将pipework放入 /usr/local/bin 在赋予执行权限后 仅需在 /etc/rc.local 或者 /etc/rc.d/rc.local 内添加pipework指令即可。

鸣谢

http://www.louisvv.com/archives/695.html

pipework下载 https://github.com/jpetazzo/pipework/archive/master.zip