标签: container

进程后代

我正在尝试构建一个流程容器。容器会触发其他程序。例如 - 使用 '&' 启动运行后台任务的 bash 脚本。

我所追求的重要特性是:当我杀死容器时,它下面产生的所有东西都应该被杀死。不仅是直系子女,还有他们的后代。

当我开始这个项目时,我错误地认为当你杀死一个进程时,它的孩子也会自动被杀死。我曾向有同样错误想法的人寻求建议。虽然有可能捕捉到信号并将杀戮传递给儿童,但这不是我在这里要寻找的。

我相信我想要实现的目标,因为当你关闭一个 xterm 时,它里面运行的任何东西都会被杀死,除非它被 nohup'd。这包括孤立进程。这就是我想要重新创建的。

我有一个想法,我正在寻找的内容涉及 unix 会话。

如果有一种可靠的方法来识别进程的所有后代,那么能够向它们发送任意信号也会很有用。例如SIGUSR1。

process signals fork container

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

“date -d”命令在 Docker Alpine Linux 容器上失败

我使用以下 Dockerfile在Docker 容器中构建了Alpine Linux

FROM alpine:3.2
RUN apk add --update jq curl && rm -rf /var/cache/apk/*
Run Code Online (Sandbox Code Playgroud)

构建运行成功:

$ docker build -t collector .
Sending build context to Docker daemon 2.048 kB
Sending build context to Docker daemon 
Step 0 : FROM alpine:3.2
3.2: Pulling from alpine
8697b6cc1f48: Already exists 
alpine:3.2: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security.
Digest: …
Run Code Online (Sandbox Code Playgroud)

linux date container docker alpine-linux

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

Podman 卷安装:何时使用 :z 或 :Z 后缀?

Podman 手册页解释了卷安装/绑定:

\n
\n

像 SELinux 这样的标签系统要求在装载到容器中的卷\n内容上放置适当的标签。如果没有标签,安全系统可能\n会阻止容器内运行的进程使用该内容。默认情况下,Podman 不会更改操作系统设置的标签。

\n

要更改容器上下文中的标签,您可以将两个后缀\n :z:Z之一添加到卷装载。这些后缀告诉 Podman 重新标记共享卷上的文件\n对象。z选项告诉 Podman 两个容器共享卷内容。因此,Podman 使用共享\n内容标签来标记内容。共享卷标签允许所有容器读取/写入内容。\nZ选项告诉 Podman 使用私有非共享标签来标记内容。

\n
\n

然而,故障排除页面用几乎相同的词语解释了同样的事情。

\n

现在,对于 Podman 和 SELinux 相当陌生,想知道我实际上应该在什么时候使用什么?\n我知道,当我收到权限错误时,它们可能是由 SELinux 引起的,所以两个开关之一可以解决这个问题。但这两个选项(小写 z 和大写 Z)有什么区别呢?

\n

它所说的区别是:

\n
    \n
  • :z创建共享内容标签
  • \n
  • :Z创建私人非共享标签
  • \n
\n

这引入了许多新词:

\n
    \n
  • 共享和非共享(这是什么意思?)
  • \n
  • ??? vs private(再次,it\xe2\x80\x99s 不清楚这对我来说意味着什么)
  • \n
  • 它还表示一个选项为 \xe2\x80\x9ccontent label\xe2\x80\x9d ,而另一个选项仅表示 \xe2\x80\x9clabel\xe2\x80\x9d \xe2\x80\x93 这些之间有区别吗两个术语还是相同?
  • \n
\n

那么这些词在这种情况下意味着什么?\n最后一个问题:我什么时候应该使用什么?

\n

selinux container docker podman

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

Linux - LXC;使用最小的 X11 部署镜像

目前是否可以设置具有 X11 功能的LXC 容器?我期待最轻的可用 X11 容器(内存方面),硬件加速是一个加分项,但不是必需的。

如果目前无法实现或现成可用,是否知道需要实现哪些功能才能支持它?

linux xorg x11 container lxc

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

如何使用 systemd 创建用户 cgroup

lxcArch Linux. 以下是基本系统信息:

[chb@conventiont ~]$ uname -a
Linux conventiont 3.17.4-Chb #1 SMP PREEMPT Fri Nov 28 12:39:54 UTC 2014 x86_64 GNU/Linux
Run Code Online (Sandbox Code Playgroud)

这是一个自定义/编译内核,具有user namespace enabled

[chb@conventiont ~]$ lxc-checkconfig 
--- Namespaces ---
Namespaces: enabled
Utsname namespace: enabled
Ipc namespace: enabled
Pid namespace: enabled
User namespace: enabled
Network namespace: enabled
Multiple /dev/pts instances: enabled

--- Control groups ---
Cgroup: enabled
Cgroup clone_children flag: enabled
Cgroup device: enabled
Cgroup sched: enabled
Cgroup cpu account: enabled
Cgroup memory controller: …
Run Code Online (Sandbox Code Playgroud)

systemd container cgroups virtualization lxc

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

如何在具有用户命名空间的 systemd-nspawn 容器中使用设备?

我想cryptsetupsystemd-nspawn容器内安装一个加密的图像文件。但是,我收到此错误消息:

[root@container ~]# echo $key | cryptsetup -d - open luks.img luks
Cannot initialize device-mapper. Is dm_mod kernel module loaded?
Cannot use device luks, name is invalid or still in use.
Run Code Online (Sandbox Code Playgroud)

dm_mod内核模块被加载在主机系统上,虽然事情看起来有点容器内的怪异:

[root@host ~]# grep dm_mod /proc/modules
dm_mod 159744 2 dm_crypt, Live 0xffffffffc12c6000

[root@container ~]# grep dm_mod /proc/modules
dm_mod 159744 2 dm_crypt, Live 0x0000000000000000
Run Code Online (Sandbox Code Playgroud)

strace表示cryptsetup无法创建/dev/mapper/control

[root@etrial ~]# echo $key | strace cryptsetup -d - open luks.img luks 2>&1 | …
Run Code Online (Sandbox Code Playgroud)

users container namespace bind-mount systemd-nspawn

12
推荐指数
1
解决办法
1410
查看次数

LXC 容器作为沙盒环境

我目前正在一个安全的沙箱环境中开始一个评估不受信任的程序(学生作业)的项目。主要思想是围绕 lxc-utils 为 GlassFish 和 Java 包装器创建一个 Web 应用程序来管理 LXC 容器。它将有一个等待程序的队列,一个 Java 包装器将维护固定数量(池)的 LXC 容器,为每个程序分配一个(未使用的)容器。

每个容器都应该使用 SELinux 来保护主机系统。

我的问题是:为沙箱环境创建这样的机制是个好主意,还是有更好的解决方案来解决这个问题?它应该轻巧且安全,以防止学生的创造力。

security selinux container sandbox lxc

10
推荐指数
1
解决办法
4484
查看次数

Ubuntu上“ip地址”命令输出中的接口名称中的“if1@if2”是什么意思

at 符号 (@) 在 Ubuntu 上的“ip address”命令(或“ip link”命令)输出中的接口名称中是什么意思,例如以下输出中的接口名称“eth0@if44”:

root@aafa1fc24a0b:/# ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: tunl0@NONE: <NOARP> mtu 1480 qdisc noop state DOWN group default qlen 1
    link/ipip 0.0.0.0 brd 0.0.0.0
3: ip6tnl0@NONE: <NOARP> mtu 1452 qdisc noop state DOWN group default qlen 1
    link/tunnel6 :: brd ::
43: eth0@if44: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP …
Run Code Online (Sandbox Code Playgroud)

linux networking ubuntu container interface

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

即时复制和隔离用户环境

我将在这个项目中使用 Ubuntu Linux。

为了在会议上培训特定应用程序,我需要:

  1. 让每个学生都能够通过 ssh 连接到服务器上的同一个用户帐户
  2. 每次登录时自动将用户置于单独的隔离环境中
  3. 每个隔离的环境都包括应用程序、示例配置文件和标准的 unix 工具集(例如 grep、awk、sort、uniq 等)。但是,只要用户只能损坏自己的文件系统,就可以访问整个 linux 文件系统孤立的环境,而不是其他人的环境。
  4. 当用户 SSH 会话结束时,应该销毁虚拟环境

对于#1,我们希望使用单个用户帐户,这样我们就不必为每个学生创建一个帐户并分发用户名和密码。

有谁知道我如何才能实现这些目标?哪种技术(例如 LXC、Chroot 等)最适合这种情况?我一直在考虑使用 .bash_profile 和 .bash_logout 来处理这些环境的创建和破坏,但不确定哪种技术能够创建我需要的环境。

linux chroot container lxc

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

为什么 systemd-nspawn 不适合生产部署?

在阅读 systemd-nspawn 时,提到它不应该在生产环境中使用。原因似乎是缺乏管理和部署基础设施。实用性是唯一的原因,还是也有潜在的安全/功能原因?

linux systemd container containers

8
推荐指数
2
解决办法
2407
查看次数