标签: docker

码头工人和岸边

我在我的服务器上使用Shorewall作为简单的独立防火墙,并且也想使用Docker

通过使用 Docker 容器及其端口重定向, docker 设置了自己的 iptables 规则/链,如果 shorewall 重新启动,这些规则/链将被终止。所以容器将变得无法访问

有没有人在 shorewall 重启后设法保存/恢复 docker 规则,或者有没有其他解决方法?

也可以看看:

shorewall docker

17
推荐指数
2
解决办法
6655
查看次数

Kubernetes 总是提供 503 Service Temporously Unavailable 与多个 TLS Ingress

我在 Amazon Web Services 上由 kops 设置了一个 kubernetes 集群

我有 2 个站点设置。一个是通过 SSL/TLS/https 保护的,另一个是 http。两者都是 Wordpress 网站。域已更改以保护站点身份

入口配置:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-rules
spec:
  tls:
  - hosts:
    - site1.com
    secretName: site1-tls-secret
  - hosts:
    - www.site1.com
    secretName: site1-tls-secret
  rules:
  - host: site1.com
    http:
      paths:
      - path: /
        backend:
          serviceName: site1
          servicePort: 80
  - host: www.site1.com
    http:
      paths:
      - path: /
        backend:
          serviceName: site1
          servicePort: 80
  - host: blog.site2.com
    http:
      paths:
      - path: /
        backend:
          serviceName: site2
          servicePort: 80
Run Code Online (Sandbox Code Playgroud)

入口服务 …

amazon-web-services docker kubernetes

17
推荐指数
3
解决办法
4万
查看次数

在虚拟机中运行容器?

我的理解是容器比 VM 轻得多,因为它们不虚拟化硬件,而只是将其中运行的软件与系统上其他容器中运行的软件隔离开来。

我的情况是我买不起额外的服务器,而且我拥有的服务器都在运行虚拟机管理程序。我需要提供至少 6 个“服务器”来托管相对较小的 Web 应用程序的实例(每个实例用于不同的客户)。为这些服务器中的每一个配置一个新的 VM 会很浪费,所以我计划设置 2 个 VM 并执行以下操作之一:

  1. 使用虚拟主机 (apache) 在每个 VM 上运行应用程序的多个实例。或者
  2. 在虚拟机上设置容器,这将允许我隔离环境。

考虑到这一点,是否存在与容器系统相关的不可忽略的开销,这会使在 VM 中使用它们成为一个坏主意,或者是否有任何其他技术原因我不想使用容器?

virtual-machines openvz vmware-esxi lxc docker

16
推荐指数
1
解决办法
2万
查看次数

为什么环境变量与`bash -c`不同

怎么会出现以下情况,即$PATH直接从bash -c

docker exec -i -t my_container bash -c "echo $PATH"
Run Code Online (Sandbox Code Playgroud)

返回$PATH与后面不同的值,即启动交互式 bash 会话并回显$PATH?

docker exec -i -t my_container bash 
root@21e6d898c3c2:/# echo $PATH
Run Code Online (Sandbox Code Playgroud)

为了给这个问题提供一些上下文,我想在容器中运行一个命令,docker exec如果我开始一个交互式 bash 会话,这个命令在路径上,但如果我只是运行命令,则不是。

在这种情况下,使用可执行文件的完整路径不是解决方法,因为该命令依赖于其他环境变量,就像PATH在 bash 交互式会话中设置的一样,但如果我直接运行该命令则不会。

bash docker

16
推荐指数
3
解决办法
9779
查看次数

列出 docker swarm 模式所有节点的容器

我们在几个节点上以 swarm 模式运行 docker。

找不到一种快速简便的方法来从管理器节点列出 swarm 中的所有容器(最好带有状态)。人们可以看到覆盖网络和连接到这些网络的本地运行的容器,还有服务——但不能看到容器的详细信息等。

它是否已经可用,或者使用 REST API 是唯一可用的选项?(但不确定那里是否提供了所有必需的信息)

docker docker-swarm

16
推荐指数
1
解决办法
2万
查看次数

Docker 将匿名卷转换为命名卷

我已经使用 docker 命令行尝试了一个 docker 镜像,但没有指定卷的名称。现在我发现我想继续使用这个容器/图像,但是通过在 docker compose 中定义容器。

保留匿名/未命名卷中的数据并在 docker compose 创建的新容器中使用它们的最佳实践是什么?

  • 我可以以某种方式将未命名的卷转换为命名的卷吗?
  • 或者我应该使用 docker compose 创建一个带有命名卷的新容器并复制数据?
  • 或任何其他选择?

docker docker-compose

16
推荐指数
2
解决办法
6506
查看次数

Docker 破坏了 libvirt 桥接网络

这个问题让我发疯。我运行全新安装的 Ubuntu 18.04,使用:

  • ufw 来管理防火墙
  • 一座 br0 桥
  • lxd 和 libvirt (KVM)

我尝试了股票 docker.io 包和包形成 docker 自己的 deb 存储库。

我希望能够部署 docker 容器,选择 ip 来绑定其端口(例如 -p 10.58.26.6:98800:98800),然后使用 UFW 打开端口。

但是 docker 似乎创建了干扰 br0 桥的 iptables 规则(例如,主机无法 ping libvirt 来宾)

我环顾四周,找不到好的、具有安全意识的解决方案。

手动操作iptables -I FORWARD -i br0 -o br0 -j ACCEPT似乎可以使一切正常。

"iptables": falsedocker 守护进程的设置也允许网桥正常运行,但会破坏 docker 的容器出口网络。

我发现这个解决方案看起来很简单,通过编辑单个 UFW 的文件/sf/answers/3621911961/,但它根本不起作用。

永久解决这个问题的最佳实践和安全方法是什么,幸免于重新启动?

编辑: 我结束了加-A ufw-before-forward -i br0 -o br0 -j ACCEPT在年底/etc/ufw/before.rules前提交。我可以将其视为解决方案还是不会引起一些问题?

iptables bridge ufw docker

16
推荐指数
3
解决办法
6249
查看次数

限制Docker容器的网络访问

我正在创建一个仅限 SFTP 的Docker容器,该容器将由多人使用,其唯一目的是在他们自己的chrooted 环境中上传和管理文件。

从理论上讲,它非常安全:我将禁用所有形式的bash登录,并且不会在其中运行任何其他进程。但是,我想再加强一点:

我想阻止这个容器从内部访问 Internet,除了它作为 SFTP 服务器的目的。

澄清一下:我知道如何防止外部世界访问我的容器——我可以设置传入iptables规则,并且我只能在我的 docker run 命令中公开 SFTP 端口。

但是,当容器运行时,我想让以下命令(作为示例)失败:

curl google.com
Run Code Online (Sandbox Code Playgroud)

我的目的是减少被黑容器可能造成的损害(不能用于发送垃圾邮件等)。

security ssh sftp docker

15
推荐指数
1
解决办法
1万
查看次数

Docker - 可从外部访问的暴露端口 - iptables 规则被忽略

我有一个 docker 容器运行如下:

 docker run --name some_container_1 -p 8080:80 -d some_image
Run Code Online (Sandbox Code Playgroud)

哪个工作正常。容器将它的端口 80 公开到 8080,并且可以从本地主机访问。

然而,出于某种原因,它完全忽略了 INPUT iptables 规则,并且也可以从外部访问。

如何限制对我的 Docker 容器的访问,只允许 ie IP 123.456.789.0 从外部访问它?

谢谢。


须藤 iptables -L -n -v --line-numbers

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
2      365 23380 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
3        0     0 ACCEPT     tcp  --  * …
Run Code Online (Sandbox Code Playgroud)

iptables docker

15
推荐指数
2
解决办法
2万
查看次数

计算 Docker 容器中允许的 CPU 数量

我的具体情况如下。我使用特定的cpuset启动一个docker容器:

docker run --cpuset-cpus="0-2" # ...
Run Code Online (Sandbox Code Playgroud)

在该容器内,我运行一个 shell 脚本作为入口点,该 shell 脚本将make在某个时候运行。我想弄清楚有多少工作(-j)。我当然可以通过环境传递已分配 CPU 的数量,但更喜欢自动检测它的方法。

我知道我可以使用taskset -c -p $$cat /proc/self/status | grep Cpus_allowed_list检索Cpus_allowed当前进程的 ,但我不知道如何检索允许的 CPU 的实际数量。我想避免解析这些命令的输出或摆弄Cpus_allowed掩码,但会在没有选项时这样做。

virtualization linux scheduling docker

15
推荐指数
1
解决办法
1万
查看次数