Docker 常用命令以及鏡像選擇

目錄

1.Docker基本組成

2.鏡像選擇

2.1、鏡像推薦選擇方案

2.2版本選擇

3.Docker 命令

3.1鏡像管理

拉取鏡像:

列出鏡像:

刪除鏡像:

構建鏡像:

3.2容器管理

?運行容器?

列出運行中的容器和所有容器

停止容器

啟動重啟容器

刪除容器

查看容器日志

進入容器

3.3網絡管理

3.4卷管理

指定卷刪除(需要配合compose的隱式命令才能執行)

其他

3.5鏡像和容器清理

3.6其他常用命令

查看 Docker 系統信息和容器詳細信息

inspect詳細信息

顯示 Docker 版本

導出容器

導入鏡像

鏡像 save壓縮load 解壓


前言-與正文無關

生活遠不止眼前的苦勞與奔波,它還充滿了無數值得我們去體驗和珍惜的美好事物。在這個快節奏的世界中,我們往往容易陷入工作的漩渦,忘記了停下腳步,感受周圍的世界。讓我們一起提醒自己,要適時放慢腳步,欣賞生活中的每一道風景,享受與家人朋友的溫馨時光,發現那些平凡日子里隱藏的幸福時刻。因為,這些點點滴滴匯聚起來的,才是構成我們豐富多彩生活的本質。希望每個人都能在繁忙的生活中找到自己的快樂之源,不僅僅為了生存而工作,更為了更好的生活而生活.

送你張美圖!希望你開心!

1.Docker基本組成

docker主機(Host):安裝了Docker程序的機器(Docker直接安裝在操作系統之上);

docker倉庫(Registry):用來保存各種打包好的軟件鏡像;倉庫分為公有倉庫和私有倉庫。(很類似 maven)

docker鏡像(Images):軟件打包好的鏡像;放在docker倉庫中;

docker容器(Container):鏡像啟動后的實例稱為一個容器;容器是獨立運行的一個或一組應用

2.鏡像選擇

比如我想下個mysql,但是docker hub倉庫中有太多鏡像了,我如何選擇我想要的那個鏡像呢

2.1、鏡像推薦選擇方案

搜索官方鏡像:在 Docker Hub 上搜索 mysql。官方鏡像通常會帶有“官方”標簽。

?找下面兩種標識的也是可以的,一個是發行商是經過驗證的,一個是oss驗證

  • 下載次數和評分:查看鏡像的下載次數和評分,選擇下載量多、評分高的鏡像。
  • 維護情況:閱讀鏡像頁面的詳細信息和使用說明。官方鏡像頁面通常會提供如何配置、啟動和管理容器的詳細信息。檢查鏡像的維護情況,查看最近的更新記錄和問題反饋。選擇維護頻繁、問題反饋及時的鏡像。

2.2版本選擇

  • 避免使用 latest:在生產環境中,最好避免使用 latest 標簽,因為它的內容可能會隨時間變化,導致不可預見的問題。
  • 使用具體版本號或 LTS 標簽LTS 代表長期支持(Long-Term Support)。它指的是那些被維護時間更長,通常更加穩定和可靠的版本。指定特定版本號或使用 lts 標簽可以確保每次部署的鏡像是一致的,減少由于鏡像版本變動帶來的風險。

3.Docker 命令

????????

3.1鏡像管理

  • 拉取鏡像:

????????拉取遠程倉庫中的鏡像到本地。

docker pull <image_name>
  • 列出鏡像:

????????列出本地所有鏡像。

docker images

REPOSITORY 名稱,一般和TAG組合使用形成唯一

TAG 版本號

IMAGE ID 鏡像唯一id

CREATED是鏡像作者發布到docker外網的時間,不是拉取到本地的時間

SIZE 鏡像大小

  • 刪除鏡像:

????????刪除本地的某個鏡像。

docker rmi <image_name>

例如:docker rmi? tomcat:9.0.20-jre8-alpine

除了按照名稱也可以按照image ID進行刪除,建議還是上面的名稱刪除,因為tagID在終端長度未完全顯示,ID值會出現重復

  • 構建鏡像:

使用當前目錄的 Dockerfile 構建鏡像。

docker build -t <image_name> .

3.2容器管理

  • ?運行容器?

?????????使用指定鏡像啟動容器,-d 表示后臺運行,-p 用于端口映射。 --name設置容器名或鏡像名

docker run -d -p 80:80 --name <container_name> <image_name> ....

常用參數 :

-d, --detach=false: 后臺運行容器,并返回容器ID ,加d就不能使用--rm了

-i, --interactive=false: 以交互模式運行容器,通常與 -t 同時使用

-P, --publish-all=false: 隨機端口映射,容器內部端口隨機映射到主機的端口。不推薦各位小伙伴 使用該參數

-p, --publish=[]: 指定端口映射,格式為:主機(宿主)端口:容器端口,推薦各位小伙伴們使用

-t, --tty=false: 為容器重新分配一個偽輸入終端,通常與 -i 同時使用

--name="nginx-lb": 為容器指定一個名稱

-h , --hostname="laosiji": 指定容器的hostname

-e , --env=[]: 設置環境變量,容器中可以使用該環境變量

--net="bridge": 指定容器的網絡連接類型,支持 bridge/host/none/container: 四種類型

--link=[]: 添加鏈接到另一個容器;不推薦各位小伙伴使用該參數

-v, --volume : 綁定一個卷

--privileged=false: 指定容器是否為特權容器,特權容器擁有所有的capabilities

--restart=no:指定容器停止后的重啟策略

no:容器退出時不重啟

on-failure:容器故障退出(返回值非零)時重啟

always:容器退出時總是重啟,推薦各位小伙伴們使用

--rm=false: 指定容器停止后自動刪除容器,不能以docker run -d啟動的容器

  • 列出運行中的容器和所有容器

????????列出當前正在運行的容器。

docker ps

????????列出所有容器(包括已停止的)。

docker ps -a

參數詳解輸出詳情介紹:

CONTAINER ID: 容器 ID。

IMAGE: 使用的鏡像。

COMMAND: 啟動容器時運行的命令。

CREATED: 容器的創建時間。

STATUS: 容器狀態。

狀態有7種:

created(已創建)

restarting(重啟中)

running(運行中)

removing(遷移中)

paused(暫停)

exited(停止)

dead(死亡)

PORTS: 容器的端口信息和使用的連接類型(tcp\udp)。

NAMES: 自動分配的容器名稱。

  • 停止容器

大部分命令如果可以使用容器的id(container_id),其實也可以使用容器名

????????停止指定容器。

docker stop <container_id>

  • 啟動重啟容器

????????啟動已停止的容器。

docker start <container_id>

???????重啟容器

???????

??docker restart  <container_id>
  • 刪除容器
    刪除指定容器。
    
    docker rm <container_id>

    刪除容器并同時刪除數據卷:

????????如:sudo docker rm -v <container_name_or_id>

????????例如:

????????先以此命令運行一個容器 docker run -itd --name tomcat9 -p 8080:8080 tomcat:9.0.20-jre8-alpine

????????需要先停止運行中的容器再刪除,否則無法刪除容器

????????docker stop tomcat9

????????按照容器名稱刪除

????????docker rm tomcat9

????????按照容器ID刪除

????????docker rm 8dd95a95e687

rm可以關聯參數

????????-f :通過 SIGKILL 信號強制刪除一個運行中的容器。

????????-l :移除容器間的網絡連接,而非容器本身。

????????-v :刪除與容器關聯的卷。


?

  • 查看容器日志

????????查看容器輸出的日志。

docker logs <container_id>

例如:docker logs -f tomcat9

????????-f : 跟蹤日志輸出

????????--tail :僅列出最新N條容器日志

  • 進入容器

????????進入正在運行的容器,/bin/bash 是要執行的命令,通常用于進入容器的交互式終端。

docker exec -it <container_id> /bin/bash

????????/bin/bash 是有bash命令的linux系統:例如centos

????????docker exec -it tomcat9.1 /bin/bash

????????沒有bash命令的linux系統:如下命令,例如alpine系統

????????docker exec -it tomcat9.2 sh

????????????????-i :即使沒有附加也保持STDIN 打開

????????????????-t :分配一個偽終端

exit退出容器

3.3網絡管理

  • 列出網絡

    列出所有 Docker 網絡。

docker network ls
  • 創建網絡

????????創建新的 Docker 網絡。

docker network create <network_name>

  • 連接容器到網絡

????????將容器連接到指定網絡。

docker network connect <network_name> <container_name>

  • 斷開容器與網絡的連接

????????將容器從指定網絡斷開。

docker network disconnect <network_name> <container_name>

3.4卷管理

指定卷刪除(需要配合compose的隱式命令才能執行)

刪除容器并同時刪除數據卷:

sudo docker rm -v <container_name_or_id>

刪除所有未使用的數據卷

如果你想要刪除所有未使用的數據卷,可以使用以下命令:這將刪除所有未使用的(即不再關聯任何容器的)數據卷。

sudo docker volume prune

?查詢閑的數據卷

你可以通過以下命令查看所有未掛載的數據卷(這些是已經刪除容器后孤立的數據卷):

sudo docker volume ls -f dangling=true
其他
  • 列出卷

    列出所有卷。

    docker volume ls

  • 創建卷

    創建新的卷。

    docker volume create <volume_name>

  • 查看卷詳細信息

    查看卷的詳細信息。

    docker volume inspect <volume_name>

  • 刪除卷

    刪除指定卷。

    ???????docker volume rm <volume_name>

3.5鏡像和容器清理

  • 清理未使用的鏡像、容器、卷和網絡

    我們在使用 Docker 一段時間后,系統一般都會殘存一些臨時的、沒有被使用的鏡像、容器、卷和網絡,可以通過以下命令進行清理。執行完命令后,還是告訴我們釋放了多少存儲空間!???????

???????docker system prune

3.6其他常用命令

  • 查看 Docker 系統信息和容器詳細信息

    查看 Docker 的系統級別信息。

    ???????docker info
    inspect詳細信息

????????尋找容器在服務器存儲位置

????????docker ps -a找到容器id/容器名稱

????????docker inspect 容器id/容器名稱 | grep UpperDir找出該容器在物理機的位置

????????cd到UpperDir所指向的地址,找到配置文件并修改,到這后,這個位置和你用exec命令進入容器內看到文件是一致的

  • 顯示 Docker 版本

    顯示 Docker 客戶端和服務端的版本信息。

    docker version

  • 導出容器

    將容器導出為一個 tar 文件。

    docker export <container_id> -o <filename>.tar

  • 導入鏡像

    從 tar 文件中導入鏡像。

    docker import <filename>.tar

  • 鏡像 save壓縮load 解壓

    推薦-o方式,語法是save后是上圖鏡像信息的REPOSITORY冒號加TAG組合而成的,最后寫成要打包的名字

    docker save tomcat:9.0.20-jre8-alpine -o tomcat9.tar

    docker save tomcat:9.0.20-jre8-slim > tomcat9.slim.tar

    批量打包

load:解壓至本地鏡像

將上面save保存的包解壓并放到本地倉庫,通過docker images 重新獲取信息

docker load -i linux.tar

docker load < tomcat9.0.20.tar

------------------------------------------與正文內容無關------------------------------------
?如果覺的文章寫對各位讀者老爺們有幫助的話,麻煩點贊加關注唄!作者在這拜謝了!

混口飯吃了!如果你需要Java 、Python畢設、商務合作、技術交流、就業指導、技術支持度過試用期。請在關注私信我,本人看到一定馬上回復!

這是我全部文章所在目錄,看看是否有你需要的,如果遇到覺得不對地方請留言,看到后我會查閱進行改正。

A樂神-CSDN博客

關注在文章左上角,作者信息處。

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

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

相關文章

【Qt】QPushButton 與 QAction 的區別

1. QPushButton QPushButton 是一個界面控件&#xff0c;能顯示到界面上的。QPushButton 是 QWidget的一個子類&#xff0c;是一個表示按鈕的界面控件。它用于在GUI中提供一個標準的按鈕&#xff0c;用戶可以點擊它來觸發一個即時的動作或命令。按鈕可以顯示文本、圖標或兩者都…

為什么要將Modbus轉成MQTT

什么是Modbus Modbus 是一種串行通信協議&#xff0c;最初由Modicon&#xff08;現在的施耐德電氣Schneider Electric&#xff09;于1979年開發&#xff0c;用于可編程邏輯控制器&#xff08;PLC&#xff09;之間的通信。Modbus協議設計簡單&#xff0c;易于部署和維護&#xf…

從零入手人工智能(2)——搭建開發環境

1.前言 作為一名單片機工程師&#xff0c;想要轉型到人工智能開發領域的道路確實充滿了挑戰與未知。記得當我剛開始這段旅程時&#xff0c;心中充滿了迷茫和困惑。面對全新的領域&#xff0c;我既不清楚如何入手&#xff0c;也不知道能用人工智能干什么。正是這些迷茫和困惑&a…

用Python實現奇怪的瘋狂按鍵需求

項目背景 說起來好笑,假設有一個奇怪需求 — 僅僅是假設,不代表我有這個需求,雖然可以想象有人會有這個需求,但是這個人不是我,我也不認識任何這樣的人 — 瘋狂向某個程序輸出按鍵,比如,一會兒瘋狂輸入f,一會兒瘋狂輸入q。 如果是兩個按鍵需求,我想要設置一個最簡單…

M1Pro 使用跳板機

Mac (M1 Pro) 通過Iterm2 使用跳板機 1、由于堡壘機&#xff08;跳板機&#xff09;不能支持mac系統終端工具&#xff0c;只支持xshell等win生態。所以我們需要先安裝iterm2 裝iterms教程 這里頭對rz、sz的配置不詳細。我們可以這樣配置&#xff1a; where iterm2-send-zmod…

Windows 11中刪除分區的幾種方法,總有一種適合你

序言 想從Windows 11 PC中刪除一個分區,以便將空間重新分配給現有分區或創建一個新分區嗎?我們將為你介紹刪除Windows 11分區的多種方法。 刪除Windows上的分區時會發生什么 刪除分區時,Windows會擦除該分區的內容,并將該分區從電腦上的任何位置刪除。你將丟失保存在該分…

Github 2024-06-05 C開源項目日報 Top10

根據Github Trendings的統計,今日(2024-06-05統計)共有10個項目上榜。根據開發語言中項目的數量,匯總情況如下: 開發語言項目數量C項目10C++項目2Python項目1我的電視 - 安卓電視直播軟件 創建周期:40 天開發語言:CStar數量:649 個Fork數量:124 次關注人數:649 人貢獻人…

單元測試覆蓋率

什么是單元測試覆蓋率 關于其定義&#xff0c;先來看一下維基百科上的一段描述&#xff1a; 代碼覆蓋&#xff08;Code coverage&#xff09;是軟件測試中的一種度量&#xff0c;描述程序中源代碼被測試的比例和程度&#xff0c;所得比例稱為代碼覆蓋率。 簡單來理解&#xff…

C語言實現map數據結構 key—value對應

1.首先43行 createKeyValuePair(char*key ,int value)這個函數就是給一個keyValuePair *pair的指針來通過內存分配將數據key和value存入這個pair指針所對應的內存空間 2.52行freeKeyValuePair這個函數是釋放內存空間 3.頭文件 struct結構體KeyValuePair就是一個指針一個值 4…

GO語言 服務發現概述

https://zhuanlan.zhihu.com/p/32027014 明明白白的聊一下什么是服務發現-CSDN博客 一、服務發現 是什么 在傳統的系統部署中&#xff0c;服務運行在一個固定的已知的 IP 和端口上&#xff0c;如果一個服務需要調用另外一個服務&#xff0c;可以通過地址直接調用。 但是&…

軟件巨頭SAP裁員優厚條件,吸引5300名員工爭相離職

導語 大家好&#xff0c;我是社長&#xff0c;老K。專注分享智能制造和智能倉儲物流等內容。 新書《智能物流系統構成與技術實踐》 在科技行業的大潮中&#xff0c;SAP公司近日因一項頗具爭議的裁員計劃而備受矚目。但這次裁員風波并未如往常般引發員工的強烈抗議&#xff0c;反…

D365 子窗體調用父窗體方法

文章目錄 一、在子窗體中調用父窗體公共方法二、刷新 CallerForm 數據源 一、在子窗體中調用父窗體公共方法 Object callerForm element.args().caller(); if(callerForm is FormRun && formHasMethod(callerForm, identifierStr(parentMethod))) {callerForm.parent…

知網-數學學習與研究-收稿郵箱

知網-數學學習與研究-收稿郵箱 《數學學習與研究》雜志是由東北師范大學主管&#xff0c;吉林省數學會與東北師范大學出版社聯合主辦的省級優秀數學類期刊雜志。 主管單位&#xff1a;東北師范大學 主辦單位&#xff1a;吉林省數學會;東北師范大學數學與統計學院 創刊時間1983…

AI學習指南機器學習篇-決策樹基本原理

AI學習指南機器學習篇-決策樹基本原理 在機器學習領域&#xff0c;決策樹是一種常見且十分重要的算法。它不僅在分類任務中被廣泛應用&#xff0c;還可以用于回歸任務。本篇博客將詳細介紹決策樹的基本原理&#xff0c;包括節點、分裂準則、信息增益、基尼不純度等概念&#x…

msvcr120.dll丟失怎樣修復?為什么msvcr120.dll文件很重要

msvcr120.dll? 是一個屬于 Microsoft Visual C 2013 Redistributable package 的動態鏈接庫文件。這個文件對于運行使用 Visual Studio 2013 開發的應用程序是必要的&#xff0c;因為它包含了C運行時庫的一部分功能&#xff0c;這些功能是標準C庫中與輸入/輸出操作、字符串操作…

OpenCV中的圓形標靶檢測——斑點檢測算法(二)

前面的章節中我們已經大致介紹了算法流程,也對一些算法中用到的相關概念做了簡要介紹,同時給出了算法調用的API,現在我們開始算法檢測接口實現源碼的分析。 1. 斑點的分組與加權 這里我們選擇后者,先了解算法的處理流程,再分析各個模塊的實現。算法流程圖如下圖所示,上一…

android中調用onnxruntime框架

創建空白項目 安裝Android Studio及創建空白項目參考&#xff1a;【安卓Java原生開發學習記錄】一、安卓開發環境的搭建與HelloWorld&#xff08;詳細圖文解釋&#xff09;_安卓原生開發-CSDN博客 切記&#xff1a;build configuration language 一定選擇Groovy&#xff01;官…

51單片機-LCD液晶顯示

目錄 前言: 一. LCD1602模塊簡介 二. 代碼功能實現 三.總結 前言: 本文主要是51單片機的LCD液晶顯示,使用的是LCD1602.下面是詳細介紹和完整代碼,歡迎大家的點贊,評論和關注.感謝. 一. LCD1602模塊簡介 LCD1602 模塊具有以下特點&#xff1a; 顯示特點&#xff1a; 可以…

MySQL 將null轉0 ifnull() coalesce()

做統計報表的時候&#xff0c;有時候不希望查出來的值是null&#xff0c;因為在代碼中需要做大量的判空&#xff0c;最后轉換成0來處理。既然如此&#xff0c;那在sql中查出來就是0&#xff0c;就不用為空而去判空了。 1.IFNULL() ifnull()只能放2個值。 select IFNULL(null,0…

[240608] Zig 發布 v0.13.0 |AMD 新處理器不支持 Win 10 |DuckDuckgo 發布AI匿名聊天服務

目錄 Zig 發布 0.13.0 版本AMD 下一代銳龍處理器不支持 Windows 10DuckDuckgo 發布 AI 匿名聊天服務 Zig 發布 0.13.0 版本 Zig 發布 0.13.0 版本&#xff0c;此次發布的主要目的是升級 zig 工具鏈&#xff0c;發布重點如下&#xff1a; 工具鏈升級&#xff1a; LLVM&#xf…