Skip to content

Instantly share code, notes, and snippets.

@jim60105
Last active June 27, 2024 08:15
Show Gist options
  • Save jim60105/09bfdc122e65c42e426a95b31f55693a to your computer and use it in GitHub Desktop.
Save jim60105/09bfdc122e65c42e426a95b31f55693a to your computer and use it in GitHub Desktop.

準備裝機 USB

USB 大小選擇 16 GB ↑

下載 Docker 離線安裝包

Docker 官方手冊: https://docs.docker.com/engine/install/rhel/#install-from-a-package

準備 docker image 做測試 (可選)

tar 檔放 USB 帶去

docker save -o busybox.tar busybox
docker save -o nginx.tar nginx

硬體 RAID

這次的客戶主機有內建硬體 RAID,在開機時 F2 確認配置為 RAID 5
(RAID 5 是客戶機型出廠配置)

安裝 RHEL

開機時 F11 進 One-shot boot menu,選擇 RHEL 開機 USB

Red Hat 官方手冊: https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/8/html-single/performing_a_standard_rhel_8_installation/index

  • 注意若要創建其它用戶時 必須 授予 sudo 權限
  • 硬碟配置選 Custom,並將 /var 切大一點,docker 佔空間的檔案會存在這

其餘依照客戶需求做設定,安裝完成後重啟

2024-06-26-164659 2024-06-26-165013 2024-06-26-165032 2024-06-26-165043 2024-06-26-165814 2024-06-26-165843 2024-06-27-160114

安裝 docker

Mount usb

mount /dev/sdb1 /mnt
cd /mnt
ls -alh

image

移除衝突套件 (for RHEL 8)

https://stackoverflow.com/a/60153726/8706033

dnf module disable container-tools
dnf remove runc

安裝依賴項

dnf install ./container-selinux(tab 按出檔案名)
dnf install ./libcgroup(tab 按出檔案名)

安裝所有 docker 相關 rpm

dnf install ./(用 tab 依序按出所有檔案)

image

啟用 docker

systemctl enable docker
systemctl start docker

確認 docker 成功安裝

docker -v
docker compose version

開啟 dhcp

2024-06-27-160232

nmcli connection show
nmcli connection modify eno8303 ipv4.method auto
nmcli connection up eno8303
nmcli connection modify eno8303 connection.autoconnect yes
nmcli connection show
ip route show default

調整防火牆

客戶需求: 僅回應 ping,其餘全部阻擋,且未來會再回復成開放狀態

確認防火牆啟動

firewall-cmd --state

未啟動的話將它啟動

systemctl start firewalld
systemctl enable firewalld

創建新的防火牆設定檔 test

firewall-cmd --permanent --new-zone=test
firewall-cmd --permanent --zone=test --set-target=DROP
firewall-cmd --permanent --zone=test --add-icmp-block=echo-request
firewall-cmd --permanent --zone=test --add-icmp-block=echo-reply
firewall-cmd --permanent --zone=test --add-icmp-block-inversion

firewall-cmd --reload

記下現在使用中的防火牆設定檔

firewall-cmd --get-active-zones
ifconfig

如圖所示,eno8303 使用 public 設定檔;docker0 使用 docker 設定檔

2024-06-27-154955

將 test 設定檔套用至 eno8303 和 docker0

firewall-cmd --permanent --zone=test --change-interface=eno8303
firewall-cmd --permanent --zone=test --change-interface=docker0

firewall-cmd --reload
firewall-cmd --get-active-zones

未來回復至原來的設定檔

firewall-cmd --permanent --zone=public --change-interface=eno8303
firewall-cmd --permanent --zone=docker --change-interface=docker0
firewall-cmd --reload

測試 docker (可選)

docker load -i busybox.tar
docker load -i nginx.tar
docker images

docker run --rm busybox echo "hello from busybox"
docker run --rm -d -p 8080:80 --name web nginx
curl http://localhost:8080
docker stop web

docker system prune -a
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment