我有一些在P2实例上运行的docker容器。 过去我在P2实例中运行tmux,在内部运行docker容器。 之后,我使用
docker exec -it
进入正在运行的docker容器。 我想避免上述情况,并且能够在现有容器中运行tmux。击中
tmux new -s <some name>
什么都不做。
答案 0 :(得分:1)
我假设您想连接到通过tmux
远程运行的docker容器。为此,您将必须在容器中运行ssh服务器,并使用tmux
附加到ssh
会话。例如:
创建安装了ssh
和tmux
的容器映像。 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/