Ubuntu20.04 Docker搭建遠程xfce桌面以及ssh教程

来源:https://www.cnblogs.com/limstorm/archive/2023/04/14/17320144.html
-Advertisement-
Play Games

簡介:本文主要介紹ubuntu20.04容器中搭建xfce遠程桌面、C++、Go環境、容器內docker操作配置、zsh配置 一、創建容器 1、創建容器 docker pull ubuntu:20.04docker run -itd --privileged --name=my-desktop--u ...


簡介:本文主要介紹ubuntu20.04容器中搭建xfce遠程桌面、C++、Go環境、容器內docker操作配置、zsh配置

 

 一、創建容器

1、創建容器

docker pull ubuntu:20.04
docker run -itd --privileged --name=my-desktop--ulimit memlock=-1:-1 --network="network-local" -p 22666:22 -p 5901:5901 -v /var/run/docker.sock:/var/run/docker.sock ubuntu:20.04 /bin/bash

2、進入容器

docker exec -it my-desktop /bin/bash

 

二、創建普通用戶

1、更新apt源以及sudo

apt update && apt install -y sudo

2、創建用戶

adduser limstorm

3、賦予用戶sudo許可權

usermod -aG sudo

4、切換為limstorm用戶

su limstorm

5、設置root用戶密碼,ABCD#1234

sudo passwd root

6、安裝vim並更換apt源為阿裡源

sudo apt install vim && sudo vim /etc/apt/sources.list
```
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
```

7、更新apt源

sudo apt update

 

三、安裝xface桌面環境,並安裝tigervnc, 使用普通用戶

1、安裝xface以及tigervnc,選擇gdm3啟動器

sudo apt install xfce4 tigervnc-standalone-server
中間依次輸入:6、10、18、30、1、1

2、啟動dbus service(xface4啟動需連接dbus)

sudo service dbus start

3、設置vnc密碼,ABCD#1234

vncpasswd
中間依次輸入:密碼、密碼、n

4、配置vnc xstartup

vim ~/.vnc/xstartup
```
#!/bin/sh
xsetroot -solid grey

startxfce4 &
```

5、啟動vncserver,不需要設置geometry,預設會自動調整;:1表示第一個視窗,其埠號為5901(5900+1)

vncserver -localhost no :1

6、tigervncviewer連接,連接地址使用DockerIP:5901或者宿主機IP:映射埠

下載地址:https://sourceforge.net/projects/tigervnc/files/stable/1.13.1/,根據所需下載不同系統版本

7、停止vncserver

vncserver -kill :1

Q&A:

1、打開終端報錯:failed to execute default Terminal Emulator

解決辦法:
sudo apt-get install xfce4-terminal && sudo apt purge gnome-terminal
然後Applications - Settings - Perfered Applications - Utilities - Terminal Emulator選擇Xfce Terminal即可,重新打開終端正常執行

2、打開瀏覽器報錯:failed to execute default Web Browser

解決辦法:
(1)安裝必要依賴庫:sudo apt install firefox
(2)依照終端一樣的操作,選擇firefox瀏覽器為預設瀏覽器,chrome、edge不穩定,容易宕機

 

 

四、Docker以及docker-compose安裝

1、安裝docker.io以及docker-compose

sudo apt install docker.io docker-compose

2、普通用戶直接運行docker

sudo gpasswd -a useradmin docker # useradmin是普通用戶示例, 需要替換為自己的用戶名
newgrp docker # 更新docker用戶組
sudo chmod -R 777 /var/run/docker.sock

 

五、中文語言包安裝

1、安裝中文語言包

sudo apt-get install language-pack-zh-han*

2、安裝ibus拼音

sudo apt-get install ibus ibus-pinyin # 安裝ibus拼音

3、設置中文語言以及中文輸入法

(1)配置中文語言:
Applications - Setttings - Language Support - Install/Remove Languages - 選擇English和Chinese(simplified) - Apply,input method選擇IBus,然後Apply System-Wide,close
(2)配置ibus輸入法
sudo apt-get install ibus ibus-pinyin # 安裝ibus拼音
Applications - Setttings - IBus Preferences - Input Method - Add - Chinese-Pinyin - Add - Close
(3)啟動ibus-daemon
nohup ibus-daemon --xim &
(4)登陸自動啟動ibus輸入法
Applications - Setttings - Session and Startup - Application Autostart - Add - Name: ibus; Description: The ibus input-method; Command: ibus-daemon --xim; Trigger:on login - OK - Close

 

 

六、編譯環境安裝

1、C++及python等環境配置

sudo apt install libsnappy-dev zlib1g-dev libbz2-dev liblz4-dev libzstd-dev libgflags-dev git build-essential autoconf gcc g++ ccache libncurses5-dev byacc cmake lcov libprotobuf-dev protobuf-compiler liblz4-dev libreadline-dev libmysqlcppconn-dev libcurl4-openssl-dev libssl-dev gdb valgrind pip libdw-dev zip unzip curl

2、Go環境配置

wget https://dl.google.com/go/go1.15.linux-amd64.tar.gz
sudo tar -C /usr/local -xvf go1.15.linux-amd64.tar.gz
rm -rf go1.15.linux-amd64.tar.gz

3、Node配置

wget https://npm.taobao.org/mirrors/node/v14.19.3/node-v14.19.3-linux-x64.tar.gz
tar -xzvf node-v14.19.3-linux-x64.tar.gz
sudo mv node-v14.19.3-linux-x64 /usr/local/node
rm -rf node-v14.19.3-linux-x64.tar.gz

4、環境變數配置

vim /etc/profile
```
export NODE_HOME=/usr/local/node
export GOPATH=/home/limstorm/gowork/
export PATH=$NODE_HOME/bin:$PATH:/usr/local/go/bin
```
vim ~/.bashrc
```
source /etc/profile
```

5、安裝yarn

npm install -g yarn
如果連接超時,可以設置npm為淘寶源:
npm config set registry https://registry.npm.taobao.org

6、安裝cpplint

pip install cpplint

 

七、zsh安裝

1、安裝zsh

sudo apt install zsh
chsh -s /bin/zsh #將zsh設置成預設shell(不設置的話啟動zsh只有直接zsh命令即可)

2、安裝oh-my-zsh

sh -c "$(curl -fsSL https://gitee.com/shmhlsy/oh-my-zsh-install.sh/raw/master/install.sh)" #國內鏡像源

3、安裝插件

#zsh-autosuggestions 命令行命令鍵入時的歷史命令建議
git clone https://gitee.com/renkx/zsh-autosuggestions.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
#zsh-syntax-highlighting 命令行語法高亮插件
git clone https://gitee.com/Annihilater/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

4、配置文件~/.zshrc

```
#防止中文亂碼
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

ZSH_THEME="robbyrussell"

# 配置要使用的插件
plugins=(
git
extract
zsh-autosuggestions
zsh-syntax-highlighting
)
source $ZSH/oh-my-zsh.sh
source $ZSH_CUSTOM/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh

source /etc/profile
```

5、安裝powerlevel10k主題

git clone https://gitee.com/wangl-cc/powerlevel10k.git $ZSH_CUSTOM/themes/powerlevel10k
vim ~/.zshrc #將robbyrussell替換為powerlevel10k/powerlevel10k
zsh #切換到zsh進行p10k的自定義配置,也可使用p10k configure進行配置

 

八、終端字體設置Nerd Font

1、下載字體

https://www.nerdfonts.com/font-downloads,我選擇的是Hack Nerd Font

2、解壓到字體目錄

sudo unzip Hack.zip -d /usr/share/fonts/

3、刷新字體緩衝

sudo fc-cache -fv

4、設置terminal字體

Edit - Preferences - Appearence - Font - Hack Nerd Font Regular + 13 - Close

5、設置terminal預設編碼

Edit - Preferences - Advanced - Encoding - Unicode - UTF-8

6、重新打開終端即可

 

九、ssh安裝

1、limstorm用戶

(1)安裝openssh-server
sudo apt install openssh-server
(2)設置limstorm用戶登陸密碼
passwd limstorm
(3)啟動ssh服務,預設禁止root用戶訪問
sudo service ssh restart
(4)docker外連接容器
ssh limstorm@宿主機IP -p宿主機映射埠
ssh limstorm@容器IP -p22
以上兩種方式均可

2、root用戶

(1)安裝openssh-server
apt install openssh-server
(2)設置當前用戶登陸密碼
passwd root
(3)修改配置文件
vim /etc/ssh/sshd_config
將PermitRootLogin prohibit-password修改為PermitRootLogin yes
(4)啟動ssh服務
service ssh restart
(5)docker外連接容器
ssh root@宿主機IP -p宿主機映射埠
ssh root@容器IP -p22
以上兩種方式均可

 

 

十、製作鏡像,導出鏡像文件

docker commit my-desktop ubuntu-20-04-desktop:3.0  #commit容器

docker save -o ubuntu-20-04-desktop-3.0.tar ubuntu-20-04-desktop:3.0 #導出鏡像文件

docker load -i ubuntu-20-04-desktop-3.0.tar #導入鏡像文件

 

十一、使用方式

1、創建docker network[可忽略]

docker network create network-local

2、創建容器

docker run -itd --privileged --name=my-desktop --ulimit memlock=-1:-1 --network="network-local" -p 22666:22 -p 5901:5901 -v /var/run/docker.sock:/var/run/docker.sock ubuntu-20-04-desktop:3.0 /bin/bash

3、進入容器

docker exec -it my-desktop /bin/bash

4、切換用戶

su limstorm

5、啟動vncserver

sudo service dbus start
vncserver -localhost no :1

6、啟動ssh

sudo service ssh start

7、即可vncviewer或者ssh遠程連接

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 介面 ​ 介面類型是對其它類型行為的抽象和概括,因為介面類型不會和特定的實現細節綁定在一 起,通過這種抽象的方式我們可以讓我們的函數更加靈活和更具有適應能力 介面的特點 可以包含0個或多個方法的簽名 只定義方法的簽名,不包含實現 實現介面不需要顯式的聲明,只需實現相應方法即可 介面實現 ​ 介面里沒 ...
  • 隨著技術的發展,ASP.NET Core MVC也推出了好長時間,經過不斷的版本更新迭代,已經越來越完善,本系列文章主要講解ASP.NET Core MVC開發B/S系統過程中所涉及到的相關內容,適用於初學者,在校畢業生,或其他想從事ASP.NET Core MVC 系統開發的人員。 經過前幾篇文章... ...
  • 匿名類型在某些場景下使用起來還是比較方便,比如某個類型只會使用一次,那這個時候定義一個 Class 就沒有多少意義,完全可以使用匿名類型來解決,但是在跨項目使用時,還是需要註意避免出現 RuntimeBinderException 問題 問題描述 比如我們有一個 netstandard2.0 類型的 ...
  • C#多線程學習(一) 多線程的相關概念 什麼是進程? 當一個程式開始運行時,它就是一個進程,進程包括運行中的程式和程式所使用到的記憶體和系統資源。 而一個進程又是由多個線程所組成的。 什麼是線程? 線程是程式中的一個執行流,每個線程都有自己的專有寄存器(棧指針、程式計數器等), 但代碼區是共用的,即不 ...
  • SqlSugar的開發框架本身主要是基於常規關係型資料庫設計的框架,支持多種資料庫類型的接入,如SqlServer、MySQL、Oracle、PostgreSQL、SQLite等資料庫,非關係型資料庫的MongoDB資料庫也可以作為擴展整合到開發框架裡面,通過基類的繼承關係很好的封裝了相關的基礎操作... ...
  • 日常開發過程中,驗證字元的合法性一直是一個必不可少的步驟,以前都是在用戶輸入完再做判斷,不僅麻煩在不符合標準的時候還要提示用戶修改,體驗很差,為什麼不在輸入的時候加以限制呢? ...
  • 因為Grpc採用HTTP/2作為通信協議,預設採用LTS/SSL加密方式傳輸,比如使用.net core啟動一個服務端(被調用方)時: public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultB ...
  • NuGet 引入依賴庫 PM> Install-Package Tron.Wallet.Net 隨機生成私鑰和對應的地址 using Tron.Wallet.Net; namespace ConsoleApp1 { internal class Program { static async Task ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...