相关疑难解决方法(0)

安全地运行码头

我知道docker守护进程需要以root身份运行,所以我被告知这会导致一些安全隐患,例如如果容器被泄露,攻击者可以对主机的系统文件进行更改.

在发生攻击时,我可以采取哪些预防措施来减轻损害?

运行docker守护程序时是否应该注意一下这种做法?我已经考虑过让一个流浪汉向上移动vm并让docker在vm中运行.

security docker

5
推荐指数
1
解决办法
349
查看次数

Docker中的Java 9 ProcessHandle API:PID值和可见进程的差异

ProcessHandle简单的"Dockerized"Java程序中尝试使用Java 9中的新API时,我发现在检索正在运行的进程的进程ID时,行为方面存在差异.特别是在调用方法时ProcessHandle.pid(),Docker上生成的PID与主机上显示的本机ID不同,尽管文档说该方法"返回进程的本机进程ID".另外,结果之间存在差异ProcessHandle.allProcesses().

为了演示,以下程序执行以下操作:

  1. 打印当前进程的PID,
  2. 产生一个睡眠时间为几秒钟的子进程(以便有时间打印其信息),
  3. 最后打印所有可见的进程.

public static void main(String[] args) {
    System.out.println("### Current process info ###");
    ProcessHandle currentProcess = ProcessHandle.current();
    printInfo(currentProcess);

    System.out.println();

    // Fork a child process that lasts for a few seconds
    spawnProcess("jshell --startup ./sleep.txt");

    printAllVisibleProcesses();
}

private static void printAllVisibleProcesses() {
    System.out.println("### Visible processes info ###");
    ProcessHandle.allProcesses().forEach(ProcessHandleExamples::printInfo);
    System.out.println();
}

private static void spawnProcess(String command) {
    System.out.println("Spawning: " + command);
    try {
        Runtime.getRuntime().exec(command);
    } catch (IOException e) {
        e.printStackTrace();
    } …
Run Code Online (Sandbox Code Playgroud)

java docker java-9 processhandle

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

标签 统计

docker ×2

java ×1

java-9 ×1

processhandle ×1

security ×1