前言
在虛擬機中安裝 Docker 是一種常見的測試和開發環境搭建方式。通過在虛擬機上安裝 Docker,可以方便地創建和管理容器化應用,同時避免對宿主機系統造成影響。以下是在 CentOS 7 虛擬機中安裝 Docker 的詳細步驟。
1. 更新系統(可以不操作)
在安裝 Docker 之前,建議先更新虛擬機中的系統軟件包:
sudo yum update -y
2. 卸載舊版本的 Docker(如果已安裝)
2.1 確認系統中是否已安裝 Docker
運行以下命令檢查系統中是否已安裝 Docker 相關包:
yum list installed | grep docker
如果沒有任何輸出,則說明系統中未安裝 Docker。
2.2 如果虛擬機中之前安裝過 Docker,需要先卸載舊版本
2.2.1 停止 Docker 服務
在卸載 Docker 之前,需要先停止 Docker 服務:
sudo systemctl stop docker
2.2.2 禁用 Docker 自啟動
sudo systemctl disable docker
2.2.3 卸載 Docker 軟件包
運行以下命令卸載 Docker 及其相關組件:
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin \
docker-compose-plugin
2.2.4 卸載 Docker 軟件包
刪除 Docker 的數據目錄和配置文件:
sudo rm -rf /var/lib/docker
sudo rm -rf /etc/docker
2.2.5 刪除 Docker 用戶組
如果之前創建了 Docker 用戶組,可以刪除該用戶組:
sudo groupdel docker
2.2.6 清理 YUM 配置
刪除 Docker 的 YUM 倉庫配置文件:
sudo rm -rf /etc/yum.repos.d/docker-ce*
2.2.7 清理 YUM 緩存
清理 YUM 緩存以確保系統狀態一致:
sudo yum clean all
2.2.8 驗證 Docker 是否已完全卸載
運行以下命令檢查系統中是否還殘留 Docker 組件:
yum list installed | grep docker
如果沒有任何輸出,則表示 Docker 已完全卸載。
3. 安裝必要的依賴
安裝一些必要的依賴包,這些包用于管理 Docker 的存儲和配置:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
4. 添加 Docker 的官方 YUM 倉庫
使用 yum-utils
添加 Docker 的官方倉庫:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
5. 安裝 Docker
從 Docker 的官方倉庫安裝最新版本的 Docker:
yum -y install docker
6. 啟動 Docker 服務
安裝完成后,啟動 Docker 守護進程并設置開機自啟:
sudo systemctl start docker
sudo systemctl enable docker
7. 驗證 Docker 是否安裝成功
運行一個簡單的測試容器來驗證 Docker 是否正常工作:
sudo docker run hello-world
7.1 Docker運行/拉取 hello-world 鏡像失敗或超時
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://dockerproxy.com","https://hub-mirror.c.163.com","https://mirror.baidubce.com","https://ccr.ccs.tencentyun.com","https://zfzbet67.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
systemctl status docker
8. (可選)將用戶添加到 Docker 組
默認情況下,Docker 需要以 root 用戶運行。為了避免每次運行 Docker 命令時都需要使用 sudo
,可以將當前用戶添加到 docker
組:
sudo usermod -aG docker $USER
然后重新登錄或重啟虛擬機以使更改生效。
如果Docker提示組不存在,使用如下方式:
8.1 創建docker
組
如果docker
組確實不存在,可以通過以下命令創建:
sudo groupadd docker
如果組已存在,該命令會提示“group ‘docker’ already exists”,但這不會影響后續操作。
8.2. 將用戶添加到docker
組
創建組后,需要將當前用戶添加到docker
組中:
sudo usermod -aG docker $USER
此命令會將當前用戶($USER
)添加到docker
組中,而不會移除用戶原有的其他組。
8.3. 應用組變更
為了讓組變更生效,可以執行以下命令:
newgrp docker
或者重新登錄當前用戶。
8.4. 檢查組成員資格
通過以下命令確認用戶是否已成功加入docker
組:
groups
如果輸出中包含docker
,則表示用戶已正確加入。
8.5. 檢查Docker權限
如果問題仍未解決,可以檢查Docker的socket文件權限:
ls -l /var/run/docker.sock
該文件的組所有權應為docker
,權限應為srw-rw----
。如果不是,可以通過以下命令修復:
sudo chown root:docker /var/run/docker.sock
sudo chmod 660 /var/run/docker.sock
8.6. 重啟Docker服務
如果上述步驟仍未解決問題,可以嘗試重啟Docker服務:
sudo systemctl restart docker
8.7. 測試Docker命令
完成上述步驟后,運行以下命令測試Docker是否可以正常工作:
docker ps
如果不再提示權限問題,則表示問題已解決。
如果問題仍然存在,建議檢查Docker的安裝是否完整,或者查看系統日志以獲取更多信息。
9. 安裝 Docker Compose(可選)
如果需要使用 Docker Compose,可以通過以下命令安裝:
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
注意事項
- 內核版本:Docker 需要較新的內核版本(建議 3.10 或更高)。如果虛擬機的內核版本較低,可能需要升級內核。
- 虛擬機網絡配置:確保虛擬機的網絡配置正確,以便 Docker 容器可以正常訪問外部網絡。
- 存儲空間:Docker 容器和鏡像會占用一定的磁盤空間,請確保虛擬機有足夠的存儲空間。
- 防火墻規則:如果虛擬機啟用了防火墻,可能需要調整防火墻規則以允許 Docker 容器的網絡通信。
通過以上步驟,您可以在 CentOS 7 虛擬機中成功安裝并運行 Docker。