WSL2初体验之使用 docker版 Ubuntu 18.04,VNC远程控制_wsl(ubuntu18.04)运行docker-程序员宅基地

技术标签: Linux  ubuntu18  WSL2  VNC  

一、前言

以前用 Oracle VM VirtualBox,玩 CentOS 7,时不时就卡一些,而且还不流畅(我喜欢平滑顺畅完美);无意中发现了 windows WSL2发布了,感觉很溜啊!内嵌子系统,高大上啊!如果你感兴趣,接着看文章吧。借鉴了很多大佬的经验帖子。

二、基础知识准备

  • docker 镜像、容器等概念要理解,常用命令要熟悉。
  • ubuntu 与 centOS 常用命令要区分,要会用;ubuntu 18 安装软件用:apt-get
  • 要保持会折腾的心,要会静心、有耐心。

三、坑,很多很多坑,_(´ཀ`」∠)_吐了

  • 1.Docker Desktop 安装后,不要对 WIN10优化启动项,让它自启动(重复3遍~~~)。让我o(╥﹏╥)o会儿,我又重装了它。
  •  

  • 2.看看如下:Windows 终端 powerShell,炫不? 可以美化的。
  • 提前做好 "容器"的端口映射,因为要用 VNC连接;docker run -it -d --name u18-mine -h u18-mine -p 127.0.0.1:5901:5901 -v //g/u18home/soft:/u18home/soft ubuntu:18.04
  • 不然,你"容器"中的系统搞了一遍,发现端口不对,你只能去各种倒腾修改 docker配置了。o(╥﹏╥)o
  •  

  • 3.进入 docker ubuntu后,不要着急下载软件。先去 更换国内源。防止,下错软件版本。以免造成依赖死循环。

  • 4.如果你像我一样,基于下边那个镜像 pull,恭喜,各种命令都没有,ORZ~~~,连 sudo/nano/vi/vim/gcc等也没有。

  •  

  • 5.进入 ubuntu后,不要直接装 KDE桌面,没有那么容易(我还没成功);先装个xfce4,兼容性好些,VNC 也可以远程连上。

  • 6.不要轻易执行:docker rm <CONTAINER ID>,你会后悔的,刚才搞了一遍,一条命令回到解放前,ε=(´ο`*)))唉。

  • 7.想起来,再补充。

四、WSL2

适用于 Linux 的 Windows 子系统安装指南 (Windows 10)

https://docs.microsoft.com/zh-cn/windows/wsl/install-win10#update-to-wsl-2

安装和设置 Windows 终端

https://docs.microsoft.com/zh-cn/windows/terminal/get-started

Windows Terminal 美化实例

https://zhuanlan.zhihu.com/p/76436374

Windows Terminal 美化主题配色

https://windowsterminalthemes.dev/

1.

2.

3.

4.

5.示例

    "profiles":
    {
        "defaults":
        {
            // Put settings here that you want to apply to all profiles.
        },
        "list":
        [
            {
                // Make changes here to the powershell.exe profile.
                "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
                "name": "Windows PowerShell",
                "commandline": "powershell.exe",
                "colorScheme": "DimmedMonokai",
                "hidden": false,
                "useAcrylic": true,
                "acrylicOpacity": 0.75
            },
            {
                // Make changes here to the cmd.exe profile.
                "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
                "name": "Command Prompt",
                "commandline": "cmd.exe",
                "colorScheme": "DimmedMonokai",
                "hidden": false,
                "useAcrylic": true,
                "acrylicOpacity": 0.75
            },
            {
                "guid": "{c6eaf9f4-32a7-5fdc-b5cf-066e8a4b1e40}",
                "hidden": false,
                "name": "Ubuntu-18.04",
                "source": "Windows.Terminal.Wsl"
            },
            {
                "guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
                "hidden": false,
                "name": "Azure Cloud Shell",
                "source": "Windows.Terminal.Azure"
            }
        ]
    },
   "schemes": [
        {
            "name": "BirdsOfParadise",
            "black": "#573d26",
            "red": "#be2d26",
            "green": "#6ba18a",
            "yellow": "#e99d2a",
            "blue": "#5a86ad",
            "purple": "#ac80a6",
            "cyan": "#74a6ad",
            "white": "#e0dbb7",
            "brightBlack": "#9b6c4a",
            "brightRed": "#e84627",
            "brightGreen": "#95d8ba",
            "brightYellow": "#d0d150",
            "brightBlue": "#b8d3ed",
            "brightPurple": "#d19ecb",
            "brightCyan": "#93cfd7",
            "brightWhite": "#fff9d5",
            "background": "#2a1f1d",
            "foreground": "#e0dbb7"
        },
        {
            "name": "BlulocoDark",
            "black": "#4a505d",
            "red": "#f81141",
            "green": "#23974a",
            "yellow": "#fd7e57",
            "blue": "#285bff",
            "purple": "#8c62fd",
            "cyan": "#366f9a",
            "white": "#ccd5e5",
            "brightBlack": "#61697a",
            "brightRed": "#fc4a6d",
            "brightGreen": "#37bd58",
            "brightYellow": "#f6be48",
            "brightBlue": "#199ffd",
            "brightPurple": "#fc58f6",
            "brightCyan": "#50acae",
            "brightWhite": "#ffffff",
            "background": "#1e2127",
            "foreground": "#abb2bf"
        },
        {
            "name": "DimmedMonokai",
            "black": "#3a3d43",
            "red": "#be3f48",
            "green": "#879a3b",
            "yellow": "#c5a635",
            "blue": "#4f76a1",
            "purple": "#855c8d",
            "cyan": "#578fa4",
            "white": "#b9bcba",
            "brightBlack": "#888987",
            "brightRed": "#fb001f",
            "brightGreen": "#0f722f",
            "brightYellow": "#c47033",
            "brightBlue": "#186de3",
            "brightPurple": "#fb0067",
            "brightCyan": "#2e706d",
            "brightWhite": "#fdffb9",
            "background": "#1f1f1f",
            "foreground": "#b9bcba"
        }                  
    ],

五、WSL2安装Docker

按照以下2步骤,你就不用担心拉取的镜像,创建的容器占用C盘了。

https://zhuanlan.zhihu.com/p/163763066

WSL2 Docker Distro迁移

https://blog.csdn.net/simongame/article/details/107032441

六、ubuntu18初体验

1.每次,以 root用户身份进入;更改“软件源地址”。

cp   /etc/apt/sources.list   /etc/apt/sources.list.bak

想要编辑,使用 vim,安装缺提示:E: Unable to locate package vim

https://blog.csdn.net/miss1181248983/article/details/88578287

deb http://archive.ubuntu.com/ubuntu/trusty main universe restricted multiverse这个地址添加到/etc/apt/sources.list文件中,然后 apt-get update更新完之后安装就可以了。

echo deb http://archive.ubuntu.com/ubuntu/trusty main universe restricted multiverse >> /etc/apt/sources.list

https://blog.csdn.net/u012308586/article/details/102953882

阿里源:

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

#更新软件列表,换源完成。就可以安装匹配的想要的各种命令了。

apt-get update

#配置GCC

apt-get  install  build-essential

2.基于命令行更新软件包的方法

https://blog.csdn.net/davidhzq/article/details/102671746

Ubuntu主要更新升级命令介绍
        我们先来看看这几个命令的功能和区别,这几个命令看起来很相似,作用上有较大差别千万不要弄错了。

  • apt-get update
    从服务器获取全部可用的、最新的软件包列表,并缓存到本地电脑。执行效果如下。
  • 
    hzq@ubuntu:~$ sudo apt-get update
    [sudo] hzq 的密码: 
    命中:1 http://mirrors.yun-idc.com/ubuntu xenial InRelease
    命中:2 http://mirrors.yun-idc.com/ubuntu xenial-updates InRelease
    命中:3 http://mirrors.yun-idc.com/ubuntu xenial-backports InRelease
    命中:4 http://mirrors.yun-idc.com/ubuntu xenial-security InRelease
    正在读取软件包列表... 完成  
    hzq@ubuntu:~$
    

     

  • apt-get upgrade
    这个命令,会把本地已安装的软件,与刚下载的软件列表里对应软件进行对比,如果发现已安装的软件版本太低,就会提示你更新。upgrade 不会删除在列表中已经没有的软件包,也不会安装有依赖需求但尚未安装的软件包。执行效果如下。
  • 
    hzq@ubuntu:~$ sudo apt-get upgrade
    正在读取软件包列表... 完成
    正在分析软件包的依赖关系树       
    正在读取状态信息... 完成       
    正在计算更新... 完成
    升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。
    hzq@ubuntu:~$
    

     

  • apt-get full-upgrade
    根据列表信息,对需要升级的软件包进行完整安装。也就是先删除软件,然后完整地重新安装整个软件。所以要注意,这个功能是会删除软件的,所以执行此命令之前最好备份一下。执行效果如下。
  • 
    hzq@ubuntu:~$ sudo apt-get full-upgrade
    正在读取软件包列表... 完成
    正在分析软件包的依赖关系树       
    正在读取状态信息... 完成       
    正在计算更新... 完成
    下列软件包是自动安装的并且现在不需要了:
      linux-headers-4.15.0-45 linux-headers-4.15.0-45-generic linux-image-4.15.0-45-generic
      linux-modules-4.15.0-45-generic linux-modules-extra-4.15.0-45-generic snapd-login-service
    使用'sudo apt autoremove'来卸载它(它们)。
    升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。
    hzq@ubuntu:~$
    

     

  • apt-get dist-upgrade
    dist-upgrade 可能会为了解决软件包冲突而删除一些已安装的软件包,也可能会为了解决软件包依赖问题安装新的软件包。执行效果如下。
  • 
    hzq@ubuntu:~$ sudo apt-get dist-upgrade
    正在读取软件包列表... 完成
    正在分析软件包的依赖关系树
    正在读取状态信息... 完成       
    正在计算更新... 完成
    下列软件包是自动安装的并且现在不需要了:
      linux-headers-4.15.0-45 linux-headers-4.15.0-45-generic linux-image-4.15.0-45-generic
      linux-modules-4.15.0-45-generic linux-modules-extra-4.15.0-45-generic snapd-login-service
    使用'sudo apt autoremove'来卸载它(它们)。
    升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。
    

     

  • apt list --upgradable
    根据列表对比信息,看看有哪些可更新的软件,如果没有则显示为空。执行效果如下。
  • 
    hzq@ubuntu:~$ sudo apt list --upgradable
    正在列表... 完成
    hzq@ubuntu:~$
    

     

  • apt-get autoremove
    一般来说,更新完成之后会有一些不需要的旧组件需要清除。此时使用apt autoremove即可完成清理。执行效果如下。
  • 
    hzq@ubuntu:~$ sudo apt-get autoremove
    正在读取软件包列表... 完成
    正在分析软件包的依赖关系树       
    正在读取状态信息... 完成       
    下列软件包将被【卸载】:
      linux-headers-4.15.0-45 linux-headers-4.15.0-45-generic linux-image-4.15.0-45-generic
      linux-modules-4.15.0-45-generic linux-modules-extra-4.15.0-45-generic snapd-login-service
    升级了 0 个软件包,新安装了 0 个软件包,要卸载 6 个软件包,有 0 个软件包未被升级。
    解压缩后将会空出 335 MB 的空间。
    您希望继续执行吗? [Y/n] y
    (正在读取数据库 ... 系统当前共安装有 251733 个文件和目录。)
    正在卸载 linux-headers-4.15.0-45-generic (4.15.0-45.48~16.04.1) ...
    正在卸载 linux-headers-4.15.0-45 (4.15.0-45.48~16.04.1) ...
    正在卸载 linux-modules-extra-4.15.0-45-generic (4.15.0-45.48~16.04.1) ...
    正在卸载 linux-image-4.15.0-45-generic (4.15.0-45.48~16.04.1) ...
    /etc/kernel/postrm.d/initramfs-tools:
    update-initramfs: Deleting /boot/initrd.img-4.15.0-45-generic
    /etc/kernel/postrm.d/zz-update-grub:
    Generating grub configuration file ...
    Warning: Setting GRUB_TIMEOUT to a non-zero value when GRUB_HIDDEN_TIMEOUT is set is no longer supported.
    Found linux image: /boot/vmlinuz-4.15.0-65-generic
    Found initrd image: /boot/initrd.img-4.15.0-65-generic
    Found linux image: /boot/vmlinuz-4.15.0-64-generic
    Found initrd image: /boot/initrd.img-4.15.0-64-generic
    Found memtest86+ image: /boot/memtest86+.elf
    Found memtest86+ image: /boot/memtest86+.bin
    done
    正在卸载 linux-modules-4.15.0-45-generic (4.15.0-45.48~16.04.1) ...
    正在卸载 snapd-login-service (1.33-0ubuntu0.16.04.1) ...
    正在处理用于 dbus (1.10.6-1ubuntu3.4) 的触发器 ...
    hzq@ubuntu:~$
    

     

  • 通常情况升级更新步骤
    下面给出一般情况的操作流程,你当然可以根据上面命令的含义自己组合使用。
  • 
    sudo apt-get update
    sudo apt-get upgrade
    sudo apt list --upgradable //如果没有了,就直接重启
    sudo apt-get dist-upgrade
    sudo reboot
    sudo apt list –upgradable //重启之后再看一眼
    

     

3.出错、异常处理

  • ubuntu错误:No usable dialog-like program is installed
  • 那么可能只是因为系统原程序没有正确安装的原因,可以运行:apt-get update && apt-get dist-upgrade
  • Ubuntu下提示E: dpkg was interrupted

    mv /usr/bin/localedef /usr/bin/localedef.old
           dpkg --configure -a

  •  

七、Xfce4 桌面安装

为什么首选它?因为,稳定、兼容性好,又能实现 VNC远程连接,KDE想用,还没成功。

https://blog.csdn.net/fxb163/article/details/84193098

https://cloud.tencent.com/developer/article/1350304

https://www.linuxidc.com/linux/2018-08/153435.htm

在安装Xfce前需要更新一下系统

sudo apt-get update

安装Xfce

sudo apt install xfce4 xfce4-goodies

安装期间好像会出现几次弹窗,让你选择,仔细阅读下英文就理解了。

安装VNC Server

sudo apt-get install vnc4server

启动VNC Server(第一次启动VNC Server时会要求设置密码)

vncserver

另外,还需要修改xstartup文件内容(否则在通过VNC远程连接时会出现灰屏现象)

vim ~/.vnc/xstartup
#!/bin/sh  
unset SESSION_MANAGER  
unset DBUS_SESSION_BUS_ADDRESS  
startxfce4 & 

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup  
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources  
xsetroot -solid grey 

Esc,输入:wq!保存退出。

关闭之前开启的VNC Server窗口

vncserver -kill :1   #注意kill之后有空格

再次启动VNC Server

八、远程连接 VNCSERVER

下载 VNC-Viewer:https://www.realvnc.com/en/connect/download/viewer/

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yanfei_1986/article/details/111991823

智能推荐

OpenCV+python轮廓-程序员宅基地

文章浏览阅读550次。OpenCV中的轮廓1.1什么是轮廓轮廓可以简单认为成连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度。轮廓在形状分析和物体的检测和识别中很有用。为了准确,要使用二值化图像。需要进行阀值化处理或者Canny边界检测。查找轮廓的函数会修改原始图像。如果之后想继续使用原始图像,应该将原始图像储存到其他变量中。在OpenCV中,查找轮廓就像在黑色背景中超白色物体..._opencv 轮廓

【易经】-- 风水基础-程序员宅基地

文章浏览阅读1.2k次,点赞39次,收藏24次。八字源自古代的中国,是一种利用天干和地支来准确记录年、月、日、时的方式,由“年干,年支”、“月干,月支”、“日干,日支”、“时干,时支”,共八个干支所组成(共八个字),年、月、日、时的干支组合称为“柱”,形成“年柱”、“月柱”、“日柱”、“时柱”,故八字又称为“四柱”或“四柱八字”。

vscode通过跳板连接远程服务器docker容器_通过跳板机拉取docker-程序员宅基地

文章浏览阅读2.5k次。目的:深度学习不能在本机跑吧,丢服务器上,那怎么debug呢??曾经的我全靠print…下载vscode,安装remote-ssh插件不详细说了…docker内配置ssh在目标服务器里开一个docker容器,用-p把容器的端口22转到服务器的5222:docker run --name 容器名字 -it -p 5222:22 --shm-size 64G --rm --gpus all -v 挂载目录 容器名字 bash【远程服务器容器】设置 root 账户密码:passwd r_通过跳板机拉取docker

138. 复制带随机指针的链表--PYTHON_python 复制带随机指针的链表-程序员宅基地

文章浏览阅读156次。自己1:嘿嘿,首先想到的就是python库中的copy,哈哈,作弊一把"""# Definition for a Node.class Node: def __init__(self, x, next=None, random=None): self.val = int(x) self.next = next self.random ..._python 复制带随机指针的链表

学习Qss--背景属性_qt qss设置背景-程序员宅基地

文章浏览阅读487次。取值:Brush类型作用:设置控件的背景颜色,默认是border之内的矩形区域,包括内边距和内容矩形。_qt qss设置背景

js使用canvas实现图片鼠标滚轮放大缩小拖拽预览,显示像素坐标,显示像素值_canvas图片拖动,鼠标滚轮放大缩小-程序员宅基地

文章浏览阅读777次,点赞4次,收藏13次。todo 实现画矩形框,圆形roi。_canvas图片拖动,鼠标滚轮放大缩小

随便推点

css选择器权重及其计算规则_权重为1和权重为2哪个好-程序员宅基地

文章浏览阅读1.8k次,点赞4次,收藏8次。css选择器文章目录css选择器选择器类型css选择器权重值权重计算方法案例选择器类型ID  #idclass  .class标签  p通用  *属性  [type=“text”]伪类  :hover伪元素  ::first-line子选择器、相邻选择器css选择器权重值选择器权重!important权重!..._权重为1和权重为2哪个好

题目:探索PreQuest:一款强大的前置任务管理工具-程序员宅基地

文章浏览阅读326次,点赞3次,收藏4次。题目:探索PreQuest:一款强大的前置任务管理工具项目地址:https://gitcode.com/xdoer/PreQuest项目简介PreQuest 是一个精心设计的开源项目,旨在帮助开发者和团队更有效地管理和跟踪软件开发过程中的前置任务。它是一个轻量级、灵活且易于集成的解决方案,可让你专注于复杂项目的关键路径,确保每个步骤按部就班地完成。技术分析PreQuest是用Python...

探索超分辨率新纪元:ICPM Super-Resolution 项目详解-程序员宅基地

文章浏览阅读382次,点赞4次,收藏9次。探索超分辨率新纪元:ICPM Super-Resolution 项目详解项目地址:https://gitcode.com/icpm/super-resolution项目简介在图像处理领域,ICPM Super-Resolution 是一个引人注目的开源项目,致力于提供高效率、高质量的图片超分辨率解决方案。该项目由国际计算机感知与模式识别学会(ICPM)发起,旨在通过深度学习技术提升低清晰度图...

SpringBoot学习-part47缓存进阶学习环境搭建-程序员宅基地

文章浏览阅读91次。Departmentpackage com.ezerbelcn.springboot.bean;public class Department { private Integer id; private String departmentName; public Department() { super(); // TODO Auto-generated constructor stub } public Department(Integer id, String dep

Python使用pyautogui.locateOnScreen(‘xx.png‘, confidence=0.9) 语句时提示未安装opencv解决办法_raise notimplementederror('the confidence keyword -程序员宅基地

文章浏览阅读1.9w次,点赞19次,收藏41次。在Python中安装并import导入pyautogui模块后,可以很方便来控制鼠标和键盘实现自动化操作,再不也不用什么按健精灵之类的小儿科东东了。pyautogui有一个locateOnScreen()方法,可以在屏幕上查找图片,如果找到则返回左上角和右下角的坐标位置。默认情况下,查找精确度为1.0,即百分之百精准匹配——这其实很不方便,实际我们把精确度设为0.9更科学,既能保证找到,又不会因为默认的精确度太苛刻而失败,返回None。这时我们需要增加一个参数 confidence=0.9,例子如下:_raise notimplementederror('the confidence keyword argument is only available

PicoScope 7软件显示反应慢/卡滞的问题解决_picoscope 7 没有波形显示-程序员宅基地

文章浏览阅读461次,点赞8次,收藏9次。如果你的电脑安装了PicoScope 7 汽车专用软件,软件使用很卡滞。波形显示的区域是灰色的,或显示不全,像下图1和图2所示这样。_picoscope 7 没有波形显示