2025年2月8日 星期六

docker run 詳解

 docker run 是 Docker 的一個核心命令,用於創建並運行容器。它結合了 拉取映像 (pull)創建容器 (create)  啟動容器 (start) 的功能,提供了快速啟動容器的能力。

以下是 docker run 的主要功用及功能介紹:


主要功用

  1. 創建容器

    • 基於指定的 Docker 映像創建一個新的容器實例。
  2. 運行容器

    • 啟動創建的容器並執行指定的命令(默認為映像內的 ENTRYPOINT 或 CMD)。
  3. 自動下載映像

    • 如果指定的映像尚未本地存在,docker run 會自動從 Docker Hub 或其他註冊伺服器拉取。
  4. 容器配置與運行管理

    • 支援傳入多種參數,讓用戶可以靈活地配置容器(如網路、端口映射、環境變數等)。

基本語法

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
  • OPTIONS:可選參數,用於配置容器的運行行為。
  • IMAGE:指定用於創建容器的映像。
  • COMMAND 和 ARG:可選,覆蓋默認的命令或傳遞額外參數。

常見功能與用法

1. 前台運行容器

默認情況下,docker run 會啟動容器並附加到當前終端,顯示容器內的輸出。

docker run ubuntu echo "Hello, Docker!"
  • 使用 ubuntu 映像,運行 echo 命令。

2. 後台運行容器 (-d)

使用 -d 選項讓容器在後台運行(即 分離模式)。

docker run -d nginx
  • 在後台啟動一個 Nginx 容器。

3. 設置端口映射 (-p)

使用 -p 選項將容器內的服務端口映射到主機端口。

docker run -d -p 8080:80 nginx
  • 主機的 8080 埠映射到容器內的 80 埠,這樣主機可通過 http://localhost:8080 訪問容器中的 Nginx。

4. 設置環境變數 (-e)

通過 -e 傳遞環境變數到容器中。

docker run -e MYSQL_ROOT_PASSWORD=my-secret-pw mysql
  • 設置 MySQL 的 root 密碼。

5. 掛載卷(數據持久化) (-v)

使用 -v 選項將主機目錄掛載到容器內部。

docker run -d -v /my/data:/data nginx
  • 主機的 /my/data 目錄掛載到容器內的 /data,實現數據共享與持久化。

6. 命名容器 (--name)

通過 --name 為容器指定一個名稱,方便管理。

docker run --name my-nginx -d nginx
  • 創建一個名稱為 my-nginx 的 Nginx 容器。

7. 限制資源 (--memory--cpus)

可以通過選項限制容器使用的 CPU 和內存資源。

docker run --memory=512m --cpus=1 nginx
  • 限制容器最多使用 512MB 的內存和 1 個 CPU 核心。

8. 交互模式 (-it)

使用 -it 啟動容器,進入交互式終端。

docker run -it ubuntu bash
  • 啟動一個 Ubuntu 容器並進入其終端,允許用戶直接執行命令。

9. 自定義網絡 (--network)

可以指定容器所屬的網絡。

docker run --network=my-network nginx
  • 將容器連接到名為 my-network 的自定義 Docker 網絡。

10. 臨時容器(自動刪除) (--rm)

使用 --rm 選項讓容器在退出時自動刪除。

docker run --rm ubuntu echo "This is a temporary container."
  • 適用於執行短暫任務的容器。

常見場景應用

  1. 測試新映像

    • 使用 docker run 快速啟動容器測試映像功能。
  2. 部署應用

    • 配合 -d-p-v 等選項快速部署 Web 服務、數據庫等應用。
  3. 臨時任務

    • 使用 --rm 和 -it 運行臨時容器進行測試或診斷。
  4. 多容器協作

    • 與 Docker 網絡結合,使用 --network 將多個容器連接在一起,實現複雜應用部署。


使用案例

以下是一些常見的 docker run 使用案例,展示如何啟動容器並執行不同的操作。


1. 運行一個交互式的容器

啟動一個 Ubuntu 容器,並進入容器內的交互式 Shell 環境。

docker run -it ubuntu
  • 選項說明
    • -i:允許交互式輸入。
    • -t:分配一個虛擬終端。
    • ubuntu:要運行的映像名稱。

2. 在容器中執行一個命令

啟動一個 Alpine 容器,執行命令後自動退出。

docker run alpine echo "Hello from Docker!"
  • 結果:顯示 "Hello from Docker!",然後容器自動停止。

3. 後台運行容器

啟動一個 Nginx 容器並在後台運行。

docker run -d nginx
  • 選項說明
    • -d:以後台模式運行容器(detached mode)。
    • nginx:要運行的映像名稱。

4. 指定容器名稱

為容器指定一個自定義名稱。

docker run --name my-nginx -d nginx
  • 結果:容器名稱為 my-nginx,而不是 Docker 默認分配的隨機名稱。

5. 綁定主機端口

將主機的 8080 端口映射到容器的 80 端口。

docker run -d -p 8080:80 nginx
  • 選項說明
    • -p 8080:80:將主機的 8080 端口映射到容器的 80 端口。
  • 結果:可通過瀏覽器訪問 http://localhost:8080

6. 掛載主機目錄到容器

將主機上的目錄掛載到容器內。

docker run -d -v /host/path:/container/path nginx
  • 選項說明
    • -v:指定掛載的目錄(主機路徑:容器內路徑)。
  • 應用場景:例如共享配置文件或數據。

7. 設置環境變量

為容器設置環境變量。

docker run -d -e ENV_VAR_NAME=value nginx
  • 選項說明
    • -e:設置環境變量。

8. 限制資源使用

限制容器使用的 CPU 和內存資源。

docker run -d --memory="512m" --cpus="1.0" nginx
  • 選項說明
    • --memory:限制內存使用(如 512MB)。
    • --cpus:限制 CPU 使用數量(如 1 核心)。

9. 連接到指定的網絡

啟動容器並連接到指定的 Docker 網絡。

docker network create my-network
docker run --network my-network -d nginx
  • 應用場景:適用於容器之間需要通信的場景。

10. 自動刪除容器

運行容器後自動刪除它。

docker run --rm ubuntu echo "Temporary container"
  • 選項說明
    • --rm:在容器退出後自動刪除。

範例:運行 MySQL 容器

啟動一個 MySQL 容器,並設置數據庫密碼。

docker run --name my-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:5.7
  • 選項說明
    • --name:為容器命名為 my-mysql
    • -e:設置環境變量 MYSQL_ROOT_PASSWORD
    • mysql:5.7:使用 MySQL 5.7 映像。

Docker 的常見指令

Docker 的常見指令,這些指令用於操作和管理容器、映像以及 Docker 相關功能。以下是詳細說明:


Usage:

docker [OPTIONS] COMMAND
  • docker:Docker 的主命令。
  • [OPTIONS]:命令選項,用於調整或修改命令行的行為。
  • COMMAND:Docker 支援的具體操作指令。

A self-sufficient runtime for containers

  • Docker 是一個完全獨立的容器運行時環境,負責管理和運行容器化應用。

Common Commands(常見指令)

1. run

  • 功能:創建並運行一個新的容器。
  • 語法:
    docker run [OPTIONS] IMAGE [COMMAND]
  • 範例:
    docker run -it ubuntu
    • 啟動一個交互式的 Ubuntu 容器。

2. exec

  • 功能:在運行中的容器內執行命令。
  • 語法:
    docker exec [OPTIONS] CONTAINER COMMAND
  • 範例:
    docker exec -it my-container bash
    • 在名為 my-container 的容器內啟動一個 Bash Shell。

3. ps

  • 功能:列出當前運行中的容器。
  • 語法:
    docker ps [OPTIONS]
  • 範例:
    docker ps -a
    • 列出所有容器(包括停止的)。

4. build

  • 功能:從 Dockerfile 建立一個新的映像。
  • 語法:
    docker build [OPTIONS] PATH | URL
  • 範例:
    docker build -t my-image .
    • 使用當前目錄的 Dockerfile 建立映像並命名為 my-image

5. pull

  • 功能:從 Docker Registry(默認為 Docker Hub)下載映像到本地。
  • 語法:
    docker pull [OPTIONS] IMAGE[:TAG]
  • 範例:
    docker pull mysql:5.7
    • 下載 MySQL 5.7 的映像。

6. push

  • 功能:將本地的映像上傳到 Docker Registry。
  • 語法:
    docker push [OPTIONS] IMAGE[:TAG]
  • 範例:
    docker push my-image:1.0
    • 將名為 my-image:1.0 的映像上傳至默認的 Docker Hub。

7. images

  • 功能:列出本地存儲的所有映像。
  • 語法:
    docker images [OPTIONS]
  • 範例:
    docker images
    • 顯示本地所有的映像及其標籤和大小。

8. login

  • 功能:登錄到 Docker Registry(如 Docker Hub)。
  • 語法:
    docker login [OPTIONS] [SERVER]
  • 範例:
    docker login
    • 提示輸入 Docker Hub 的用戶名和密碼。

9. logout

  • 功能:從 Docker Registry 登出。
  • 語法:
    docker logout [SERVER]
  • 範例:
    docker logout
    • 從默認的 Docker Hub 登出。

10. search

  • 功能:在 Docker Hub 上搜索映像。
  • 語法:
    docker search [OPTIONS] TERM
  • 範例:
    docker search nginx
    • 搜索與 nginx 相關的映像。

11. version

  • 功能:顯示 Docker 的版本信息。
  • 語法:
    docker version
  • 範例:
    docker version
    • 顯示客戶端和伺服器的版本資訊。

12. info

  • 功能:顯示系統範圍內的 Docker 信息。
  • 語法:
    docker info
  • 範例:
    docker info
    • 顯示當前 Docker 的配置、運行容器數量等詳情。


2025年2月7日 星期五

AlmaLinux 相關的 Docker 映像檔

 



在圖片中列出了一些與 AlmaLinux 相關的 Docker 映像檔。以下是對這些映像的說明及其功能與應用:


1. almalinux/almalinux

描述: AlmaLinux 的官方映像,但顯示此映像已被標記為 "DEPRECATED"(已過時)。

用途: 此映像是早期版本的 AlmaLinux 映像,建議改用更新的官方版本。

應用: 適用於基於 AlmaLinux 的應用程式或測試環境,雖然已過時,但仍可以用於舊系統的維護。


2. almalinux/9-base 與 almalinux/8-base

描述: AlmaLinux 9 和 AlmaLinux 8 的基本容器映像。

用途: 這些映像用作容器應用的基礎層,提供最基本的 Linux 環境。

應用: 開發者可以在這些基本映像之上構建特定的應用程式,適合最小化容器大小。


3. almalinux/9-minimal 與 almalinux/8-minimal

描述: AlmaLinux 9 和 AlmaLinux 8 的極小化容器映像。

用途: 提供比 "base" 更小的映像,僅包含最基本的系統功能。

應用: 適合對映像大小和性能有高要求的場景,例如微服務架構或輕量級容器化環境。


4. almalinux/9-init 與 almalinux/8-init

描述: AlmaLinux 的初始化容器映像。

用途: 包含系統初始化相關功能,適用於需要完整 init 系統的容器化應用。

應用: 通常用於需要模擬完整操作系統功能的應用或測試。


5. almalinux/9-micro 與 almalinux/8-micro

描述: AlmaLinux 的 "micro" 極簡容器映像。

用途: 比 minimal 映像更小,僅包含基本執行環境,適合對映像大小有極端要求的場景。

應用: 非常適合超輕量應用或特定情境下的容器部署。


6. almalinux/arm64v8、ppc64le、s390x

描述:

arm64v8: 適用於 ARM 架構 (64 位) 的映像。

ppc64le: 適用於 PowerPC 架構的映像。

s390x: 適用於 IBM Z 架構的映像。

用途: 提供在特定硬體架構(如 ARM、PowerPC、IBM Z)上的支持。

應用: 用於那些需要針對特定架構部署的應用環境。


7. almalinux/amd64

描述: 適用於 x86_64 架構(也稱為 AMD64)的映像。

用途: 主流的映像,適用於大多數伺服器與桌面環境。

應用: 標準的容器化部署,支持所有基於 x86_64 架構的應用程式。


8. almalinux/ks2rootfs

描述: 用於在 Docker 或 Podman 中構建 rootFS 文件的映像。

用途: 幫助創建根文件系統,通常用於定製化 Linux 發行版的基礎構建。

應用: 適用於系統管理員或開發者需要定製化容器的場景。


9. almalinux/pause

描述: 用於容器編排的 "pause" 映像。

用途: 常用於 Kubernetes 等容器編排工具,作為 pause 容器保持網路命名空間的穩定。

應用: 用於微服務架構或容器編排中的網路管理。


10. almalinux/mirror_service

描述: AlmaLinux 的鏡像服務映像。

用途: 為本地設置 AlmaLinux 軟體倉庫提供支持。

應用: 適用於離線環境或需要內部軟體倉庫的企業環境。


11. almalinux/i386

描述: 支持 i686 架構(32 位)的容器映像。

用途: 提供對舊硬體或遺留應用的支持。

應用: 用於需要在 32 位架構上運行的應用程式或模擬環境。


12. almalinux/10-kitten- 系列*

描述: 包括 micro、minimal 和 base 的特定映像。

用途: 針對特殊應用場景,提供更加精簡的映像選擇。

應用: 適用於精確控制資源分配的環境。


總結

這些映像提供了針對不同應用場景和硬體架構的選擇。使用者可以根據具體需求選擇合適的映像,例如:

開發環境: 選擇 "base" 或 "minimal"。

輕量化需求: 選擇 "micro"。

特定架構支持: 選擇 arm64v8、ppc64le 或 s390x。

AlmaLinux

AlmaLinux 是什麼?

AlmaLinux 是一個開源的 Linux 發行版,基於 Red Hat Enterprise Linux (RHEL) 的源碼構建,旨在作為 CentOS 的穩定替代品。它由 AlmaLinux OS Foundation 推動,並且完全免費

AlmaLinux 的名稱來源於拉丁文 "Alma",意思是 "靈魂" 或 "滋養",表達了對社群的支持和回饋。


背景與起源

CentOS 項目變更: 2020 年,Red Hat 宣布 CentOS 將轉型為 CentOS Stream,專注於作為 RHEL 的滾動開發版本,而不再提供穩定的企業級版本。此舉引發了廣泛的企業與開發者社群的擔憂,因為 CentOS 長期以來都是企業環境中重要的免費穩定版 RHEL 替代品。

AlmaLinux 的誕生: CloudLinux 公司宣布推出 AlmaLinux,以填補 CentOS Linux 消失後留下的市場空白。AlmaLinux 在 2021 年 3 月正式發布其首個穩定版本。


AlmaLinux 的特點

100% RHEL 二進制兼容: AlmaLinux 與 RHEL 完全兼容,適合所有基於 RHEL 的應用和部署環境。

免費且開放源碼: AlmaLinux 永久免費,開放源碼,任何人都可以下載、使用和修改。

社群驅動: AlmaLinux OS Foundation 是一個非營利組織,旨在通過社群參與來推動項目進展,確保用戶需求優先。

長期支持 (LTS): AlmaLinux 提供穩定的支持週期,每個版本都會有長達 10 年的安全更新。


企業級穩定性: AlmaLinux 專為企業環境設計,適合用於伺服器和容器化部署。


AlmaLinux 的應用場景

企業伺服器: AlmaLinux 是 CentOS 的直接替代品,適合各種企業級應用,包括網頁伺服器、數據庫伺服器等。


雲端與虛擬化: 支援 Docker 和 Kubernetes,適合部署雲端服務。


軟體開發與測試: 提供穩定的環境,適合開發基於 RHEL 的應用程式。


高效能計算 (HPC): 與 RHEL 的兼容性使其適合用於高效能計算和科學研究。


如何安裝 AlmaLinux

下載映像檔:

到官方網站下載 ISO:https://almalinux.org


創建啟動盤:

使用工具(如 Rufus 或 Etcher)將 ISO 文件寫入 USB 啟動盤。


安裝過程:

啟動電腦並從 USB 啟動。

按照指引進行安裝,選擇分區、設定時區等。


後續配置:

安裝所需軟體包(如 Apache、MySQL 等)。

配置網路與防火牆。


AlmaLinux 的優勢與劣勢

優勢

穩定性:企業級環境的可靠選擇。

與 RHEL 完全兼容:輕鬆移植現有應用。

強大的社群支持:社群參與活躍,開源精神濃厚。

免費:與 RHEL 相比,不需要支付訂閱費。

劣勢

較新:相較於 RHEL 或 CentOS,AlmaLinux 的歷史較短。

依賴社群支持:某些情況下可能需要更多企業級支持方案。

 

與其他發行版的比較




 

2025年2月5日 星期三

Hyper-V的停用與重新啟用

1.開啟 PowerShell 或命令提示字元(管理員身份開啟)


2.按 Windows + S 鍵,輸入 PowerShell 或 Command Prompt。


在搜尋結果中,右鍵點擊 PowerShell 或 命令提示字元,選擇 "以系統管理員身份運行"。



3.重新執行指令 在管理員模式下,執行以下指令來停用 Hyper-V:


dism.exe /Online /Disable-Feature:Microsoft-Hyper-V



如果需要重新啟用 Hyper-V,則執行:


dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All



注意事項

管理員權限是操作系統中修改系統功能的必要條件,無法以普通用戶身份執行。

確保您的 Windows 使用者帳戶有 管理員權限。


2024年6月12日 星期三

在防火牆中配置以啟用T-SQL偵錯

要在防火牆中配置以啟用T-SQL偵錯,您需要允許特定的端口和應用程序通信。以下是具體步驟:


### 1. 確認需要的端口

T-SQL偵錯通常需要以下端口:

- **TCP 135**:用於RPC端口映射

- **動態高端口範圍**:用於實際的偵錯通信,這些端口是動態分配的。


### 2. 在防火牆中配置例外

這裡假設您使用的是Windows防火牆。


#### 添加TCP 135端口例外

1. **開啟Windows防火牆**:

   - 打開「控制面板」>「系統及安全」>「Windows Defender 防火牆」。

   - 或按「Win + R」,輸入`firewall.cpl`並按Enter。


2. **新增入站規則**:

   - 在左側選單中,選擇「高級設定」。

   - 進入「入站規則」後,在右側選擇「新增規則」。


3. **選擇規則類型**:

   - 選擇「端口」,然後點擊「下一步」。


4. **指定端口和協議**:

   - 選擇「TCP」。

   - 在「特定本地端口」中輸入 `135`,然後點擊「下一步」。


5. **允許連接**:

   - 選擇「允許連接」,然後點擊「下一步」。


6. **指定規則應用的網絡類型**:

   - 根據需要選擇「域」、「專用」和「公用」,然後點擊「下一步」。


7. **命名規則**:

   - 給規則命名,例如「T-SQL Debugger TCP 135」,然後點擊「完成」。


#### 添加動態高端口範圍的例外

假設動態端口範圍為`49152-65535`:


1. **重複上述步驟**,直到指定端口和協議部分:

   - 在「特定本地端口」中輸入 `49152-65535`,然後點擊「下一步」。


2. **其餘步驟與添加TCP 135端口例外相同**。


### 3. 在防火牆中允許應用程序

允許SSMS和SQL Server進程(通常是`sqlservr.exe`)通過防火牆。


#### 允許SQL Server應用程序

1. **在「高級設定」中選擇「入站規則」**。

2. **新增規則**,選擇「程式」,然後點擊「下一步」。

3. **指定程式路徑**:

   - SQL Server的默認路徑可能是 `C:\Program Files\Microsoft SQL Server\MSSQLXX.MSSQLSERVER\MSSQL\Binn\sqlservr.exe`。

   - 點擊「下一步」。


4. **允許連接**,然後點擊「下一步」。

5. **選擇應用規則的網絡類型**,然後點擊「下一步」。

6. **命名規則**,例如「SQL Server」,然後點擊「完成」。


#### 允許SSMS應用程序

1. **重複上述步驟**,直到指定程式路徑部分:

   - SSMS的默認路徑可能是 `C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\Ssms.exe`。

   - 點擊「下一步」。


2. **其餘步驟與允許SQL Server應用程序相同**。


### 4. 測試連接

配置完成後,重啟SQL Server和SSMS,然後嘗試啟動T-SQL偵錯。如果一切配置正確,應該能夠順利進行T-SQL偵錯。


如果您在使用的防火牆軟件與Windows防火牆不同,請查閱相應的使用說明,尋找如何配置入站和出站規則的步驟。

kali linux 如何獲得及變更root密碼

 在 Kali Linux 中, 獲取或變更 root 密碼 需要根據不同的情況來操作。 1. 檢查 root 是否已啟用 在 Kali Linux 2020.1 之後, root 帳戶 預設是禁用的 ,所以需要先啟用 root 。 檢查當前用戶是否為 root : ...