目錄
- 🍁安裝docker
- 🌲1、環境準備
- 🌲2、安裝docker Engine
- 🧊1、卸載舊版、任何沖突的包
- 🧊2、使用存儲庫安裝
- 🧊3、安裝 Docker 包。
- 🧊4、查詢是否安裝成功
- 🧊5、運行`hello-world`鏡像
- 🧊6、查看下載的鏡像
- 🌲3、卸載docker Engine
- 🥦配置加速器
- 🥦docker Engine 和 docker Desktop的區別
🍁安裝docker
🌲1、環境準備
1、使用Linux、可以使用虛擬機或者阿里云服務器(需要會一點Linux基礎)
2、查看使用的環境信息:cat /etc/os-release
# 查看系統內核
beihai@beihai-pc:~/桌面$ uname -r
6.2.0-39-generic# 查看系統版本
beihai@beihai-pc:~/桌面$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.3 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.3 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy
🌲2、安裝docker Engine
!!!我們這里步驟安裝的是docker Engine,不是docker Desktop【關于兩者區別,文末會拓展】!!!
根據官方文檔提示安裝對應系統的docker:https://docs.docker.com/
根據官方文檔,得出安裝步驟【Ubuntu 22.04.3 LTS版本、不同版本根據上圖尋找不同操作文檔】:
🧊1、卸載舊版、任何沖突的包
for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
beihai@beihai-pc:~/桌面$ for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
[sudo] beihai 的密碼:
正在讀取軟件包列表... 完成
正在分析軟件包的依賴關系樹... 完成
正在讀取狀態信息... 完成
軟件包 docker.io 未安裝,所以不會被卸載
升級了 0 個軟件包,新安裝了 0 個軟件包,要卸載 0 個軟件包,有 280 個軟件包未被升級。
正在讀取軟件包列表... 完成
正在分析軟件包的依賴關系樹... 完成
正在讀取狀態信息... 完成
軟件包 docker-doc 未安裝,所以不會被卸載
升級了 0 個軟件包,新安裝了 0 個軟件包,要卸載 0 個軟件包,有 280 個軟件包未被升級。
正在讀取軟件包列表... 完成
正在分析軟件包的依賴關系樹... 完成
正在讀取狀態信息... 完成
軟件包 docker-compose 未安裝,所以不會被卸載
升級了 0 個軟件包,新安裝了 0 個軟件包,要卸載 0 個軟件包,有 280 個軟件包未被升級。
正在讀取軟件包列表... 完成
正在分析軟件包的依賴關系樹... 完成
正在讀取狀態信息... 完成
軟件包 docker-compose-v2 未安裝,所以不會被卸載
升級了 0 個軟件包,新安裝了 0 個軟件包,要卸載 0 個軟件包,有 280 個軟件包未被升級。
正在讀取軟件包列表... 完成
正在分析軟件包的依賴關系樹... 完成
正在讀取狀態信息... 完成
軟件包 podman-docker 未安裝,所以不會被卸載
升級了 0 個軟件包,新安裝了 0 個軟件包,要卸載 0 個軟件包,有 280 個軟件包未被升級。
正在讀取軟件包列表... 完成
正在分析軟件包的依賴關系樹... 完成
正在讀取狀態信息... 完成
軟件包 containerd 未安裝,所以不會被卸載
升級了 0 個軟件包,新安裝了 0 個軟件包,要卸載 0 個軟件包,有 280 個軟件包未被升級。
正在讀取軟件包列表... 完成
正在分析軟件包的依賴關系樹... 完成
正在讀取狀態信息... 完成
軟件包 runc 未安裝,所以不會被卸載
升級了 0 個軟件包,新安裝了 0 個軟件包,要卸載 0 個軟件包,有 280 個軟件包未被升級。
🧊2、使用存儲庫安裝
# 添加Docker的官方GPG密鑰:
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#將存儲庫添加到 Apt源(這里使用默認鏡像【國外鏡像】):
echo \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
😎代碼指令解析:
# 1、更新 apt 包索引(更新本地包索引,使系統能夠獲取最新的包信息,包括最新的版本和依賴關系。)
sudo apt-get update#2、安裝必要的軟件包
#(安裝 ca-certificates 和 curl。ca-certificates 包含了系統的受信任根證書,用于驗證 SSL 證書。curl 是一個命令行工具,用于從 URL 獲取數據。)
sudo apt-get install ca-certificates curl#3、創建 /etc/apt/keyrings 目錄
#(創建 /etc/apt/keyrings 目錄,用于存放 GPG 密鑰文件。-m 0755 指定了新目錄的權限,表示目錄所有者有讀、寫、執行權限,組和其他用戶有讀和執行權限。-d 表示創建目錄。)
sudo install -m 0755 -d /etc/apt/keyrings#4、下載 Docker 官方 GPG 密鑰(使用 curl 從 Docker 官方網站下載 GPG 密鑰文件,并將其保存到 /etc/apt/keyrings/docker.asc。選項 -fsSL 的含義是:
# -f:失敗時不輸出錯誤信息。
# -s:靜默模式,不輸出進度信息。
# -S:靜默模式下顯示錯誤信息。
# -L:如果目標是一個重定向 URL,則跟隨重定向。)
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc#5、修改密鑰文件的權限
#(將密鑰文件 /etc/apt/keyrings/docker.asc 的權限設置為所有用戶可讀 (a+r),確保 apt 軟件包管理器能夠讀取這個文件。)
sudo chmod a+r /etc/apt/keyrings/docker.asc#6、添加 Docker 存儲庫
echo \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \sudo tee /etc/apt/sources.list.d/docker.list > /dev/null#這個命令分為幾部分:
# ---1
# echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable":# echo 用于輸出一行文本,包含存儲庫的定義。
# deb 表示這是一個二進制軟件包存儲庫。
# [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] 指定了存儲庫的架構和用于簽名的 GPG 密鑰文件。
# arch=$(dpkg --print-architecture) 動態獲取系統的架構(例如 amd64)。
# signed-by=/etc/apt/keyrings/docker.asc 指定了用于驗證該存儲庫的軟件包的 GPG 密鑰文件。
# https://download.docker.com/linux/ubuntu 是存儲庫的 URL。
# $(. /etc/os-release && echo "$VERSION_CODENAME") 動態獲取當前操作系統的版本代號(例如 focal for Ubuntu 20.04)。這是通過讀取 /etc/os-release 文件來實現的。
#stable 指定了存儲庫的分支(穩定版)。
#---2
# | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null:
# | 將前面的 echo 命令的輸出傳遞給 tee 命令。
#sudo tee /etc/apt/sources.list.d/docker.list 以 sudo 權限將輸出寫入到 /etc/apt/sources.list.d/docker.list 文件中。
# > /dev/null 表示將 tee 命令的標準輸出重定向到 /dev/null,避免在終端中顯示冗余信息。#7、更新本地包索引
sudo apt-get update#這條命令會更新本地的包索引,包含剛剛添加的 Docker 存儲庫中的包信息。這樣系統就知道可以從 Docker 存儲庫中安裝哪些軟件包以及它們的最新版本。
🧊3、安裝 Docker 包。
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
(docker-ce 社區版、docker-ee 企業版)
🧊4、查詢是否安裝成功
命令: docker versionbeihai@beihai-pc:~/桌面$ docker version
Client: Docker Engine - CommunityVersion: 26.1.3API version: 1.45Go version: go1.21.10Git commit: b72abbbBuilt: Thu May 16 08:33:29 2024OS/Arch: linux/amd64Context: default
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.45/version": dial unix /var/run/docker.sock: connect: permission denied
🧊5、運行hello-world
鏡像
命令: sudo docker run hello-world
🧊6、查看下載的鏡像
命令: docker imagesbeihai@beihai-pc:~/桌面$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest d2c94e258dcb 13 months ago 13.3kB
!!! 如果查看鏡像失敗
報:permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Head “http://%2Fvar%2Frun%2Fdocker.sock/_ping”: dial unix /var/run/docker.sock: connect: permission denied
是因為當前用戶沒有權限訪問 Docker 守護進程的 Unix 套接字。你可以通過以下方法和步驟解決這個問題:
方法一:使用
sudo
運行,命令:sudo docker images
方法二:
- 添加當前用戶到 Docker 組。
sudo usermod -aG docker $USER
- 重新啟動計算機,以使組更改生效。
如果不想注銷或重啟,可以通過以下命令啟動一個新的 shell 會話:newgrp docker
【但是這樣是只對當前會話有效,所以為了長遠發展,還是通過重新啟動計算機方法】
至此,docker Engine安裝成功!
🌲3、卸載docker Engine
1、卸載 Docker Engine、CLI、containerd 和 Docker Compose 包:
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
2、主機上的映像、容器、卷或自定義配置文件 不會自動刪除。要刪除所有映像、容器和卷,請執行以下操作:
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
3、您必須手動刪除任何已編輯的配置文件。
🥦配置加速器
我們前面默認的鏡像拉取地址是國外的,速度比較慢。現在想配置國內鏡像(阿里云鏡像)來提高docker鏡像的拉取速度。
1、前往阿里云容器鏡像服務
:https://cr.console.aliyun.com/cn-hangzhou/instances 獲取加速鏡像
創建成功后,退回。點擊【鏡像工具 -》 鏡像加速器】
根據自己服務器型號,自己復制對應的命令
2、 執行上面復制的命令,配置加速器
命令:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://<自己的鏡像加速器>.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker==============指令解析==============
sudo mkdir -p /etc/docker解析:使用 mkdir 創建 /etc/docker 目錄。選項 -p 的作用是如果父目錄不存在則一并創建。sudo 是用來以超級用戶(root)權限執行該命令,因為 /etc 目錄通常需要超級用戶權限。
----------------------------
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://<自己的鏡像加速器>.mirror.aliyuncs.com"]
}
EOF解析:這個命令使用 tee 命令將多行字符串寫入到 /etc/docker/daemon.json 文件中。sudo tee /etc/docker/daemon.json:tee 命令會將標準輸入的內容寫入到指定的文件中。sudo 是用來以超級用戶權限執行該命令,以確保可以寫入到 /etc/docker 目錄下。<<-'EOF':表示開始一個多行字符串,直到遇到一個單獨的 EOF(或其他標識符)。<<- 的作用是支持行首的制表符縮進,這樣在腳本中可以更美觀地格式化內容。{ "registry-mirrors": ["https://<自己的鏡像加速器>.mirror.aliyuncs.com"] }:這部分內容是實際寫入到 daemon.json 文件中的 JSON 配置EOF:表示多行字符串的結束。
----------------------------
sudo systemctl daemon-reload解析:告訴 systemd(系統和服務管理器)重新加載配置文件。這是因為我們更改了 Docker 的配置文件,需要通知 systemd 重新讀取這些配置。
----------------------------
sudo systemctl restart docker解析:重啟 Docker 服務,以應用新的配置。sudo 是用來以超級用戶權限執行該命令,因為啟動和停止系統服務通常需要超級用戶權限。
3、 查詢是否配置成功
命令 :docker info你應該看到類似以下輸出,包含 Registry Mirrors 部分:
Registry Mirrors:https://<自己的鏡像加速器>.mirror.aliyuncs.com/
🥦docker Engine 和 docker Desktop的區別
Docker Desktop 和 Docker Engine 是 Docker 提供的兩種不同的產品,它們的安裝和使用方式有所不同,適用于不同的使用場景。
Docker Desktop
Docker Desktop 是一個面向桌面操作系統(如 Windows 和 macOS)的應用程序,它包含了 Docker Engine、Docker CLI 客戶端、Docker Compose、Kubernetes 以及其他一些工具。Docker Desktop 提供了一個完整的 Docker 開發環境,易于安裝和使用,特別適合開發人員和個人用戶。特點:
- 一體化安裝:包括 Docker Engine、CLI、Compose 等,提供開箱即用的體驗。
- GUI 支持:提供圖形用戶界面,可以通過 GUI 來管理容器和鏡像。
- 跨平臺:支持 Windows 和 macOS,簡化了不同操作系統上的 Docker 使用。
- 集成工具:內置了 Kubernetes 和其他開發工具,方便開發者進行本地開發和測試。
Docker Engine
Docker Engine 是一個適用于 Linux 操作系統的容器運行時,主要用于生產環境中的容器化應用。它是 Docker 技術的核心組件,負責構建、運行和管理容器。Docker Engine 通常在服務器環境中使用,并通過命令行進行管理。特點:
- 輕量級:僅包括核心組件,適合服務器和生產環境部署。
- 高性能:設計用于高效地管理容器和鏡像。
- 命令行管理:主要通過命令行接口(CLI)進行操作,沒有圖形界面。