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
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...