docker學習基本使用教程

docker是一款用于開發部署和運行容器化平臺,能將應用及其依賴打包成輕量級、可移植的容器,實現一次構建,隨處運行。docker是cs架構程序(客戶端和服務端),docker客戶端向docker守護進程發送請求,docker守護進程返回請求結果 。docker守護進程管理著docker里面的容器,docker客戶端可以是本地也可以是遠程,通過docker客戶端訪問docker守護進程管理著docker容器。鏡像是 docker生命周期中的構建或打包階段,而容器則是啟動或者執行階段,容器基于鏡像啟動,一旦容器啟動完成后,我們就可以登錄到容器中安裝自己需的軟件或服務。

注冊中心

docker用Registry(注冊中心)來保存用戶構建的鏡像。Registry分為公共和私有兩種,docker公司運營公共的Registry叫做docker hub 。用戶可以在docker hub注冊賬號,分享并保存自己鏡像(說明 ?在docker hub下載鏡像 非常慢,可以自己構建 私有的registry),網址是https:hub.docker.com

docker 官方建議在ubuntu中安裝,因為docker是基于ubuntu發布的,一般docker出現的問題ubuntu 中是最新更新或打補丁的,很多版本的centos中是不支持更新最新的一些補丁 包的。如果要在centos中使用,建議在centos7.x以上的版本中使用。低于這個版本需要安裝其他很的環境并且docker很多的補丁不支持更新。

1 、docker安裝

安裝前先更新系統所有的包索引sudo apt-get update? ?和sudo apt-get update -y

1、安裝必要依賴

安裝允許apt通過 HTTPS 使用倉庫的包:

sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

2、卸載舊版本

若系統中已存在 Docker 的舊版本,需先將其卸載

sudo apt remove docker docker-engine docker.io containerd runc

測試過上面的命令刪除不全,改成如下刪除全部docker

sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-compose-plugin

?這條命令會卸載 Docker 及其相關組件,并清除配置文件等信息。卸載完成后,可通過再次執行?docker - v?確認是否卸載成功。如果還存在殘留文件,可手動檢查并刪除?/var/lib/docker/?目錄(該目錄存儲 Docker 的鏡像、容器等數據 ):

sudo rm -rf /var/lib/docker/

3、添加 Docker 官方 GPG 密鑰

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

4、添加 Docker 官方倉庫

echo "deb [arch=$(dpkg --print-architecture) 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

?5、安裝 Docker 引擎(安裝docker)

更新apt包索引,然后安裝最新版本的 Docker 引擎、containerd 和 Docker Compose:

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

?安裝操作和查看docker版本號

6、設置ustc的鏡像?

?默認從國外下載的,比較慢或下載失敗,現在設置為國內下載,設置ustc的鏡像,加快下載速度。 如果沒有目錄就創建,有就打開并創建daemon.json文件并寫入下面內容

mkdir -p /etc/docker

vi /etc/docker/daemon.json

daemon.json內容如下:

{ ? ? ? ? "registry-mirrors":["https://docker.mirrors.ustc.edu.cn"] }

7、權限問題造成無法使用docker錯誤提示及解決方法如下:

錯誤提示

Server:
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.49/info": dial unix /var/run/docker.sock: connect: permission denied

解決方法:

提示 “permission denied” 表明權限不足 。docker info?命令用于獲取 Docker 系統信息,執行時需與 Docker 守護進程通信,而?/var/run/docker.sock?是通信的套接字文件。當前用戶沒有該文件的訪問權限,所以報錯。解決方法如下:

  • 添加用戶到 docker 組:執行sudo usermod -aG docker $USER?,將當前用戶添加到docker組。添加后需重新登錄或執行newgrp docker?使權限生效。
  • 修改文件權限(不推薦):使用sudo chmod 666 /var/run/docker.sock?賦予所有用戶讀寫權限,但會降低安全性,僅適用于測試環境。

具體如下:?

以非 root 用戶運行 Docker(可選但推薦)

默認情況下,運行 Docker 命令需要sudo權限。你可以創建一個名為docker的用戶組,并將當前用戶添加到該組中,從而避免每次都輸入sudo

sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker  # 刷新當前會話的用戶組

添加用戶到docker組后,注銷并重新登錄,或者重啟系統,之后就可以直接運行 Docker 命令了。?

?8、無法啟動docker

?正如提示信息所說,執行?journalctl -xe?命令,系統會展示與 Docker 服務啟動失敗相關的詳細日志內容。通過日志能明確具體是哪個依賴任務出問題,比如是某個服務未正常啟動、文件加載失敗還是權限問題等 ,進而針對性解決。

執行?journalctl -xe?命令,查看到失敗相關詳細 日志內容

ubuntu@VM-24-17-ubuntu:/etc/docker$ journalctl -xe
May 28 11:51:32 VM-24-17-ubuntu usermod[2061214]: add 'ubuntu' to group 'docker'
May 28 11:51:32 VM-24-17-ubuntu usermod[2061214]: add 'ubuntu' to shadow group 'docker'
May 28 11:51:32 VM-24-17-ubuntu sudo[2061212]: pam_unix(sudo:session): session closed for user root
May 28 11:51:41 VM-24-17-ubuntu newgrp[2061266]: user 'ubuntu' (login 'ubuntu' on pts/1) switched to group 'docker'
May 28 11:51:51 VM-24-17-ubuntu kernel: [UFW BLOCK] IN=eth0 OUT= MAC=52:54:00:6f:a7:68:fe:ee:0e:00:4d:44:08:00 SRC=123.160.221.175 DST=10.1.24>
May 28 11:52:01 VM-24-17-ubuntu CRON[2061397]: pam_unix(cron:session): session opened for user root(uid=0) by (uid=0)
May 28 11:52:01 VM-24-17-ubuntu CRON[2061398]: (root) CMD (flock -xn /tmp/stargate.lock -c '/usr/local/qcloud/stargate/admin/start.sh > /dev/n>
May 28 11:52:01 VM-24-17-ubuntu CRON[2061397]: pam_unix(cron:session): session closed for user root
May 28 11:52:12 VM-24-17-ubuntu kernel: [UFW BLOCK] IN=eth0 OUT= MAC=52:54:00:6f:a7:68:fe:ee:0e:00:4d:44:08:00 SRC=106.75.155.108 DST=10.1.24.>
May 28 11:52:20 VM-24-17-ubuntu sudo[2061503]:   ubuntu : TTY=pts/1 ; PWD=/etc/docker ; USER=root ; COMMAND=/usr/bin/systemctl start docker
May 28 11:52:20 VM-24-17-ubuntu sudo[2061503]: pam_unix(sudo:session): session opened for user root(uid=0) by ubuntu(uid=1000)
May 28 11:52:20 VM-24-17-ubuntu systemd[1]: docker.socket: Socket service docker.service already active, refusing.
May 28 11:52:20 VM-24-17-ubuntu systemd[1]: Failed to listen on Docker Socket for the API.
?? Subject: A start job for unit docker.socket has failed
?? Defined-By: systemd
?? Support: http://www.ubuntu.com/support
?? 
?? A start job for unit docker.socket has finished with a failure.
?? 
?? The job identifier is 86592 and the job result is failed.
May 28 11:52:20 VM-24-17-ubuntu systemd[1]: Dependency failed for Docker Application Container Engine.
?? Subject: A start job for unit docker.service has failed
?? Defined-By: systemd
?? Support: http://www.ubuntu.com/support
?? 
?? A start job for unit docker.service has finished with a failure.
?? 
?? The job identifier is 86516 and the job result is dependency.
May 28 11:52:20 VM-24-17-ubuntu systemd[1]: docker.service: Job docker.service/start failed with result 'dependency'.
May 28 11:52:20 VM-24-17-ubuntu sudo[2061503]: pam_unix(sudo:session): session closed for user root
May 28 11:52:29 VM-24-17-ubuntu kernel: [UFW BLOCK] IN=eth0 OUT= MAC=52:54:00:6f:a7:68:fe:ee:0e:00:4d:44:08:00 SRC=185.156.73.159 DST=10.1.24.>
May 28 11:52:49 VM-24-17-ubuntu kernel: [UFW BLOCK] IN=eth0 OUT= MAC=52:54:00:6f:a7:68:fe:ee:0e:00:4d:44:08:00 SRC=117.219.97.227 DST=10.1.24.>
May 28 11:53:01 VM-24-17-ubuntu CRON[2061700]: pam_unix(cron:session): session opened for user root(uid=0) by (uid=0)
May 28 11:53:01 VM-24-17-ubuntu CRON[2061701]: (root) CMD (flock -xn /tmp/stargate.lock -c '/usr/local/qcloud/stargate/admin/start.sh > /dev/n>
May 28 11:53:01 VM-24-17-ubuntu CRON[2061700]: pam_unix(cron:session): session closed for user root
May 28 11:53:13 VM-24-17-ubuntu kernel: [UFW BLOCK] IN=eth0 OUT= MAC=52:54:00:6f:a7:68:fe:ee:0e:00:4d:44:08:00 SRC=83.222.191.46 DST=10.1.24.1>
May 28 11:53:28 VM-24-17-ubuntu kernel: [UFW BLOCK] IN=eth0 OUT= MAC=52:54:00:6f:a7:68:fe:ee:0e:00:4d:44:08:00 SRC=111.7.96.132 DST=10.1.24.17>
May 28 11:53:52 VM-24-17-ubuntu kernel: [UFW BLOCK] IN=eth0 OUT= MAC=52:54:00:6f:a7:68:fe:ee:0e:00:4d:44:08:00 SRC=92.63.197.177 DST=10.1.24.1>
May 28 11:54:01 VM-24-17-ubuntu CRON[2062000]: pam_unix(cron:session): session opened for user root(uid=0) by (uid=0)
May 28 11:54:01 VM-24-17-ubuntu CRON[2062001]: (root) CMD (flock -xn /tmp/stargate.lock -c '/usr/local/qcloud/stargate/admin/start.sh > /dev/n>
May 28 11:54:01 VM-24-17-ubuntu CRON[2062000]: pam_unix(cron:session): session closed for user root
May 28 11:54:09 VM-24-17-ubuntu ke

如上截圖信息錯誤的,解決方法就是刪除完 docker,重新安裝docker就完美解決了?

9、啟動 Docker 服務

sudo systemctl start docker

?設置 Docker 開機自啟:

sudo systemctl enable docker

?停止 Docker 服務

sudo systemctl stop docker

?重啟 Docker 服務

sudo systemctl restart docker

查看docker運行狀態?

sudo systemctl status docker

  • 狀態標識:輸出中明確顯示?Active: active (running)?,這表明 Docker 服務處于活躍且正在運行的狀態 。
  • 運行時間:有?since wed 2025-05-28 12:43:49 CST?,說明從該時間點起 Docker 服務就已處于運行狀態 。
  • 主進程信息Main PID: 2129132 (dockerd)?表示 Docker 守護進程(dockerd?)已正常啟動并獲取到了主進程 ID 。

檢查看開機自啟是否設置成功

systemctl list - enabled - units | grep docker?

如果出現 “Unknown command verb” 報錯,大概率是你系統上的?systemctl?版本較舊,不支持這些命令用法。你可以嘗試下面替代方法來判斷 Docker 開機自啟狀態:

可使用這個查看systemctl list--enabled--units | grep docker?

你執行的命令報錯 “Unknown command verb list--enabled--units” ,說明命令未被正確識別,無法據此判斷 Docker 開機自啟是否設置成功 。可能是系統的?systemctl?版本較老,不支持這種格式。建議按前面提到的替代方法,如查看?/lib/systemd/system/docker.service?文件中?Install?段配置 ,或檢查?/etc/systemd/system/?下是否有指向?docker.service?的軟鏈接來確定。?

打開 vi?/lib/systemd/system/docker.service 看到如下截圖所示,是添加成功的

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

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

相關文章

萬字詳解RTR RTSP SDP RTCP

目錄 1 RTSP1.1 RTSP基本簡介1.2 RSTP架構1.3 重點內容分析 2 RTR2.1 RTR簡介2.2 RTP 封裝 H.2642.3 RTP 解封裝 H.2642.4 RTP封裝 AAC2.5 RTP解封裝AAC 3 SDP3.1 基礎概念3.2 SDP協議示例解析3.3 重點知識 4 RTCP4.1 RTCP基礎概念4.2 重點 5 總結 1 RTSP 1.1 RTSP基本簡介 一…

唯一原生適配鴻蒙電腦的遠程控制應用,向日葵正式上線

近日,華為正式發布鴻蒙電腦新品,標志著HarmonyOS在PC端生態的進一步拓展。作為遠程控制領域的先行者,貝銳科技旗下的向日葵遠程控制軟件也在第一時間完成了對鴻蒙電腦系統的原生適配,并已正式上線華為鴻蒙電腦應用市場&#xff0c…

vue2中,codemirror編輯器的使用

交互說明 在編輯器中輸入{時&#xff0c;會自動彈出選項彈窗&#xff0c;然后可以選值插入。 代碼 父組件 <variable-editorv-model"content":variables"variables"placeholder"請輸入模板內容..."blur"handleBlur" />data…

Kafka自定義分區策略實戰避坑指南

文章目錄 概要代碼示例小結 概要 kafka生產者發送消息默認根據總分區數和設置的key計算哈希取余數&#xff0c;key不變就默認存放在一個分區&#xff0c;沒有key則隨機數分區&#xff0c;明顯默認的是最不好用的&#xff0c;那kafka也提供了一個輪詢分區策略&#xff0c;我自己…

WPF 全屏顯示實現(無標題欄按鈕 + 自定義退出按鈕)

WPF 全屏顯示實現&#xff08;無標題欄按鈕 自定義退出按鈕&#xff09; 完整實現代碼 MainWindow.xaml <Window x:Class"FullScreenApp.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://schemas…

sqli_labs第二十九/三十/三十一關——hpp注入

一&#xff1a;HTTP參數污染&#xff1a; hpp&#xff08;http parameter pollution)注入中&#xff0c;可以通過在hppt的請求中注入多個同名參數來繞過安全過濾 原理&#xff1a;php默認只取最后一個同名參數 比如在這一關里&#xff0c;可能對第一個id參數進行消毒處理&a…

【STM32】按鍵控制LED 光敏傳感器控制蜂鳴器

&#x1f50e;【博主簡介】&#x1f50e; &#x1f3c5;CSDN博客專家 &#x1f3c5;2021年博客之星物聯網與嵌入式開發TOP5 &#x1f3c5;2022年博客之星物聯網與嵌入式開發TOP4 &#x1f3c5;2021年2022年C站百大博主 &#x1f3c5;華為云開發…

華為OD機試真題——斗地主之順子(2025B卷:100分)Java/python/JavaScript/C/C++/GO最佳實現

2025 B卷 100分 題型 本專欄內全部題目均提供Java、python、JavaScript、C、C++、GO六種語言的最佳實現方式; 并且每種語言均涵蓋詳細的問題分析、解題思路、代碼實現、代碼詳解、3個測試用例以及綜合分析; 本文收錄于專欄:《2025華為OD真題目錄+全流程解析+備考攻略+經驗分…

Qt找不到windows API報錯:error: LNK2019: 無法解析的外部符號 __imp_OpenClipboard

筆者在開發中出現的bug完整報錯如下&#xff1a; spcm_ostools_win.obj:-1: error: LNK2019: 無法解析的外部符號 __imp_OpenClipboard&#xff0c;函數 "void __cdecl spcmdrv::vCopyToClipboard(char const *,unsigned __int64)" (?vCopyToClipboardspcmdrvYAXPE…

4.8.4 利用Spark SQL實現分組排行榜

在本次實戰中&#xff0c;我們的目標是利用Spark SQL實現分組排行榜&#xff0c;特別是計算每個學生分數最高的前3個成績。任務的原始數據由一組學生成績組成&#xff0c;每個學生可能有多個成績記錄。我們首先將這些數據讀入Spark DataFrame&#xff0c;然后按學生姓名分組&am…

[PyMySQL]

掌握pymysql對數據庫實現增刪改查數據庫工具類封裝,數據庫操作應用場景數據庫操作應用場景 校驗測試數據 : 刪除員工 :構造測試數據 : 測試數據使用一次就失效,不能重復使用 : 添加員工(is_delete)測試數據在展開測試前無法確定是否存在 : 查詢,修改,刪除員工操作步驟:!~~~~~~~…

cs224w課程學習筆記-第12課

cs224w課程學習筆記-第12課 知識圖譜問答 前言一、問答類型分類二、路徑查詢(Path queries)2.1 直觀查詢方法2.2 TransE 擴展2.3 TransE 能力分析 三、連詞查詢(conjunctive queries)3.1 Query2box 原理1)、投影2)、交集查詢&#xff08;AND 操作)3)、聯合查詢&#xff08;OR 操…

AI任務相關解決方案2-基于WOA-CNN-BIGRU-Transformer模型解決光纖通信中的非線性問題

文章目錄 1. 項目背景與研究意義1.1 光纖通信中的非線性問題1.2 神經網絡在光纖非線性補償中的應用現狀 2. 現有模型 CNN-BIGRU-attention 分析2.1 模型架構與工作原理2.2 模型性能評估與局限性 3. 新模型優化方案3.1 WOA算法原理與優勢3.2 WOA-CNN-BIGRU-MHA模型構建3.3 WOA-C…

HTTP Accept簡介

一、HTTP Accept是什么 HTTP協議是一個客戶端和服務器之間進行通信的標準協議&#xff0c;它定義了發送請求和響應的格式。而HTTP Accept是HTTP協議中的一個HTTP頭部&#xff0c;用于告訴服務器請求方所期望的響應格式。這些格式可以是媒體類型、字符集、語言等信息。 HTTP A…

39-居住證管理系統(小程序)

技術棧: springBootVueMysqlUni-app 功能點: 群眾端 警方端 管理員端 群眾端: 1.首頁: 輪播圖展示、公告信息列表 2.公告欄: 公告查看及評論 3.我的: 聯系我們: 可在線咨詢管理員問題 實時回復 居住證登記申請 回執單查看 領證信息查看 4.個人中心: 個人信息查看及修改…

鴻蒙OSUniApp 開發的滑動圖片墻組件#三方框架 #Uniapp

UniApp 開發的滑動圖片墻組件 前言 在移動應用中&#xff0c;圖片墻是一種極具視覺沖擊力的內容展示方式&#xff0c;廣泛應用于相冊、商品展示、社交分享等場景。一個優秀的滑動圖片墻組件不僅要支持流暢的滑動瀏覽&#xff0c;還要兼容不同設備的分辨率和性能&#xff0c;尤…

碰一碰系統源碼搭建==saas系統

搭建“碰一碰”系統&#xff08;通常指基于NFC或藍牙的短距離交互功能&#xff09;的源碼實現&#xff0c;需結合具體技術棧和功能需求。以下是關鍵步驟和示例代碼&#xff1a; 技術選型 NFC模式&#xff1a;適用于Android/iOS設備的近場通信&#xff0c;需處理NDEF協議。藍牙…

自動駕駛決策規劃框架詳解:從理論到實踐

歡迎來到《自動駕駛決策規劃框架詳解:從理論到實踐》的第二章。在本章中,我們將深入探討自動駕駛系統中至關重要的“大腦”——決策規劃模塊。我們將從基本概念入手,逐步解析主流的決策規劃框架,包括經典的路徑速度解耦方法、工業界廣泛應用的Apollo Planning框架、應對復雜…

服務器定時任務查看和編輯

在 Ubuntu 系統中&#xff0c;查看當前系統中已開啟的定時任務主要有以下幾種方式&#xff0c;分別針對不同類型的定時任務管理方式&#xff08;如 crontab、systemd timer 等&#xff09;&#xff1a; 查看服務器定時任務 一、查看用戶級別的 Crontab 任務 每個用戶都可以配…

小白的進階之路系列之四----人工智能從初步到精通pytorch自定義數據集下

本篇涵蓋的內容 在之前的文章中,我們已經討論了如何獲取數據,轉換數據以及如何準備自定義數據集,本篇文章將涵蓋更加深入的問題,希望通過詳細的代碼示例,幫助大家了解PyTorch自定義數據集是如何應對各種復雜實際情況中,數據處理的。 更加詳細的,我們將討論下面一些內容…