Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker:在dockerfile内启动tmux会话?_Docker - Fatal编程技术网

Docker:在dockerfile内启动tmux会话?

Docker:在dockerfile内启动tmux会话?,docker,Docker,遇到一个问题,tmux未在docker容器文件中初始化。此外,人们将tmux附加到一个预先存在的容器上,从而造成搜索障碍。这不是我想要做的 # in the dockerfile FROM debian:latest RUN apt-get install tmux RUN tmux new -s foo -d RUN tmux ls _________________________ $: docker build . ... > [8/8] RUN tmux ls: #11 0.

遇到一个问题,
tmux
未在docker容器文件中初始化。此外,人们将
tmux
附加到一个预先存在的容器上,从而造成搜索障碍。这不是我想要做的

# in the dockerfile
FROM debian:latest
RUN apt-get install tmux
RUN tmux new -s foo -d
RUN tmux ls
_________________________

$: docker build . 
...
 > [8/8] RUN tmux ls:
#11 0.415 no server running on /tmp/tmux-0/default
------
executor failed running [/bin/sh -c tmux ls]: exit code: 1
我试图做的是运行两个“应用程序”,它们需要同时相互对话。这个想法是为了避免使用docker compose来解决这个特殊问题

我可以轻松地将这两个命令作为后台进程运行

但是,我更愿意让它们在tmux会话中运行,以便在映像运行时附加到该会话


在构建过程中,如何在docker容器内启动
tmux

这是层的问题:

这是你的工作代码

FROM debian:latest
RUN apt-get update && apt-get install -y tmux
RUN tmux new -s foo -d && tmux ls
但它只会解决构建问题,而不会解决您的问题

您应该在入口点这样做,因为当层终止时tmux被终止

在构建每个层的过程中,您可以启动一些进程(您启动了tmux)。层构建完成后,将终止在该特定层中启动的所有进程

容器只是只读图像层之上的另一层,所以您需要在那里启动tmux

Entrypoint是容器引导时运行的bash脚本

示例入口点可以是:

#/bin/bash
#entrypoint.sh
set-eu
tmux new-sfoo-d&&tmux ls
执行官“$@”
  • 为entrypoint.sh添加可执行权限:
    chmod+x入口点.sh
  • 然后您需要在
    Dockerfile
    \
    COPY ./entrypoint.sh /entrypoint.sh
    ENTRYPOINT ["/entrypoint.sh"]
    
另一种解决方案 在docker映像中启动多个程序是不好的做法。你正在失去码头工人的主要优势,即分离

然而,官方文件对你的问题说了一句话:

我真的很喜欢用
supervisord
来做这件事(当我必须做的时候)。这是一个管理程序的小程序

工具书类
  • Docker层:
  • Docker入口点:
  • 监督员: