iT邦幫忙

2025 iThome 鐵人賽

DAY 2
0
IT 管理

從零開始的網際網路隨筆系列 第 2

Day01-建立 ubuntu vm 和 docker 使用 PVE

  • 分享至 

  • xImage
  •  

聽說現在會慢慢去建虛擬機的人越來越少了,所以今天我們就來建一個 ubuntu 的虛擬機
這裡我使用的是 ubuntu 最新的 LTS 版本: ubuntu 24.04.3 LTS server

上傳 iso 檔案

一般來說 pve 儲存 iso 檔案的地方就在 local (pve),如下圖
local screenshot

建立虛擬機前

請務必去參考官網的 ubuntu 系統需求

硬體設定

根據官網的資料及我個人的考量,很多我就使用預設即可
vm general

vm os
註: 因為 pve 中有設定其他存放 iso 檔的地方,所以我沒有選 local
vm system

vm disk

vm cpu

vm memory

vm network

其實這裡很多選項可以事後反悔,但是儲存空間就需要慎重考慮了,其要改比較麻煩(尤其安裝完系統後)。

下面舉個例子: 我可以在 options 選項中找到 Qemu Guest Agent 的選項去修改成enable,如下圖是未修改前的樣子
vm options qemu guest agent

系統安裝

其實系統安裝現在 linux 都已經有安裝腳本去輔助使用者了,基本上就選擇下一步即可
vm language

vm keyboard layout

vm ubuntu server choose
這裡請注意,一般只要選擇 ubuntu server 即可,但是如果想要系統佔更少的儲存空間可以使用 minimized

vm network
先不設定網路
vm proxy

vm repo

vm snap
snap 這現在用不到,先 skip
vm guide disk
這裡其實是另外一個坑,我的建議是不要把 lvm 的選項打開,如果打開了務必注意是否有把整個磁碟的空間都分配乾淨。

vm disk config

vm user & password
這裡我密碼些設定簡單些,後來再把密碼的強度再提高

vm openssh
openssh 這裡先開,之後再來設定

vm cdrom
在全部最基本的東西安裝完後作業系統會需要重啟,但是需要把 iso 檔移除,直接到 hardware 那裏把 CD/DVD Drive (ide2) 刪除,之後再回去按 enter 即可。

網路設定

  1. 設定前請用指令 ip a 先將網路介面確定好,如我的介面是ens18
  2. 設定 netplan (因為方便)
    1. 先使用 sudo su 切換管理員去設定
    2. ls /etc/netplan 去確認沒有其他奇怪的設定檔(例如 50-cloud-init.yaml 改了這個是可以用網路,但是虛擬機重啟後又會被 cloud-init 洗掉)
    3. touch /etc/netplan/01-static.yaml
  3. 編輯 /etc/netplan/01-static.yaml
    • 一般來說如果上游的網路有設定 dhcp 的話可以直接寫
    network:
      ethernets:
        ens18:
          dhcp4: yes
    
    • 如果要設定靜態 IP 的話可以先參考這
    network:
      ethernets:
        ens18:
          addresses:
          - ipv4-address/24
          gateway4: gateway4-address
          nameservers:
            addresses: [8.8.8.8,1.1.1.1]
          dhcp4: no
    
    • 蝦,你問我使用 minimized 安裝該怎麼去寫,用 cat > /etc/netplan/01-static.yaml 然後把上面那坨寫進去,最後用 ctrl + d 儲存,注意不要用tab喔。
  4. 使用 netplan try 測試,如果沒問題按 enter ,有問題按其他鍵快速過120秒(有報錯先暫時不管)
  5. 最後如果可以使用 apt update 去貪婪的吸收來自網際網路的封包,表示你設定成功了

其他工具

使用 cat > 這樣的方式太硬盒了,先下載些工具吧

  1. 安裝 vim, ping
  2. 安裝 qemu-guest-agent
  3. 設定 .ssh/authorized_keys (可選
apt update
apt install vim iputils-ping qemu-guest-agent -y

註: qemu-guest-agent 的設定需要等虛擬機經過 poweroff 到 start 的循環後才會有效

其他設定

設定好後我們可以先回頭看看 netplan try 時遇到的警告

  • permissions are too open
    • 只讓 root 去讀寫: chmod 600 /etc/netplan/01-static.yaml
    • 如果是由其他使用者使用 sudo 指令去建的,可用: chown 使用者:使用者群組 /etc/netplan/01-static.yaml 增加安全性
  • gateway4 has been deprecated
    • 改成這樣 (改路由規則)
    network:
      ethernets:
        ens18:
          addresses:
          - ipv4-address/24
          routes:
          - to: 0.0.0.0/0
            via: gateway4-address
          nameservers:
            addresses:
            - 1.1.1.1
            - 8.8.8.8
          dhcp4: no
    

現在你可以嘗試

  • 使用 passwd 設定強密碼
  • 重啟虛擬機試試

Docker 安裝

強烈建議使用 ssh 的方式複製貼上指令,往下的指南參考 Install Docker Engine on Ubuntu

  1. 刪除舊版程序
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
  1. 設定docker 的 apt repository
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
  1. 使用 sudo apt update,應能看到 docker 的身影,如下圖
    docker apt update
  2. 下載 docker
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Docker 安裝的後處理

使用 docker version 時應該會發現
docker version

這是因為 docker 有一個守護進程(docker daemon)會需要用到 root 權限。除非特別設定,不然可能會調用 docker daemon。在資安的角度上看,需要慎重選擇是否讓使用者直接控制 docker daemon。
詳細請參考 Docker daemon attack surface

  1. 創建 docker 群組: sudo groupadd docker
  2. 將使用者加入 docker 群組: sudo usermod -aG docker $USER
  3. 登出 linux
    現在重新使用 docker version 應該長這樣
    https://ithelp.ithome.com.tw/upload/images/20250916/20178906aLwAgeiDsQ.png

上一篇
前言
下一篇
Day02- SSH 連線使用虛擬機
系列文
從零開始的網際網路隨筆3
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言