无法在 Dockerfile 中获取 tmux 配置文件

Cannot source tmux config file in a Dockerfile

我在需要 tmux 的地方构建一个 Docker 图像,而不是每次启动容器时都必须 运行 tmux source-file ~/.tmux.conf(疯狂的谎言),我想要在构建时获取配置文件。但是,这不起作用:

ARG PYTORCH="1.6.0"
ARG CUDA="10.1"
ARG CUDNN="7"

FROM pytorch/pytorch:${PYTORCH}-cuda${CUDA}-cudnn${CUDNN}-devel

RUN apt-get update && apt-get install -y man-db manpages-posix vim screen tmux\
  && apt-get clean \
  && rm -rf /var/lib/apt/lists/*
# configuration for tmux
COPY src/.tmux.conf ~/.tmux.conf
RUN tmux source-file ~/.tmux.conf

我收到错误:

error connecting to /tmp/tmux-0/default (No such file or directory)
The command '/bin/sh -c tmux source-file ~/.tmux.conf' returned a non-zero code: 1

发生了什么事?这似乎不是 file not found 错误。

没有 tmux 服务器 运行ning(根本没有服务器 运行ning,因此缺少文件)。当您在容器中 运行 tmux 时,配置文件将自动加载,因此可以删除失败的行

此外,docker 不会扩展 ~,因此您需要提供绝对路径。生成的 Dockerfile 应该看起来像这样,假设您 运行 在容器中以 root 用户身份运行:

ARG PYTORCH="1.6.0"
ARG CUDA="10.1"
ARG CUDNN="7"

FROM pytorch/pytorch:${PYTORCH}-cuda${CUDA}-cudnn${CUDNN}-devel

RUN apt-get update && apt-get install -y man-db manpages-posix vim screen tmux\
  && apt-get clean \
  && rm -rf /var/lib/apt/lists/*
# configuration for tmux
COPY src/.tmux.conf /root/.tmux.conf