在 Ubuntu 系統上安裝 Docker 環境

在當今的開發環境中,Docker 已經成為容器化技術的主流選擇。它可以幫助開發者輕松地創建、部署和運行應用程序。本文將詳細介紹如何在 Ubuntu 系統上安裝 Docker 和 Docker Compose,并解決在安裝過程中可能遇到的一些常見問題。


一、安裝 Docker


1.卸載舊版本的 Docker(如果已安裝)

```bash
sudo apt-get remove docker docker-engine docker.io containerd runc
```

2.安裝 Docker 的前提條件

? 更新系統包:

```bash
? sudo apt-get update
? ```


? 安裝必要的依賴包:

```bash
? sudo apt-get install -y ca-certificates curl gnupg
? ```

3.添加 Docker 的官方 GPG 密鑰

```bash
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
```

4.設置 Docker 的 APT 軟件源

```bash
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
```

5.安裝 Docker Engine

? 更新包索引:

```bash
? sudo apt-get update
? ```


? 安裝 Docker Engine 和 containerd:

```bash
? sudo apt-get install -y docker-ce docker-ce-cli containerd.io
? ```

6.驗證 Docker 是否安裝成功
運行以下命令來驗證 Docker 是否正常工作:

```bash
sudo docker run hello-world
```

如果安裝成功,會看到類似以下的輸出:

```
Hello from Docker!
This message shows that your installation appears to be working correctly.
```

7.(可選)將用戶添加到 Docker 組
默認情況下,Docker 命令需要管理員權限(即`sudo`)。為了能夠以普通用戶身份運行 Docker 命令,可以將用戶添加到`docker`組:

```bash
sudo usermod -aG docker ${USER}
```

之后需要重新登錄或重啟系統,使組變更生效。


8.配置國內鏡像源(可選)
由于國外的 Docker Hub 在國內訪問速度較慢,可以配置國內的 Docker 鏡像源來加速鏡像的拉取。以下是配置阿里云鏡像源的步驟:

? 創建或編輯 Docker 配置文件:

```bash
? sudo nano /etc/docker/daemon.json
? ```


? 在文件中添加以下內容:

```json
? {
? ? ? "registry-mirrors": ["https://<你的阿里云鏡像地址>.mirror.aliyuncs.com"]
? }
? ```


? 保存文件并退出編輯器。

? 重新加載 Docker 配置并重啟 Docker 服務:

```bash
? sudo systemctl daemon-reload
? sudo systemctl restart docker
? ```

二、安裝 Docker Compose


方法 1:使用官方二進制文件安裝(推薦)

? 下載 Docker Compose

? 打開終端,運行以下命令下載最新版本的 Docker Compose(以最新版本`v2.32.4`為例):

```bash
? ? ?sudo curl -L "https://github.com/docker/compose/releases/download/v2.32.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
? ? ?```


? 如果 GitHub 下載速度較慢,可以使用國內鏡像源,例如 DaoCloud 的鏡像:

```bash
? ? ?sudo curl -L "https://get.daocloud.io/docker/compose/releases/download/v2.32.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
? ? ?```

? 添加可執行權限

```bash
? ?sudo chmod +x /usr/local/bin/docker-compose
? ?```

? 創建軟鏈接(可選)

? 如果你希望在任何地方都能直接使用`docker-compose`命令,可以創建一個軟鏈接:

```bash
? ? ?sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
? ? ?```

? 驗證安裝

? 運行以下命令驗證 Docker Compose 是否安裝成功:

```bash
? ? ?docker-compose --version
? ? ?```


? 如果安裝成功,你會看到類似以下的輸出:

```
? ? ?Docker Compose version v2.32.4
? ? ?```

方法 2:使用包管理器安裝(插件形式)
從 Docker 20.10 版本開始,Docker Compose 被集成到 Docker CLI 插件中,可以通過包管理器直接安裝。


? 更新包索引

```bash
? ?sudo apt-get update
? ?```

? 安裝 Docker Compose 插件

```bash
? ?sudo apt-get install docker-compose-plugin
? ?```

? 驗證安裝

? 運行以下命令驗證 Docker Compose 插件是否安裝成功:

```bash
? ? ?docker compose version
? ? ?```


? 如果安裝成功,你會看到類似以下的輸出:

```
? ? ?Docker Compose version v2.32.4
? ? ?```

三、解決安裝過程中可能遇到的問題


1.Docker 鏡像下載速度慢
即使配置了國內鏡像源,Docker Compose 下載鏡像仍然很慢,可能是由以下原因導致的:


? 鏡像源選擇問題:配置的鏡像源可能不穩定或速度較慢。建議嘗試更換其他國內鏡像源,例如阿里云、網易云、騰訊云、中國科學技術大學等。

? 網絡問題:網絡不穩定或帶寬不足,導致鏡像下載速度慢。建議檢查網絡連接,或者使用代理服務器。

? Docker Hub 限流:Docker Hub 對未登錄用戶進行限流,導致下載速度慢。建議注冊 Docker Hub 賬號并登錄,避免限流。

? 鏡像體積過大:某些鏡像體積較大,即使使用了加速源,下載時間也可能較長。建議盡量使用輕量級的鏡像。


2.無法訪問 DaoCloud 鏡像源
如果你無法訪問 DaoCloud 的鏡像源,可以嘗試以下替代方法:


? 使用 GitHub 官方鏈接:從 GitHub 的官方發布頁面下載 Docker Compose。

? 離線安裝:在有網絡的設備上下載 Docker Compose 二進制文件,然后上傳到目標服務器進行安裝。

? 使用其他工具替代 Docker Compose:例如`nerdctl`是一個替代 Docker 和 Docker Compose 的工具,它支持類似的功能。

? 使用國內開源項目一鍵安裝:例如[LinuxMirrors]()提供了一鍵安裝 Docker 和 Docker Compose 的功能。


四、總結

通過上述步驟,你可以在 Ubuntu 系統上輕松安裝并使用 Docker 和 Docker Compose。在安裝過程中,如果遇到鏡像下載速度慢或無法訪問鏡像源的問題,可以嘗試更換鏡像源、優化網絡設置或使用離線安裝等方法。希望本文能幫助你順利搭建 Docker 環境,提升開發效率。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/87647.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/87647.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/87647.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Qt】QxORM無法刪除和更改主鍵值為0的行,否則報錯:invalid primary key

1、問題描述 使用 QxORM 刪除或者更改數據庫時,當主鍵值為 0 時,報錯: [QxOrm] invalid primary key2、原因分析 2.1 源碼分析 查找打印錯誤提示的代碼: #define QX_DAO_ERR_INVALID_PRIMARY_KEY "[QxOrm] invalid primary key" QSqlError IxDao_Help…

數學建模_線性規劃

問題背景模型介紹matlab求解 示例 問題背景 模型介紹 matlab求解 max問題轉化為min問題 > > >號轉化為 < < <號 示例 看到多個線性規劃目標 2個目標函數變成1個目標函數 后面省略

51單片機制作萬年歷

硬件設計 主控芯片&#xff1a;一般選用AT89C52單片機&#xff0c;它與MCS - 51單片機產品兼容&#xff0c;有8K字節在系統可編程Flash存儲器、32個可編程I/O口線、三個16位定時器 / 計數器等。時鐘芯片&#xff1a;常用DS1302時鐘芯片&#xff0c;能提供實時時鐘 / 日歷、定時…

Oracle CTE遞歸實現PCB行業的疊層關系

1、需求背景&#xff0c;出貨報告要實現疊板假層的處理&#xff0c;需求如下 表ID,layer,MEDIUM數據如下 第一種情況&#xff0c;layer有K的 IDlayerMEDIUM1L1-L2302L2-L3403L3-K1204K1-L4105L4-L5206L5-L6307L7-K2108K2-L8119L8-L91010L9-L1030 實現layer有K1的&#xff0c…

Kubernetes 服務發布基礎學習

一、Service 概述&#xff08;一&#xff09;Service 的定義Service 是 Kubernetes 中的一種抽象概念&#xff0c;用于定義一組 Pod 以及訪問這組 Pod 的策略。其核心作用是將一組 Pod 封裝為一個虛擬服務&#xff0c;并為客戶端提供統一的入口&#xff0c;從而實現服務的負載均…

【零基礎學AI】第21講:TensorFlow基礎 - 神經網絡搭建入門

本節課你將學到理解什么是TensorFlow&#xff0c;為什么要用它 掌握TensorFlow安裝和基本操作 學會搭建第一個神經網絡 完成手寫數字識別項目 開始之前 環境要求 Python 3.8至少4GB內存網絡連接&#xff08;用于下載數據集&#xff09; 前置知識 第1-8講&#xff1a;Python基礎…

STM32 串口USART通訊驅動

前言 本篇文章對串口Usart進行講解&#xff0c;為后面的esp8266和語音模塊控制打好基礎。 1.串口USART USART&#xff08;Universal Synchronous/Asynchronous Receiver/Transmitter&#xff0c;通用同步 / 異步收發器&#xff09; 是一種常見的串行通信接口&#xff0c;廣泛應…

pytorch版本densenet代碼講解

DenseNet 模型代碼詳解 下面是 DenseNet 模型代碼的逐部分詳細解析&#xff1a; 1. 導入模塊 import re from collections import OrderedDict from functools import partial from typing import Any, Optionalimport torch import torch.nn as nn import torch.nn.functional…

前端常見設計模式深度解析

# 前端常見設計模式深度解析一、設計模式概述 設計模式是解決特定問題的經驗總結&#xff0c;前端開發中常用的設計模式可分為三大類&#xff1a; 創建型模式&#xff1a;處理對象創建機制&#xff08;單例、工廠等&#xff09;結構型模式&#xff1a;處理對象組合&#xff08;…

React 學習(3)

核心API——React.creatElement()方法優點&#xff1a;將創建元素、添加屬性和事件、添加內容和子元素等使用原生dom需要進行復雜操作才能實現的功能集成在一個API中。1.該方法接收三個參數第一個是要創建的元素的名稱&#xff08;小寫是因為如果&#xff0c;大寫開頭會被react…

傾斜攝影無人機飛行航線規劃流程詳解

在傾斜攝影測量項目中&#xff0c;航線規劃的嚴謹性直接決定了最終三維模型的質量與完整性。照片覆蓋不全、模型空洞、紋理模糊或分辨率不達標等問題&#xff0c;往往源于規劃階段對關鍵細節的疏忽。本文將系統梳理傾斜攝影無人機航線規劃的核心流程與關鍵要點&#xff0c;旨在…

Minio大文件分片上傳

一、引入依賴 <dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.3.3</version></dependency> 二、自定義Minio客戶端 package com.gstanzer.video.controller;import com.google.common.c…

Jenkins 插件深度應用:讓你的CI/CD流水線如虎添翼 [特殊字符]

Jenkins 插件深度應用&#xff1a;讓你的CI/CD流水線如虎添翼 &#x1f680; 嘿&#xff0c;各位開發小伙伴&#xff01;今天咱們來聊聊Jenkins的插件生態系統。如果說Jenkins是一臺強大的引擎&#xff0c;那插件就是讓這臺引擎發揮最大威力的各種零部件。準備好了嗎&#xff1…

密碼學(斯坦福)

密碼學筆記 \huge{密碼學筆記} 密碼學筆記 斯坦福大學密碼學的課程筆記 課程網址&#xff1a;https://www.bilibili.com/video/BV1Rf421o79E/?spm_id_from333.337.search-card.all.click&vd_source5cc05a038b81f6faca188e7cf00484f6 概述 密碼學的使用背景 安全信息保護…

代碼隨想錄算法訓練營第四十六天|動態規劃part13

647. 回文子串 題目鏈接&#xff1a;647. 回文子串 - 力扣&#xff08;LeetCode&#xff09; 文章講解&#xff1a;代碼隨想錄 思路&#xff1a; 以dp【i】表示以s【i】結尾的回文子串的個數&#xff0c;發現遞推公式推導不出來此路不通 以dp【i】【j】表示s【i】到s【j】的回…

基于四種機器學習算法的球隊數據分析預測系統的設計與實現

文章目錄 有需要本項目的代碼或文檔以及全部資源&#xff0c;或者部署調試可以私信博主項目介紹項目展示隨機森林模型XGBoost模型邏輯回歸模型catboost模型每文一語 有需要本項目的代碼或文檔以及全部資源&#xff0c;或者部署調試可以私信博主 項目介紹 本項目旨在設計與實現…

http、SSL、TLS、https、證書

一、基礎概念 1.HTTP HTTP (超文本傳輸協議) 是一種用于客戶端和服務器之間傳輸超媒體文檔的應用層協議&#xff0c;是萬維網的基礎。 簡而言之&#xff1a;一種獲取和發送信息的標準協議 2.SSL 安全套接字層&#xff08;SSL&#xff09;是一種通信協議或一組規則&#xf…

在 C++ 中,判斷 `std::string` 是否為空字符串

在 C 中&#xff0c;判斷 std::string 是否為空字符串有多種方法&#xff0c;以下是最常用的幾種方式及其區別&#xff1a; 1. 使用 empty() 方法&#xff08;推薦&#xff09; #include <string>std::string s; if (s.empty()) {// s 是空字符串 }特性&#xff1a; 時間…

【Harmony】鴻蒙企業應用詳解

【HarmonyOS】鴻蒙企業應用詳解 一、前言 1、應用類型定義速覽&#xff1a; HarmonyOS目前針對應用分為三種類型&#xff1a;普通應用&#xff0c;游戲應用&#xff0c;企業應用。 而企業應用又分為&#xff0c;企業普通應用和設備管理應用MDM&#xff08;Mobile Device Man…

Linux云計算基礎篇(8)

VIM 高級特性插入模式按 i 進入插入模式。按 o 在當前行下方插入空行并進入插入模式。按 O 在當前行上方插入空行并進入插入模式。命令模式:set nu 顯示行號。:set nonu 取消顯示行號。:100 光標跳轉到第 100 行。G 光標跳轉到文件最后一行。gg 光標跳轉到文件第一行。30G 跳轉…