标签: containers

网络命名空间内的 iptables LOG 规则

我正在尝试为 docker 容器设置 iptables 规则。我正在使用nsenter在容器的网络命名空间内执行 iptables 命令:

# log access to port 8080
PID=$(docker inspect --format "{{.State.Pid}}" $ID)
/home/ubuntu/nsenter -n -t $PID iptables -A OUTPUT -o eth0 -p tcp -m tcp --dport 8080 -j LOG
Run Code Online (Sandbox Code Playgroud)

除了LOG规则之外,这种方法非常有效。那些似乎没有在任何地方登录。请注意,应用于主机系统的相同规则有效并记录到/var/log/kern.log.

我在哪里可以找到这些日志规则的输出?这是网络命名空间的已知问题/限制吗?

networking iptables containers docker

11
推荐指数
1
解决办法
4382
查看次数

有 linux-vserver 时为什么是 LXC?

我不是LXC专家,但据我所知,它与linux-vserver非常相似。

如果这是正确的,我想知道为什么在已经拥挤的虚拟化阵营中还有另一个玩家?LXC 提供(或承诺)什么是 linux-vserver 没有的?

我是 linux-vserver 的长期用户,我记得大约在很多年前,在所有这些虚拟化炒作之前。最近开发速度放缓,但从未完全停止 - 我知道是因为开发人员帮助我将其恢复到 linux/hppa 上的有用状态(至少在 Gentoo 中)。他们定期推出针对最新内核的补丁,使用所有最新的好东西(LXC 使用的相同容器基础架构),甚至与 GRsecurity 集成。

开始 LXC 工作的人可能有充分的理由这样做,而不是加入已经完善的 linux-vserver 基础?那我想知道。

这都是关于主线集成的吗?那么为什么不采用 linux-vserver 进行集成,就像 Xen 人对 XenLinux 所做的那样?

virtualization linux containers lxc linux-vserver

9
推荐指数
1
解决办法
5167
查看次数

用简单的英语解释什么是 LXC 以及它的用处

  • 什么是LXC?
  • 它有什么用?
  • LXC 和普通虚拟化有什么区别?

linux containers lxc

9
推荐指数
2
解决办法
4436
查看次数

防止docker容器内的叉子炸弹

我目前正在努力限制我调用的用户的进程数sandbox

我在里面配置了进程限制,/etc/security/limits.conf如下所示:

sandbox            hard    nproc            100
Run Code Online (Sandbox Code Playgroud)

但是如果我想以sandbox用户身份连接到容器,ssh 会返回:

shell request failed on channel 0
Run Code Online (Sandbox Code Playgroud)

所以我登录root并检查了sandbox用户正在运行的进程数,但它少于 5。

那么是什么阻止了我通过 ssh 登录?
没有为sandbox用户设置限制 ssh 登录工作正常。

或者有没有其他方法可以防止分叉炸弹攻击?

ssh pam containers docker

9
推荐指数
1
解决办法
2455
查看次数

如何使用crictl找出容器的PID

Kubernetes 正在弃用 Docker 作为 CRI 引擎。现在有containerd和CRI-O,可以作为它的替代品。两者都可以通过 cri-tools 中的 crictl 进行管理。

我需要一些通用的方法来查找正在运行的容器的 PID。

实际上我需要一个相当于 docker 命令的crictl :

# docker inspect 86cd8d605c2da -f '{{ .State.Pid }}'
9625
Run Code Online (Sandbox Code Playgroud)

containers kubernetes

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

如何处理 ubi-8-appstream 丢失的软件包?

当我们需要使用此容器部署应用程序时,我正在寻找红帽赞助的容器映像的最佳实践:通用基础映像。

许多第三方应用程序需要 AppStream 中的软件包,而 RHEL 的 AppStream 和ubi-8-appstream.

我们可以使用该包harfbuzz作为示例,在运行的 RHEL 8.5 上我们有可用的开发包:

harfbuzz-1.7.5-3.el8.x86_64
harfbuzz-icu-1.7.5-3.el8.x86_64
harfbuzz-devel-1.7.5-3.el8.x86_64
Run Code Online (Sandbox Code Playgroud)

ubi-8-appstream只有运行时包可用,可以直接在其repo上看到。

在这种情况下,获取开发包的正确方法是什么?添加 RHEL 的 AppStream 似乎不是一个好主意,这也会引发subscription-manager问题。

我在这里缺少什么?

redhat containers redhat-ubi

8
推荐指数
1
解决办法
4261
查看次数

我应该将应用程序拆分为多个链接的 Docker 容器还是将它们合并为一个?

背景

我目前正在构建一个我想部署到 Docker 容器的应用程序。

容器将在我的服务器上运行。我希望能够在同一台服务器上运行其他应用程序,而不会增加运行的 Docker 映像的数量。

截至目前,不同的零件/容器是:

  • Nginx(反向代理,静态资源)
  • 节点(应用程序前端)
  • 节点(应用后端/API)
  • 蒙戈(数据库)

想法

我的一般想法是每个不同的部分都应该作为一个容器运行。我担心的是,如果我要在同一台机器上运行另一个应用程序,我最终会用大量无法处理的链接图像来膨胀它。

这可以通过为每个应用程序制作一个图像来解决。这样上述服务将成为一个图像的一部分。这首先与 Docker 的整体安全性或目的冲突吗?

澄清

在一个 Docker 镜像中拥有多个服务是否与 Docker 的目的冲突?

当从一个镜像运行服务时,容器的整体安全优势会被消除吗?

virtualization containers docker

7
推荐指数
1
解决办法
3491
查看次数

是否可以将 Active Directory 添加到 Windows 容器?

在我的公司,我们目前正在开发一种产品,该产品最终将支持通过 OpenLDAP 和 Active Directory 进行身份验证。我们已经配置了 Windows Server 2016,并希望通过 Windows 容器创建一个隔离的环境来测试我们的应用程序。

不幸的是,在容器中安装/启用 AD 功能时,我遇到了障碍。我收到的错误是:

Add-WindowsFeature : The request to add or remove features on the specified server failed.
The operation cannot be completed, because the server that you specified requires a restart.
At line:1 char:1
+ Add-WindowsFeature AD-Domain-Services
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : DeviceError: (@{Vhd=; Credent...Name=localhost}:PSObject) [Install-WindowsFeature], Exception
+ FullyQualifiedErrorId : DISMAPI_Error__Failed_Reboot_Required,Microsoft.Windows.ServerManager.Commands.AddWindowsFeatureCommand
Run Code Online (Sandbox Code Playgroud)

我错过了什么,或者这只是不起作用?

这是我的 Dockerfile

FROM microsoft/windowsservercore

RUN powershell Get-WindowsFeature
RUN powershell -Command Add-WindowsFeature AD-Domain-Services 
Run Code Online (Sandbox Code Playgroud)

完整的构建日志:

PS C:\windows-ad> docker build …
Run Code Online (Sandbox Code Playgroud)

containers windows-server-2016

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

哪些镜像 dockerd 自动启动?

一旦我在 Ubuntu 盒子上重新启动了 docker 服务,它就service docker restart启动了一些我没想到它会启动的容器。

这是为什么?哪个配置文件/存储/任何内容保存有关应启动哪些映像的信息?

当我用 . 列出它们时,我有很多图像(~50)docker images。但当我启动时只有 8 个启动dockerd。为什么?我该如何解决这个问题?

谢谢。

configuration containers docker

7
推荐指数
2
解决办法
6733
查看次数

如何在原始网络上为 docker 容器提供自己的可路由 IP?

主要问题

想象一下这个场景。

  • 192.168.0.0/24的网络。
  • 主机名为“Docker-Host”的计算机正在 192.168.0.2 运行 docker 引擎
  • 'Docker-Host' 运行 sshd 服务器
  • 在 'Docker-Host' 上,我在使用 ssh:22 和 https:443 (GitLab) 的容器中运行应用程序

我如何为这个容器分配 192.168.0.3 的 IP?

我需要服务在他们设计的默认端口上运行。


附加信息

我不能使用反向代理作为解决方案,因为这并不能解决如何通过 SSH 与 GitLab 实例通信的问题。

在这种情况下,将端口 22 映射到主机上的不同端口是不专业的,我的客户端开发人员不会喜欢这种设置。

如果我正在启动此应用程序的许多实例,这也将很难维护。并且必须为每个容器将每个 SSH 映射到主机上的新端口。

我的客户需要能够在没有额外配置客户端的情况下解析和运行以下内容。

https://GitLab.internal.net.work

ssh git 克隆https://GitLab.internal.net.work

我已经查看了 Docker 网络文档,除非我弄错了,否则我看不到一个易于维护的解决方案(尽管我还是 Docker 的新手)。

如何才能做到这一点?在这种情况下,其他人在做什么作为“最佳实践”?(如果可能,请以 docker-compose 语法的形式给出答案)。

ssh containers docker kubernetes docker-compose

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