【发布时间】:2022-01-07 13:50:52
【问题描述】:
我们有 docker-compose 文件
version: '3'
services:
prometheus-server:
image: prom/prometheus
ports:
- 9090:9090
volumes:
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
grafana-ui:
privileged: true
image: grafana/grafana-oss:latest
ports:
- 3000:3000
environment:
- GF_SECURITY_ADMIN_PASSWORD=secret
links:
- prometheus-server:prometheus
cap_add:
- NET_RAW
- NET_ADMIN
但是,当我们尝试通过docker exec -it <grafana-ui container id> /bin/sh 运行iptables -nvL -t nat 时,/bin/sh: iptables: not found。我有什么遗漏吗?如何在docker容器中运行iptables?
根据这个问题Installing iptables in docker container based on alpinelinux,添加了参数--cap-add=NET_ADMIN和--cap-add=NET_RAW,但是我也没有运行iptables。
【问题讨论】:
-
通常你不会这样做:每个容器都有自己的网络接口,完全由 Docker 管理,Linux 权限进一步阻止你这样做。您描述的工作流程也会进行临时更改,当您重新创建容器时该更改将丢失。为什么要在调试 shell 中运行
iptables? -
其实,根据这个question,我想知道嵌入式DNS服务器在docker中是如何工作的@DavidMaze
标签: docker docker-compose iptables