ubuntu 系统连接服务器,在docker容器内实现X11 可视化,以及文件的上传、下载

 

发现比下面方法更好的方法,用Remmina软件,配置RDP连接,实现服务器可视化

=====================================

 

MobaXterm 不支持 Ubuntu,Termius没有X11 可视化支持,推荐Asbru软件:

https://www.asbru-cm.net/

这种方法不太推荐,更推荐VNC方法登陆、可视化服务器,参考:https://www.cnblogs.com/biyun/p/18664556

1. 配置X11 可视化:

如下,勾选Forward X

2.docker容器内配置X11 可视化

(1)在 Dockerfile 中安装 xclock

这种方法比较推荐,因为它将 xclock 的安装集成到 Docker 镜像构建过程中,确保每次启动容器时都已有 xclock 可用。

更新 Dockerfile

确保你的 Dockerfile 包含安装 x11-apps 的步骤,因为 xclock 是 x11-apps 包的一部分。

以下是更新后的示例 Dockerfile:

dockerfile
复制代码
FROM nvidia/cuda:12.1-devel-ubuntu20.04 # 安装必要的开发工具和 X11 工具
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
libxkbcommon-x11-0 \
libxcb-xinerama0 \
x11-apps \ # 安装 x11-apps 包含 xclock 工具 python3 \
python3-pip \
curl
# 安装 PyTorch
RUN python3 -m pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu121
# 设置环境变量
ENV PATH /usr/local/cuda-12.1/bin:$PATH
ENV LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH
# 复制项目代码
COPY . /workspace/ WORKDIR /workspace
# 启动命令
CMD ["bash"]
上面的命令只是一个概况的介绍,主要是标注的几行,安装关于X11 的软件。

构建 Docker 镜像

通过以下命令构建 Docker 镜像:

sh
复制代码
docker build -t my_cuda_project .

(2)在本地运行echo $DISPLAY,输出类似:

hynx-HYDT-GPU-01/unix:21  MIT-MAGIC-COOKIE-1  f68b4b725b216ae189c9186e9877540c
在远程服务器上运行,xauth add hynx-HYDT-GPU-01/unix:21 MIT-MAGIC-COOKIE-1 f68b4b725b216ae189c9186e9877540c

上面命令不太准确,具体问大模型吧。。

然后,在服务器是运行echo $DISPLAY,列出类似如下localhost:21.0的信息,

然后,在服务器上运行 xauth list,找的与

localhost:21.0 (即 unix:21) 对应的认证信息。例如:

hynx-HYDT-GPU-01/unix:21  MIT-MAGIC-COOKIE-1  f68b4b725b216ae189c9186e9877540c

(3)启动容器的命令中加入下面关联:

docker run --gpus all -it \

  -e DISPLAY=$DISPLAY \

  -v /tmp/.X11-unix:/tmp/.X11-unix \

  -v $HOME/.Xauthority:/root/.Xauthority:rw \

  my_cuda_project

上面使用 rw 选项以确保读写权限。

进入容器后,根据 上面xauth list 输出的认证信息添加 X11 认证信息:

xauth add unix:21 . f68b4b725b216ae189c9186e9877540c

这里我不确定,启动容器的命令包含了,-v $HOME/.Xauthority:/root/.Xauthority:rw \,是不是不用执行上面一行的命令了,

在我的情况,上面一行命令没有执行成功。

(3.2) 使得启动容器 在退出后,容器还存在,从镜像生成容器的命令如下:

docker rm -f foundationpose_custom_cuda121
DIR=$(pwd)/../
xhost + && docker run -d \
--gpus all \
--env NVIDIA_DISABLE_REQUIRE=1 \
--network=host \
--name foundationpose_custom_cuda121 \
--cap-add=SYS_PTRACE \
--security-opt seccomp=unconfined \
-v $DIR:$DIR \
-v /home:/home \
-v /mnt:/mnt \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-v /tmp:/tmp \
-v ~/.Xauthority:/root/.Xauthority:rw \
--ipc=host \
-e DISPLAY=${DISPLAY} \
-it foundationpose_custom_cuda121_jbw:latest bash
# tail -f /dev/null

然后,通过docker exec  -it  foundationpose_custom_cuda121  bash 进入容器。

 

(4)在容器内运行xclock,如果没有安装,执行apt-get install -y x11-apps

 

3.上传本地文件到远程服务器:

方法1

(1)上传本地文件到服务器,命令:put 本机地址/文件 客户端地址 

(2)下载远程服务器文件到本地,命令: get  远程服务器文件   本地路径 

方法2,【推荐】安装图像界面软件 filezilla

sudo apt-get install filezilla

 

参考

https://unix.stackexchange.com/questions/344795/is-there-a-program-like-mobaxterm-for-linux-systems-sftp-gui-browser-termina

https://blog.csdn.net/HITORANGE/article/details/123584025 

posted @ 2025-01-03 15:38  qingchenwuhou  阅读(740)  评论(0)    收藏  举报