前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一个参数搞定 Docker 禁止单个容器访问外网

一个参数搞定 Docker 禁止单个容器访问外网

作者头像
Lcry
发布2023-10-05 08:11:51
1.6K0
发布2023-10-05 08:11:51
举报
文章被收录于专栏:Lcry个人博客Lcry个人博客

前言

最近自己内网部署了一个私有相册程序,找了一圈没有找到比较符合自己的程序,但是有一个前端半开源的程序免费功能是满足了自己的需求,但是因为不开源,所以考虑到安全性问题,所以打算自己部署服务端之后将整个容器进行离线,不让访问互联网,也能进一步保证无法调用外部接口进行传输相册数据,下面请看整个实现过程。

原理

在网上查阅了相关资料基本上都是直接把DNS设置一个不可用的就无法解析域名访问了,但是这样做直接通过IP地址访问还是禁止不了;还有一些方案是直接把docker容器的网卡改为 none,但是这样实现的话我自己内网要访问容器都没有办法; 我要实现的需求是:容器可以访问内网所有资源,容器有ip地址提供我可以直接连接访问WEB页面,但是容器内不能访问所有的外网资源。

找了一圈之后最终是通过设置禁用容器网卡上的IP地址伪装选项来达到无法上外网的效果,访问内网就还是正常访问。

参考命令

配置参考命令如下,我使用的docker-compose,若是直接使用cli请替换对应命令。

代码语言:javascript
复制
version: '3'
services:
  app:
    image: www.51it.wang/lcry-photo:latest
    networks:
      - private
networks:
  private:
    driver: bridge
    driver_opts:
      com.docker.network.bridge.enable_ip_masquerade: 'false' # 重要的就是这一行

结论

这样做可以针对你觉得不安全的产品进行一个离线联网操作,这样做只针对单个docker容器生效,其他容器完全不受此影响,完全做到了按需更改,通过DNS的方式能够达到一定的效果,但是不完美,如果程序直接通过IP访问资源就会存在遗漏的情况,若你还有其他方案请评论区留言一起交流~

参考链接

Bridge network driver | Docker Docs

function Catalogswith(){document.getElementById("catalog-col").classList.toggle("catalog");document.getElementById("catalog").classList.toggle("catalog")}

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 原理
  • 参考命令
  • 结论
  • 参考链接
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档