VirtualBox安装ubuntu虚拟机

起初只想简单搞个docker windows版,无奈开发机器是win10 家庭版,搞起来比较麻烦,
所以有了莫不如搞个Ubuntu虚拟机的想法,Ubuntu里啥都能安装了,所以有了这篇文章。
搞虚拟机的用途也很简单,只是用作自己开发学习使用,所以比较看重如下几点:

  • 入门简单
  • 免费开源
  • 轻量
  • 成熟稳定

所以最终选择Oracle出品的VirtualBox,接下来讲讲VirtualBox的入坑记录。

注: 以下示例中的Ubuntu镜像版本为

  • ubuntu-18.04.6-live-server-amd64.iso
  • ubuntu-20.04.3-live-server-amd64.iso

1. 安装virtualBox

1.1 下载VirtualBox及扩展包

下载界面链接:https://www.virtualbox.org/wiki/Downloads
进入下载界面后,选择对应的安装平台,如下红框标记为选择windows平台版本,点击下载即可。

在这里插入图片描述
下载后如下图
在这里插入图片描述

1.2 安装VirtualBox

双击VIrtualBox-6.1.28-147628-win.exe后一直下一步即可安装完成,亦可指定安装位置,
安装完成后启动界面如下图。
https://www.virtualbox.org/wiki/Downloads

1.3 安装扩展包

管理 -> 全局设定 -> 扩展,点击+号添加按钮,
选中扩展包Oracle_VM_VirtualBox_Extension_Pack-6.1.28.vbox-extpack后即可按提示完成安装。
在这里插入图片描述

2. 下载ubuntu镜像ISO

2.1 官方镜像

https://ubuntu.com/download/alternative-downloads
https://ubuntu.com/download/server
在这里插入图片描述

2.2 阿里云OS镜像

国内推荐阿里云OS镜像下载:https://mirrors.aliyun.com/ubuntu-releases/
在这里插入图片描述

选择需要的版本,然后点击下载即可,如下选择20.04.3
在这里插入图片描述

阿里云的ubuntu镜像源具体配置可参见:https://developer.aliyun.com/mirror/ubuntu

其他操作系统镜像亦可通过阿里云OS镜像 - https://developer.aliyun.com/mirror进行下载
在这里插入图片描述

3. 创建virutalBox虚拟机

3.1 新建虚拟机

在这里插入图片描述
之后一直下一步就可以,依次设置
(1)内存2G
(2)虚拟硬盘 -> VDI -> 动态分配 30G
最后点击创建即可。

3.2 设置启动Ubuntu iso镜像

选中新建的虚拟机 -> 设置 -> 存储 -> 控制器IDE -> 选择虚拟盘,
点击"选择虚拟盘"按钮后即需在文件选择器中选中之前下载的Ubuntu ISO镜像,
如:ubuntu-18.04.6-live-server-amd64.iso
在这里插入图片描述

4. 虚拟机网络设置

网络设置这块比较重要,我仅有一台开发机器(即宿主机),先看我自己对虚拟机的网络需求:

  • 宿主机虚拟机之前可以互相访问(双向)
    宿主机可以通过shell工具管理虚拟机,而虚拟机也可以连接宿主机上的中间件。
  • 虚拟机可以访问公网
    这个是必需的,虚拟机可以通过公网下载资源
  • 同一宿主机上的虚拟机可以互相访问
    可以利用多个虚拟机搭建集群

结合VirtualBox的几种不同网络模式,细节见下图,详细可参考:Viutual Box四种网络连接方式
在这里插入图片描述

最终确认满足的方案包括如下两种:

  • 方案一:桥接网卡
    这种方式配置最简单,虚拟机相当于在内网环境中虚拟出一台实体机网络(有独立IP),
    虚拟机IP与宿主机IP在需在同一网段内,且网关与宿主机网关相同
    例如宿主机为192.168.3.16/24,则虚拟机需在192.168.3.0/24网段内,如192.168.3.101,
    我在家里的网络环境没啥限制,搞这种桥接网卡模式非常方便。
    注: 这种模式还可以满足同一网络环境下的不同宿主机上的虚拟机可以互相访问

  • 方案二:NAT + Host-Only组合模式
    这种模式配置相对麻烦些,需给虚拟机配置2张网卡,但是适用一些极端情况。
    比如我公司的网络环境,对IP是有限制的,每个IP都需要单独申请开通,
    所以就不适合桥接网卡的方式,即便分配IP也无法访问公网,
    通过NAT模式,可以实现: 虚拟机 -> 宿主机虚拟机 -> NAT -> 宿主机 -> 公网的的访问,
    再结合Host-Only模式,即可实现: 虚拟机 -> 虚拟机主机->虚拟机的访问。

接下来具体讲讲两种方案的具体设置。

4.1 方案一:桥接网卡

设置虚拟机->网络->网卡1为桥接网卡模式,界面名称即选择当前宿主机实际使用的网卡。在这里插入图片描述
使用桥接网卡后,后续虚拟机中操作系统初始化时会自动检测并通过DHCP自动分配IP(与宿主机网段相同)
注:此步骤需在 初始化虚拟机操作系统【5.2.3 网络设置】 时才可执行,因均为网络设置故放在了这一章节。
在这里插入图片描述
为避免虚拟机IP发生变化,可手动为虚拟机设置静态IP,如下图,
注: 需设置公共DNS,例如图中设置阿里云公共DNS服务器:223.5.5.5,223.6.6.6
在这里插入图片描述
操作系统初始完成后可通过vim /etc/netplan/00-installer-config.yaml查看网络配置,如下图。
在这里插入图片描述

4.2 方案二:NAT + Host-Only组合模式

4.2.1 全局设置Nat网络

管理->全局设定->网络->新增
在这里插入图片描述

4.2.2 添加主机网络管理器

管理->主机网络管理器->创建 ,
发现已存在VIrutalBox Host-Only Ethernet Adaptor,
即我们在安装VirutalBox时自动安装的适配器,且默认已开启,
若存在则不必再新建。
注: DHCP服务不要勾选,后续手动添加静态的ip,这样ip就是固定的
在这里插入图片描述
我们在安装VirtualBox的时候已默认安装VirtualBox Host-Only Network到宿主机网络环境,如下图
在这里插入图片描述

4.2.3 设置虚拟机的网络 - 双网卡(网卡1-NAT, 网卡2-Host-Only)

对应的虚拟机->设置->网络->网卡1设置(选择nat网络)->网卡 2设置(选择Host Only网络),

网卡1设置(选择nat网络)如下图
在这里插入图片描述

网卡 2设置(选择Host Only网络)如下图
在这里插入图片描述
虚拟机配置概览
在这里插入图片描述

4.2.4 进去虚拟机修改Host-only网卡静态IP

注:
此处设置可以如【4.1 方案一:桥接网卡】中在初始化Ubuntu系统网络【5.2.3 网络设置】时行设置,
亦可在步骤 【5.2 初始化Ubuntu系统】 之后进行入shell命令中手动设置,
如下讲解的方式即为后者(shell命令手动设置),
因均为网络设置故放在了这一章节。

根据 网卡2(Host-Only网络) 的MAC地址,寻找虚拟机中对应的网卡(通过ifconfig命令),
如下图为enp0s8,后续继续对此enp0s8进行设置。
在这里插入图片描述

# 修改网络配置
sudo vi /etc/netplan/00-installer-config.yaml

# 修改00-installer-config.yaml文件内容如下
# This is the network config written by 'subiquity'
network:
  ethernets:
    # nat网卡默认设置
    enp0s3:
      dhcp4: true
      # 配置dns服务器(默认空 或者 内网DNS)
      nameservers:
        addresses:
        - xxx.xx.xx.xx
    # 配置静态IP(需与host-only适配器网段相同,且关闭dhcp4)
    # 可查看宿主机VirtualBox Host-Only Network网卡网段,
    # IP:192.168.56.1,子网掩码:255.255.255.0,
    # 即192.168.56.0/24网段均可
    enp0s8:
      addresses:
      - 192.168.56.101/24
      dhcp4: false
  version: 2

# 应用新的网络配置
sudo netplan apply

5. 启动并初始化虚拟机

5.1 启动虚拟机

之后即可选中新建的虚拟机右键启动
在这里插入图片描述

5.2 初始化Ubuntu系统

第一次启动后会提示初始化操作系统,如设置语言、网络、代理、镜像源、磁盘分区、安装SSH等,
具体操作可参见:Ubuntu 20.04 live server版安装(详细版)

Ubuntu系统的初始设置依次如下(实测版本18.04.6、20.04.3设置基本相同)

5.2.1 语言

在这里插入图片描述

5.2.2 键盘

在这里插入图片描述

5.2.3 网络设置

注:
可以在初始化操作系统时就将网络设置好(结合不同网络模式),
亦可以后续在shell命令中手动设置。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.2.4 代理设置

如:http://luo:luo%40123@proxy.com:8080,
此处设置代理成功后,实测apt install好用,后续curl、docker都需单独设置。
在这里插入图片描述

5.2.5 镜像源

设置国内阿里云镜像源:https://mirrors.aliyun.com/ubuntu/
在这里插入图片描述

5.2.6 磁盘分区

默认
在这里插入图片描述
在这里插入图片描述

5.2.7 profile设置

设置主机名、登录的用户名、密码。
在这里插入图片描述

5.2.8 安装ssh

选中安装OpenSSH server,用于后续ssh连接
在这里插入图片描述

5.2.9 确认后自动安装

在这里插入图片描述
安装完成后按提示Reboot Now重启系统
在这里插入图片描述

重启后提示输入账号密码,即在设置profile时设置的username、password,
登录成功后即标志系统初始化完成。
在这里插入图片描述

6. Ubuntu系统后续相关配置

在Ubuntu系统初始化完成后,还需对系统做一些相关设置,
最基础的设置(适用于网络环境没有限制,比如我家里的网络),如:

  • 6.1 设置root密码
  • 6.3 修改时区
  • 6.5 安装docker、docker-compose(可选)
  • 6.7 设置docker镜像加速(可选)
  • 6.9 替换apt源(可选)

而我公司的网络环境比较特殊:

  • 需要通过公司统一Http代理进行外网访问
  • 需要安装公司统一CA证书才可进行https访问

我们工位的办公机器都已手动配置了这些,
所以我想在公司环境使虚拟机能访问公网,还需对应的格外设置如下:

  • 6.4 设置通用代理(适用于curl、apt)
  • 6.6 设置docker代理
  • 6.8 安装自定义CA证书

6.1 设置root密码⭐️

# 启用root用户并设置root密码
sudo passwd root

# 允许ssh root用户登录
vim /etc/ssh/sshd_config
# 修改如下内容(即将PermitRootLogin prohibit-password修改为yes),具体参见下图
# PermitRootLogin yes
# 重启ssh
service ssh restart

在这里插入图片描述

6.2 关闭防火墙

# 关闭防火墙
sudo ufw disable
# 开启防火墙
sudo ufw enable
# 查看开启防火墙后的状态为active 
sudo ufw status命令

6.3 修改时区⭐️

date -R
# tzselect选择对应的时区: 4)Asia -> 9)China -> 1)Beijing Time -> 1)Yes
tzselect
cp /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime

## 设置日期
date -s 05/21/2022
## 设置时间
date -s 08:28:32

6.4 设置通用代理(适用于curl)⭐️

代理格式:协议://用户名:密码@代理IP:代理端口
注:
由于我的代理密码中含有特殊符号@,如luo@123,需要对此密码进行URL encode,否则解析代理host有问题
示例:http://luo:luo@123@proxy.com:8080即解析代理host为123@proxy.com,而正确的代理host应该为proxy.com

# 编辑/etc/profile
vim /etc/profile
# profile添加如下内容
export http_proxy=http://luo:luo%40123@proxy.com:8080
export https_proxy=http://luo:luo%40123@proxy.com:8080
export no_proxy=192.168.33.111
export ftp_proxy=http://luo:luo%40123@proxy.com:8080
export all_proxy=http://luo:luo%40123@proxy.com:8080
# 重新加载profile
source /etc/profile

6.5 设置apt代理

设置apt代理

# 编辑(或创建)此proxy.conf
vim /etc/apt/apt.conf.d/proxy.conf
## proxy.conf内容
Acquire::http::Proxy "http://luo:mypassw@proxy.com:8080";
Acquire::https::Proxy "http://luo:mypassw@proxy.com:8080";

6.6 安装docker、docker-compose⭐️

apt install docker.io
apt install docker-compose

6.7 设置docker代理⭐️

# 切换root用户
su root

# 新建/etc/systemd/system/docker.service.d/http-proxy.conf
touch /etc/systemd/system/docker.service.d/http-proxy.conf
# 编辑/etc/systemd/system/docker.service.d/http-proxy.conf - 添加http代理
# 注:此处密码中的@符号不需要url编码转义
vim /etc/systemd/system/docker.service.d/http-proxy.conf
# http-config.conf文件内容
[Service]
Environment="HTTP_PROXY=http://luo:luo@123@proxy.com:8080"
Environment="HTTPS_PROXY=http://luo:luo@123@proxy.com:8080"
# 设置不走代理的Host
# 例如内网Harber可无需通过代理,否则报错如下:
# Error response from daemon: error unmarshalling content: invalid character 'ï' looking for beginning of value
Environment="NO_PROXY=localhost,127.0.0.1,192.168.3.111"

# Flush变更
systemctl daemon-reload

# 验证Environment是否生效(若Environment=后面为空则表示未设置成功)
systemctl show docker --property Environment
# 执行结果
Environment=HTTP_PROXY=http://luo:luo@123@proxy.com:8080 HTTPS_PROXY=http://luo:luo@123@proxy.com:8080

# 重启docker服务
systemctl restart docker

# 查看docker服务状态
systemctl status docker
# 执行结果
● docker.service - Docker Application Container Engine
   Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
  Drop-In: /etc/systemd/system/docker.service.d
           └─http-proxy.conf
   Active: active (running) since Wed 2021-11-24 11:14:01 CST; 2min 52s ago
     Docs: https://docs.docker.com
 Main PID: 29745 (dockerd)
    Tasks: 8
   CGroup: /system.slice/docker.service
           └─29745 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock


注:
这步骤设置代理过程中,密码中的@无需转义
否则通过systemctl show docker --property Environment进行验证时,会发现Environment一直为空。

6.8 设置docker镜像加速

本示例以阿里云容器镜像服务(ACR)为例,可自行开通账号或使用公司阿里云账号。
在这里插入图片描述

6.9 解决自建Harbor Https报错

内网自建Harbor并未设置Https证书,所以需在docker配置对于内网harbor地址不走https协议:

# 编辑此文件
vim /etc/docker/daemon.json
# 文件内容
{
	# 加速地址
	# 亦可替换为阿里云ACR加速地址,详见6.8 设置docker镜像加速
   "registry-mirrors": ["http://hub-mirror.c.163.com"],
    # 绕过https的内网harbor地址
    # 否则报错如下(注意https://内网harbor地址):
    # Error getting v2 registry: Get https://192.168.3.100/v2/: EOF
   "insecure-registries": ["192.168.3.100","192.168.3.101"]
}

# 重新加载配置
systemctl daemon-reload
systemctl restart docker

6.10 安装自定义CA证书⭐️

注:切记CA证书要为crt格式

# 切记CA证书要为crt格式
# pem转crt 
openssl x509 -in myCA.pem -inform PEM -out myCA.crt
# cer转crt
openssl x509 -inform DER -in myCA.cer -out myCa.crt

# 拷贝ca证书(.crt格式)到/usr/local/share/ca-certificates目录
cp myCA.crt /usr/local/share/ca-certificates
# 刷新证书
sudo update-ca-certificates
# 删除证书
rm -f /usr/local/share/ca-certificates/xinmu.crt  
sudo update-ca-certificates  

在这里插入图片描述

6.11 替换apt源

apt源可以在初始化Ubuntu系统时进行设置,参见【5.2.5 镜像源】,
亦可在系统启动后手动修改,可参见:阿里云 - Ubuntu镜像源替换

sudo vim /etc/apt/sources.list
# ubuntu 18.04(bionic) 配置 - /etc/apt/sources.list文件内容
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse

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

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

deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src 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-backports main restricted universe multiverse

#更新
sudo apt-get update
sudo apt-get -f install
sudo apt-get -y upgrade

后续…

参考:
virtual box设置网络,使用nat网络和仅主机(Host Only)网络进行连接
【Linux】VirtualBox CentOS7 NAT+Host-Only 网络配置
Ubuntu 20.04 live server版安装(详细版)
Ubuntu 20.04修改ip地址
VirtualBox: How to Configure an Ubuntu 20.04 Virtual Machine for Web Development
ubuntu环境变量的三种设置方法
ubuntu20.04代理设置
ubuntu修改时区
Ask Ubuntu - How do I install a root certificate?
CSDN - 彻底理解Viutual Box四种网络连接方式
如何为apt配置代理

  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

罗小爬EX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值