Tag: 进程

在docker中通过java服务运行bash脚本时处理退出代码127

我在Docker中从java代码运行这个脚本,并且进程的退出代码是127。 process = Runtime.getRuntime().exec(commands); // commands is an array with script name and other variables defined in the script. process.waitFor(); openssl enc -d -aes-256-cbc -in $ENCRYPTED_TARBALL -out $OUTPUT_TAR -K $password 我确定在docker和脚本中安装了openssl,可以访问$ ENCRYPTED_TARBALL和$ OUTPUT_TAR。 如果脚本执行成功,应该创build$ OUTPUT_TAR文件。

pm2-docker的“唯一”论点是什么?

pm2-docker应该在Docker容器中运行,所以…根据http://pm2.keymetrics.io/docs/usage/docker-pm2-nodejs/ : 要分割他自己的Docker中的每个进程,你可以使用-only [app-name]选项: CMD [“pm2-docker”,“process.yml”,“ – only”,“APP”] 这是什么 – –onlyselect? “在他自己的Docker中分割每个进程”。 ? 他自己的Docker是什么? 容器? 所以pm2-docker在一个容器里运行,并在里面产生容器?

Python2subprocess不会将Ctrl-C信号传递到具有交错标准输出stderr的docker容器

我有一个python 2subprocess,启动docker容器,并尝试交错stdout和stderr: from subprocess import check_output, Popen, PIPE, STDOUT from threading import Thread command_args = [ "docker", "run", "-i", "–rm", '–entrypoint', 'sleep', # Pretend long running task 'ubuntu:trusty', '20' ] print('Running subprocess') p = Popen(command_args, stdin=PIPE, stdout=PIPE, stderr=PIPE) def log_pipe(pipe): for line in iter(pipe.readline, b''): print(line.rstrip()) stdout_thread = Thread(target=log_pipe, args=[p.stdout]) stderr_thread = Thread(target=log_pipe, args=[p.stderr]) stdout_thread.start() […]

无法在远程Linux机器上inputDocker容器,并在本地机器上正常工作?

我有我的本地和远程Linux机器上设置nsenter。 远程盒是托pipe的虚拟机。 本地盒子是我办公室里的电脑。 两者都运行Ubuntu 12.0.4 LTS服务器版本,两者都有内核补丁来支持docker。 我的本地机器正在运行Docker 1.0.1,这是Docker的apt-get版本。 远程盒正在运行最新最好的1.4.1。 下面是我用来在两台机器上执行nsenter的过程,用远程机器的详细信息显示: kelpmaster@external:~$ sudo docker inspect –format {{.State.Pid}} fluffy_cinnamon 32113 kelpmaster@external:~$ sudo nsenter –target 32113 –mount –ipc –net –pid nsenter: cannot open /proc/32113/ns/pid: No such file or directory 我检查了远程盒上的进程列表, 32113肯定在进程列表中。 我检查了文件结构,并确定有一个名为/ proc / 32113 / ns的目录。 但是,在我的远程文件夹中,名为pid的文件/目录在进程名称空间文件夹中不存在 。 在我的本地盒子上呢。 为什么当我的本地盒子正确地创build时,我的远程盒子里没有pid文件/目录? 我该如何解决这个问题,这样我就可以在我的本地盒子上将我的Docker容器放在远程盒子上了?

在reader.ReadLine()之后进程窗口不能继续

我使用Process对接Neo4j Docker镜像。 在执行操作之前,我需要确保图像正确对接。 正如你在这里看到的,我将Docker Toolbox的标准输出redirect到Process窗口,然后写入Docker Toolbox正在做的任何事情。 但是,在图像停靠之后,根本不会进行并停留在该状态。 除了while循环之外的所有代码都不会被执行。 ProcessStartInfo psi = new ProcessStartInfo(); psi.WindowStyle = ProcessWindowStyle.Normal; psi.FileName = ConfigurationManager.AppSettings["Bash"]; psi.WorkingDirectory = ConfigurationManager.AppSettings["ToolBox"]; psi.Arguments = BuildArgumentString(); psi.UseShellExecute = false;//set to false to redirect standard output psi.RedirectStandardOutput = true; Process process = Process.Start(psi); StreamReader reader = process.StandardOutput; while (!reader.EndOfStream) { Console.WriteLine(reader.ReadLine()); } //codes beyond this while loop […]

当我们停止发送到pid 1时,docker如何处理subprocess?

我目前在一个Dockerfile中使用ENTRYPOINT [“/sbs/start.sh”]。 所以当一个容器启动时,start.sh以pid 1的forms运行,而我的start.sh脚本跨越两个subprocess到pid1。 我的问题是,如果docker停止命令发送到pid1,docker如何处理subprocess? 孩子的过程是否会优雅地停止? 还是会被强行杀害? 在这些有subprocess的情况下,有一个简单的进程pipe理器和init系统( https://github.com/Yelp/dumb-init或supervisor)来处理这些问题会更好吗? 如果是的话,请build议一个轻量级的init系统? 或者可以pid1(在我的情况下start.sh)照顾这些问题? ps -ef的输出: root 1 0 0 19:23 ? 00:00:00 /bin/bash /sbs/start.sh root 13 1 0 19:23 ? 00:00:00 /sbs/bin/envconsul… root 20 13 1 19:23 ? 00:00:21 /usr/lib/… 任何帮助表示赞赏。

单片(VS)微服务==>线程(vs)进程

我有一个单一的进程有5个线程的单片应用程序。 每个线程完成特定的任务。 想把这个应用程序转移到使用docker的微服务。 如果我看看架构,每个工作线程将成为一个docker进程。 因此,在我看来,单核与微服务在某种程度上变得更像是Thread vs Process讨论。 拥有庞然大物的原始思想是有性能的线程和共享相同的内存。 现在使用微服务拱,我被推到一个stream程模型,可能不适合从性能的angular度来看。 我有点困扰如何解决这个问题。

为什么我的节点child_process提前终止?

我想运行一个asynchronous节点child_process运行一个docker集装箱。 let runDockerCmd = `docker-compose -f ./vm/docker-compose.yml run –rm vm node temp.js`; child_process.exec(runDockerCmd, (error, stdout, stderr) => { if (error) { console.error(`exec error: ${error}`); return; } console.log(`stdout: ${stdout}`); console.log(`stderr: ${stderr}`); }); 其中temp.js包含一个for loop 。 有时它运行一半的循环,有时三分之一,然后终止。 我可以得到它使用child_process.execSync工作,但这有点child_process.execSync 。 为什么它会像这样退出,如何保持它的活力?

将Docker Cgroup中的线程标识转换为主机线程标识

假设我知道$ CONTAINER_PARENT_PROCESSID及其相应的$ HOST_PARENT_PROCESSID,是否有任何直接的方法将cgroups线程ID映射到主机线程ID。 容器中的线程ID是'ps -T $ CONTAINER_PARENT_PROCESSID'输出的一部分,主机中的线程ID是'ps -T $ HOST_PARENT_PROCESSID'输出的一部分。

Dovecot:重装时拒绝杀死权限

问题 我想在我的服务器上的Docker中运行一个Dovecot服务器。 守护进程成功启动,但每当我尝试重新加载configuration,重新启动,或停止守护进程我得到以下错误: start-stop-daemon: warning: failed to kill X: Permission denied 其中X是鸽舍进程的PID。 我试图find任何接近我得到的错误的东西都是不成功的。 更多关于环境 我在基于以下linux版本的docker容器中运行这个进程: Linux 3b71bd992d42 4.10.0-21-generic #23-Ubuntu SMP Fri Apr 28 16:14:22 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux Docker镜像由https://github.com/tomav/docker-mailserver中的Dockerfile定义。 我的dovecot本地configuration看起来像 disable_plaintext_auth = no mail_privileged_group = mail log_path = /var/log/dovecot.log mail_location = mbox:/var/mail/%u userdb { driver = passwd } passdb { args = %s […]