如何在Docker容器中运行tmux?

时间:2018-08-12 13:17:47

标签: docker tmux

我有一些在P2实例上运行的docker容器。 过去我在P2实例中运行tmux,在内部运行docker容器。 之后,我使用

docker exec -it 

进入正在运行的docker容器。 我想避免上述情况,并且能够在现有容器中运行tmux。击中

tmux new -s <some name>

什么都不做。

3 个答案:

答案 0 :(得分:1)

我假设您想连接到通过tmux远程运行​​的docker容器。为此,您将必须在容器中运行ssh服务器,并使用tmux附加到ssh会话。例如:

  • 创建安装了sshtmux的容器映像。 Dockerfile可能看起来像这样:

    FROM ubuntu:latest
    RUN apt-get update && \
      apt install -y tmux && \
      apt install -y openssh-server && \
      service ssh start && \
      tmux new -s mysesh
    EXPOSE 22/tcp
    
  • 运行容器,并向前端口ssh端口:

    docker run -it -d -p 8654:22 <image name>
    
  • 附加到tmux会话:

    ssh user@<hostname> -p 8654 -t "tmux a -t mysesh"
    

注意tmux会话是特定于用户的,因此请确保该用户存在于容器中,并且tmux会话以容器中的用户身份启动。

答案 1 :(得分:0)

如果tmux已在容器中运行,则它与docker attach container_name一样简单。 (Docs。)

答案 2 :(得分:0)

tmux可能在Docker映像中不可用,您可以在将其附加到Docker容器后进行安装。

sudo apt install tmux

那么您应该能够执行

tmux new -s <some name>

在P3机器上进行了尝试,效果很好。 参考:https://linuxize.com/post/getting-started-with-tmux/