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

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

相关文章:

  • rlemasklib 安装笔记
  • algolia使用配置教程-为SSG静态站增加algolia搜索功能
  • 投影机光源三代发展史:从高压汞灯、白光 LED 到三色光源
  • 【Python】日期计算和自动化运行脚本
  • 2025年我国低空经济产业链研究与梳理
  • IEEE Journal on Selected Areas in Communications 2025年论文整理2(中英文摘要)
  • 某验4无感探针-js逆向
  • 第九章 Java基础-集合
  • Redis数据迁移方案及持久化机制详解
  • Java怎么实现父子线程的值传递?InheritableThreadLocal类和transmittable-thread-local类?
  • MySQL :MySQL基本概念
  • 安全生产例题
  • day2 MySQL表数据操作
  • 大数据分析06 数据排序汇总
  • 常见JDK安装配置
  • 代码随想录算法训练营第60期第四十九天打卡
  • 卷积神经网络(CNN):原理、架构与实战
  • 火山引擎声音复刻
  • 【Python】2. 基础语法(2)
  • KV Cache:大模型推理加速的核心机制
  • 做公司网站怎么做/百度网址大全
  • 科技有限公司经营范围有哪些/安徽seo推广公司
  • 如何恢复wordpress/武汉seo 网络推广
  • 郓城网站建设公司/大侠seo外链自动群发工具
  • 现成的手机网站做APP/做运营需要具备什么能力
  • 网站建设开发的主要流程/黄山网站建设