Ubuntu 安裝 Docker 環境

来源:https://www.cnblogs.com/zewanhuang/archive/2022/08/19/16601892.html
-Advertisement-
Play Games

本文摘選自『Docker-從入門到實踐』,該書籍較詳細地記錄了 Docker 的知識,強烈推薦。 警告:切勿在沒有配置 Docker APT 源的情況下直接使用 apt 命令安裝 Docker. 準備工作 系統要求 Docker 支持以下版本的 Ubuntu 操作系統: Ubuntu Hirsute ...


本文摘選自『Docker-從入門到實踐』,該書籍較詳細地記錄了 Docker 的知識,強烈推薦。

警告:切勿在沒有配置 Docker APT 源的情況下直接使用 apt 命令安裝 Docker.

準備工作

系統要求

Docker 支持以下版本的 Ubuntu 操作系統:

  • Ubuntu Hirsute 21.04
  • Ubuntu Groovy 20.10
  • Ubuntu Server 22.04 (LTS)
  • Ubuntu Focal 20.04 (LTS)
  • Ubuntu Bionic 18.04 (LTS)

Ubuntu 發行版中,LTS(Long-Term-Support)長期支持版本,會獲得 5 年的升級維護支持,這樣的版本會更穩定,因此在生產環境中推薦使用 LTS 版本。

卸載舊版本

舊版本的 Docker 稱為 docker 或者 docker-engine,使用以下命令卸載舊版本:

$ sudo apt-get remove docker \
               docker-engine \
               docker.io

使用 APT 安裝

由於 apt 源使用 HTTPS 以確保軟體下載過程中不被篡改。因此,我們首先需要添加使用 HTTPS 傳輸的軟體包以及 CA 證書。

$ sudo apt-get update
$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

鑒於國內網路問題,強烈建議使用國內源,官方源請在註釋中查看。

為了確認所下載軟體包的合法性,需要添加軟體源的 GPG 密鑰。

$ curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 官方源
# $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

然後,我們需要向 sources.list 中添加 Docker 軟體源。

$ echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 官方源
# $ echo \
#   "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
#   $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

以上命令會添加穩定版本的 Docker APT 鏡像源,如果需要測試版本的 Docker 請將 stable 改為 test。

安裝 Docker

更新 apt 軟體包緩存,並安裝 docker-ce

$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io

使用腳本自動安裝

在測試或開發環境中 Docker 官方為了簡化安裝流程,提供了一套便捷的安裝腳本,Ubuntu 系統上可以使用這套腳本安裝,另外可以通過 --mirror 選項使用國內源進行安裝:

若你想安裝測試版的 Docker, 請從 test.docker.com 獲取腳本

# $ curl -fsSL test.docker.com -o get-docker.sh
$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh --mirror Aliyun
# $ sudo sh get-docker.sh --mirror AzureChinaCloud

執行這個命令後,腳本就會自動的將一切準備工作做好,並且把 Docker 的穩定(stable)版本安裝在系統中。

啟動 Docker

$ sudo systemctl enable docker
$ sudo systemctl start docker

建立 docker 用戶組

預設情況下,docker 命令會使用 Unix socket 與 Docker 引擎通訊。而只有 root 用戶和 docker 組的用戶才可以訪問 Docker 引擎的 Unix socket。出於安全考慮,一般 Linux 系統上不會直接使用 root 用戶。因此,更好地做法是將需要使用 docker 的用戶加入 docker 用戶組。

建立 docker 組:

$ sudo groupadd docker

將當前用戶加入 docker 組:

$ sudo usermod -aG docker $USER

退出當前終端並重新登錄,進行如下測試。

測試 Docker 是否安裝正確

$ docker run --rm hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
b8dfde127a29: Pull complete
Digest: sha256:308866a43596e83578c7dfa15e27a73011bdd402185a84c5cd7f32a88b501a24
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/
For more examples and ideas, visit:
 https://docs.docker.com/get-started/

若能正常輸出以上信息,則說明安裝成功。

鏡像加速

如果在使用過程中發現拉取 Docker 鏡像十分緩慢,可以配置 Docker 國內鏡像加速。國內很多雲服務商都提供了國內加速器服務,例如:

目前主流 Linux 發行版均已使用 systemd 進行服務管理,這裡介紹如何在使用 systemd 的 Linux 發行版中配置鏡像加速器。

請首先執行以下命令,查看是否在 docker.service 文件中配置過鏡像地址。

$ systemctl cat docker | grep '\-\-registry\-mirror'

如果該命令有輸出,那麼請執行 $ systemctl cat docker 查看 ExecStart= 出現的位置,修改對應的文件內容去掉 --registry-mirror 參數及其值,並按接下來的步驟進行配置。

如果以上命令沒有任何輸出,那麼就可以在 /etc/docker/daemon.json 中寫入如下內容(如果文件不存在請新建該文件):

{
  "registry-mirrors": [
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com"
  ]
}

註意,一定要保證該文件符合 json 規範,否則 Docker 將不能啟動。

之後重新啟動服務。

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 首先先打開我們的Visual Studio 然後點擊[擴展] [管理擴展] 然後搜索[Claudia],點擊[下載]按鈕 稍等一下 這時候會提示我們重新啟動 重新啟動後會這樣,稍等一下 然後點擊[Modify] 然後點擊[End Tasks] 這時VS應該會關閉,並顯示更新配置 一千年後,終於完成了 ...
  • 通常情況下在插件中取Entity中的欄位值是通過強轉或者GetAttributeValue方式,但在實際插件代碼中,去判斷Moeny類型時,做一些直接的計算想一行代碼設置值,最好還是先判斷一下entity中有沒有這個欄位,Entity實體通過查詢返回或者插件的當前操作實體都是只返回有值的欄位,沒有值... ...
  • TAP 是基於任務的非同步模式,在 .NET Framework 4 中引入。TAP取代了 APM 和EAP,是推薦的非同步編程模式。 async / await async 和 await 是為非同步編程提供的語法糖,方便我們快捷編寫非同步代碼。關鍵字 async 作用僅僅是為了能夠使用 await 關鍵 ...
  • Dynaimc CRM查找欄位自定義過濾視圖:Xrm.Page.getControl(arg).addCustomView(viewId, entityName, viewDisplayName, fetchXml, layoutXml, isDefault) 實戰筆記 ...
  • 操作系統的核心功能就是管理電腦硬體,而CPU就是電腦中最核心的硬體。操作系統通過多進程圖像實現對CPU的管理。所以多進程圖像是操作系統的核心圖像。 ...
  • 最近想在麒麟系統上運行.NET 6程式,經過一番折騰最終完成了,簡單記錄一下。 目標系統: CPU: aarch64架構(ARM64) 操作系統:銀河麒麟V10高級伺服器系統 銀河麒麟V10系統(以下簡稱麒麟)使用的是redhat類似的dnf包管理方式,但是無法安裝epel,因此很多軟體無法直接包安 ...
  • 龍珠超宇宙 Mac中文移植版,是根據鳥山明動漫《七龍珠》改編,由DIMps開發,並由萬代南夢宮發行的一款格鬥類角色扮演游戲,龍珠超宇宙Mac版游戲畫面精緻,是完全按照原版動畫人物的形象和劇情,動作所設計的,除了有孫悟空、貝吉塔等原作中我們所熟悉的角色外,系統還支持玩家自創角色 ,通過種族、性別、身高 ...
  • 學習大數據離不開 Linux 系統,網路上大部分文章都是在 Windows 系統下使用 VMWare Workstation 安裝 CentOS ,並使用 NAT 模式配置網路。本文基於 Mac OS,通過 VMWare Fusion 安裝 CentOS 7,網路模式使用NAT。大綱如下: 1. ... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...