记录opwrt下docker使用macvlan配置文件

admin2年前 (2024-05-11)博文92

因某些原因opwet下docker端口直接暴露在wan口直通公网,在各种配置iptables无果后决定使用macvlan方式管理docker网络。

一是本人docker部署不多,二是可以固定容器IP,三是网络界面看起来比较清爽。不然每个docker会默认创建一个网络。

首先给在op上创建一个macvlan网络,信息根据实际情况填写。

image.png

随后修改容器的ymal,不同版本,不同设置导致的配置写法不同,此处作为备忘录。以贴吧签到举例


version: "2.0"
services:
  web:
    image: moenetwork/tieba-cloud-sign
    environment:
      - PUID=1000     # 可修改为你想以什么用户运行caddy,该用户的UID
      - PGID=1000     # 可修改为你想以什么用户运行caddy,该用户的UID
      - DB_HOST=db:3306
      - DB_USER=root
      - DB_PASSWD=    # 数据库密码
      - DB_NAME=      # 数据库名
      - CSRF=true
      # - TC_AUTO_CREATE_INSTALL_LOCK=true # 如果希望自动创建install.lock请解除此注释
    #volumes:       # 如果重新创建或更新镜像希望保留之前的所有信息,请解除此两行注释
      #- ./install.lock:/var/www/setup/install.lock  # 在当前目录下自行新建文件install.lock,内容为:1
    ports:
      - 8080:8080
    networks:                        #设置容器固定ip
      macvlan:                       #设置容器固定ip,使用网络macvlan
        ipv4_address: x.x.x.x        #设置容器固定ip
    links:
      - db
    depends_on:
      - db

  db:
    image: agrozyme/mariadb  #如若此镜像在你的平台上不可用,可以自行搜索你平台可用的mariadb镜像
    environment:
      - MYSQL_ROOT_PASSWORD=
      - MYSQL_PASSWORD=
      - MYSQL_DATABASE=tiebacloud
    volumes:
      - ./mysql:/var/lib/mysql
      - ./mysql:/var/log/mysql
    networks:                     #设置容器固定ip
      macvlan:                    #设置容器固定ip使用网络macvlan
        ipv4_address: x.x.x.x     #设置容器固定ip


networks:
   macvlan:                       #定义网络名称
    external: true                #不创建网络使用外部网络
    

此处以青龙举例


version: '3'
services:
  web:
    # alpine 基础镜像版本
    image: whyour/qinglong:latest
    # debian-slim 基础镜像版本
    # image: whyour/qinglong:debian  
    volumes:
      - ./data:/ql/data
    ports:
      - "5700:5700"
    networks:
      macvlan:
        ipv4_address: x.x.x.x

    environment:
      # 部署路径非必须,以斜杠开头和结尾,比如 /test/
      QlBaseUrl: '/'
    restart: unless-stopped

networks: 
  macvlan:
    external: true

网上也有如下写法,但在我这里使用会创建默认网络或报错,但docker运行正常


networks:
  default:
    external:
      name: macvlan    #使用已存在的网络
#或如下写法
networks:
   macvlan:
     driver: bridge

相关文章

Docker 部署 Python 脚本容器实战备忘录

在日常开发中,经常需要将本地的 Python 脚本部署到服务器上长期运行,并保证它断电重启后自动拉起、日志可持续查看、更新方便。 这里整理一套基于 Docker 的标准化部署流程,用于快速复用与迁移...

一次 TeslaMate 部署踩坑记录:群晖 Container Manager 卷删除不干净与 PostgreSQL 升级翻车

一次 TeslaMate 部署踩坑记录:群晖 Container Manager 卷删除不干净与 PostgreSQL 升级翻车

最近帮朋友在群晖 NAS 上重新部署 TeslaMate,本以为是个很常规的 Docker 项目部署任务,结果一路踩坑,最后发现问题的根源居然是卷删除不干净加上之前人操作不规范。这次经历挺有代表性,所...

评论列表

q
q
1年前 (2024-10-20)

鼓掌,很有用!

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。