当前位置: 首页 > ops >正文

Docker+MobaXterm+x11实现容器UI界面转发本地

本文记录了搭建一个可直接ssh访问的container,并可通过x11转发界面的实现过程

0.1 实验环境
PC:windows 11

Server:Ubuntu 18.04

Docker image:Ubuntu 18.04

1. 获取Ubuntu 18.04的镜像
使用Dockerfile获取镜像,对应的文件内容如下

# Get the base Ubuntu image from Docker Hub
FROM ubuntu:18.04
# FROM continuumio/anaconda3:latest

LABEL maintainer="hello@hello.edu"
ENV DEBIAN_FRONTEND=noninteractive

# Update apps on the base image
# RUN apt-get -y update

# Packages
# RUN apt-get install -y autoconf automake autotools-dev curl libmpc-dev libmpfr-dev \
#                       libgmp-dev gawk build-essential bison flex texinfo gperf    \
#                       libtool patchutils bc libqt4-dev python-dev flex bison      \
#                       libgoogle-perftools-dev python-six libssl-dev zlib1g-dev    \
#                       zip unzip zsh tmux wget git openssh-client vim emacs        \
#                       default-jdk default-jre


# RUN echo "deb https://dl.bintray.com/sbt/debian /" | tee -a /etc/apt/sources.list.d/sbt.list &&                                  \
#    curl -sL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x2EE0EA64E40A89B84B2DF73499E82A75642AC823" | apt-key add && \
#    apt-get update &&                                                                                                            \
#    apt-get install sbt
在Dockerfile的同一目录下执行如下命令即可

docker build -t Ubuntu:18.04 .
2. 使用镜像生成容器并配置端口转发
我们的需求是,可以直接通过ssh访问生成的ubuntu 18.04 container,因此需要将容器的ssh端口暴露到server的某个端口上,这样做有很多好处,最主要的是直接通过Xterm上传下载container中的文件,而不用使用docker cp命令,同时也可以支持x11转发UI界面。使用的命令如下

docker run -it --privileged=true -p 50002:22 --hostname=<host name> --name=<container name> Ubuntu:18.04 /bin/bash
这里将容器的22端口转发给server的50002端口,以后直接ssh server:50002就可以直接进这个container

Note:退出重进container的命令如下

sudo docker start  <container name>
sudo docker attach <container name>
更新美化Ubuntu的一系列操作可见我另一篇博文

3. 配置ssh
需要重新安装一下ssh,我碰到的问题是没有sshd\_config文件,使用如下命令

rm -rf /etc/ssh 
apt install ssh
然后配置ssh支持x11转发

echo "Port 22">>/etc/ssh/sshd_config 
echo "PermitRootLogin yes">>/etc/ssh/sshd_config
echo "X11Forwarding yes" >> /etc/ssh/sshd_config
重新启动ssh服务

service ssh restart
查看ssh服务状态

service ssh status
接下来设定root的密码,以便远程登陆

passwd
4. 配置界面转发
到这里为止,已经可以使用Xterm登录了,但是界面转发还是问题,需要指明转发目标,增加如下环境变量即可

export DISPLAY=:<Your PC IP Addr>:0.0

http://www.xdnf.cn/news/9269.html

相关文章:

  • Python map()函数详解:批量数据处理的瑞士军刀
  • STM32 Keil工程搭建 (手动搭建)流程 2025年5月27日07:42:09
  • STM32之IIC(重点)和OLED屏
  • Spring Boot整合JWT实现认证与授权
  • screen开启和删除session会话
  • JSONP跨域原理全解析
  • OpenCV 图像像素的读写操作
  • SNMPv3基础概念
  • 02_MQ常见问题
  • 科研课题验收测试报告:用途与类型深度解析~
  • DFS入门刷题c++
  • 工业级UART数据转发芯片EU104 低功耗多串口芯片 1主4从多串口转发
  • 26、请求处理-【源码分析】-Rest映射及源码解析
  • 机器学习知识体系:从“找规律”到“做决策”的全过程解析
  • 走进黑盒:SQL 是如何在数据库中执行的?
  • Linux基础命令掌握-cut命令
  • 0527漏洞原理:SQL注入笔记
  • CSRF和XSS攻击防御指南
  • 院校机试刷题第十三天:代码随想录算法训练营第七天
  • 调不好分布式锁?HarmonyOS + Redis 分布式锁失效排查全路径
  • Oracle20200714GI_PSU补丁流程及问题收集
  • 一种比较精简的协议
  • python学习day30
  • SSTable(Sorted String Table)结构与用途详解
  • 数据类型(基本类型)day2
  • C-内存函数,动态内存
  • Qt布局连续添加控件
  • Web3怎么本地测试连接以太坊?
  • 封装文档核心知识点总结(通俗版)
  • 利用 MkDocs 和 GitHub 部署个人博客网页