Docker的常用命令及簡單使用

1、docker的常用命令

1.1、幫助命令

docker version              # 顯示docker的版本信息
docker info                 # 顯示docker的系統信息,包括鏡像和容器的數量
docker 指令 --help         # 查看某個指令的幫助命令

可以通過docker --help查看docker常用命令,也可以在官網查看。

docker命令官網查詢地址:Reference | Docker Docs

1.2、鏡像命令

docker images            # 查看本機的鏡像信息
docker search 鏡像名      # 搜索鏡像
docker pull 鏡像名[:tag]    # 下載鏡像,可以指定鏡像的版本tag,默認是最新版本
docker rmi -f 鏡像名或鏡像id      # 刪除鏡像
docker rmi -f 鏡像id1 鏡像id2 鏡像id3      # 刪除多個鏡像
docker rmi -f $(docker images -aq)    # 刪除所有的鏡像

1.docker images??????? # 查看本機的鏡像信息

字段解釋:

REPOSITORY:鏡像的倉庫源

TAG:鏡像的標簽

IMAGE ID:鏡像的id

CREATED:鏡像的創建時間

SIZE:鏡像的大小

2.docker search 鏡像名????? # 搜索鏡像

也可以通過DockerHub官網搜索:https://hub.docker.com/search?q=

3.docker pull 鏡像名[:tag]????? # 下載鏡像,可以指定鏡像的版本tag,默認是最新版本

從DockerHub上看一下mysql的版本,下載指定的版本:

4. 刪除鏡像

docker rmi -f 鏡像名或鏡像id      # 刪除鏡像
docker rmi -f 鏡像id1 鏡像id2 鏡像id3      # 刪除多個鏡像
docker rmi -f $(docker images -aq)    # 刪除所有的鏡像

1.3、容器命令

docker run [可選參數] 鏡像名      # 運行鏡像,創建容器
docker ps [可選參數]      # 查看正在運行的容器
exit    # 容器停止并退出
Ctrl + P + Q    # 退出容器,但容器并未停止
docker rm 容器id    # 刪除指定的容器,不能刪除正在運行的容器,可使用-f強制刪除
docker rm [-f] $(docker ps -aq)    # 刪除所有的容器,-f 表示強制刪除,包括運行的容器
docker ps -aq | xargs docker rm   # 刪除所有的容器
docker start 容器id    # 啟動容器
docker restart 容器id    # 重啟容器
docker stop 容器id    # 停止當前正在運行的容器
docker kill 容器id    # 強制殺死當前容器

1.docker run [可選參數] 鏡像名????? # 運行鏡像,創建容器

可選參數說明:

--name??? # 給容器起個名字,用于區分容器

-d???????? # 以后臺方式運行

-it???????? # 以交互方式運行,進入容器查看內容

-p?? #指定容器端口,如-p 8080,常用的是將主機端口與容器端口進行映射,即-p 主機端口:容器端口,如-p 8090:8090。還有一種方式指定主機ip,-p 主機ip:主機端口:容器端口。

-P?? # 隨機指定端口

只有有了鏡像,才可以創建容器,運行鏡像,就是創建了一個容器。

先下載一個centos鏡像:

再運行鏡像,創建容器:

2.docker ps [可選參數]????? # 查看正在運行的容器

可選參數說明:

-a???? # 查看所有容器,包括曾經運行的容器

-n=??? # 查看最近創建的容器,例如查看最近創建的兩個容器:-n=2

-q???? # 只顯示容器的編號CONTAINER ID

3.退出容器

exit??? # 容器停止并退出

Ctrl + P + Q??? # 退出容器,但容器并未停止

4.刪除容器

docker rm 容器id??? # 刪除指定的容器,不能刪除正在運行的容器,可使用-f強制刪除

docker rm [-f] $(docker ps -aq)??? # 刪除所有的容器,-f 表示強制刪除,包括運行的容器

docker ps -aq | xargs docker rm?? # 刪除所有的容器

5.啟動和停止容器

docker start 容器id??? # 啟動容器

docker restart 容器id??? # 重啟容器

docker stop 容器id??? # 停止當前正在運行的容器

docker kill 容器id??? # 強制殺死當前容器

1.4、其他常用命令

docker run -d 鏡像名  #容器啟動后,docker發現該容器沒有提供服務,就會自動停止容器
docker logs -tf --tail 10 容器id    # 查看指定容器的日志信息
docker top 容器id      # 查看容器中進程信息
docker inspect 容器id   # 查看容器的元數據
docker exec -it 容器id /bin/bash    # 進入當前正在運行的容器,開啟一個新的終端
docker attach 容器id    # 進入容器,并使用正在運行的終端,不會開啟新的終端
docker cp 容器id:容器內路徑 主機路徑
docker stats 容器id    # 查看容器占用CPU和內存信息

1.后臺啟動容器

docker run -d 鏡像名? #容器啟動后,docker發現該容器沒有提供服務,就會自動停止容器

2.查看容器日志

docker logs -tf --tail 10 容器id??? # 查看指定容器的日志信息

參數說明:--tail 10 表示查看10條日志,不加tail表示查看所有日志。

3.查看容器中進程信息

docker top 容器id????? # 查看容器中進程信息

docker inspect 容器id?? # 查看容器的元數據

4.進入當前正在運行的容器

通常容器都是以后臺方式運行的,如果需要進入容器,修改一些配置,則可以使用docker exec命令。

docker exec -it 容器id /bin/bash??? # 進入當前正在運行的容器,開啟一個新的終端

docker attach 容器id??? # 進入容器,并使用正在運行的終端,不會開啟新的終端

5、將容器內的文件復制到主機上

docker cp 容器id:容器內路徑 主機路徑

6、docker stats 容器id??? # 查看容器占用CPU和內存信息

1.5、命令小結

練習:使用docker安裝nginx、tomcat

練習1:使用docker安裝nginx

1、搜索nginx鏡像,docker search nginx,建議到DockerHub官網上搜索,可以看到版本

2、下載nginx鏡像,docker pull nginx[:tag]

3、運行nginx鏡像,啟動容器,docker run -d --name nginx01 -p 8090:80 nginx

啟動命令參數說明:-d 以后臺方式運行,--name 給容器命名,-p 8090:80將主機端口8090與容器端口80進行映射。

端口映射:

在瀏覽器上輸入虛擬機ip:主機映射端口號,并且防火墻開通主機映射端口號。

練習2:使用docker部署tomcat

docker run -it --rm tomcat:9.0

--rm 表示容器用完退出之后就刪除,一般用來測試,不建議這樣使用。

練習3:使用docker安裝elasticsearch

docker run -d --name elasticsearch01 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.7.0

由于elasticsearch運行非常耗內存,所以通過-e ES_JAVA_OPTS參數限制其占用內存大小。

啟動elasticsearch容器之后,通過curl localhost:9200進行測試是否啟動成功。

ElasticSearch啟動時,會占用兩個端口9200和9300。

9200 是ES節點與外部通訊使用的端口。它是http協議的RESTful接口,各種CRUD操作都是走的該端口。

9300是ES節點之間通訊使用的端口。它是tcp通訊端口,集群間和TCPclient都用此接口。

練習4:使用docker安裝portainer可視化界面

docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

2、docker鏡像講解

鏡像是什么?

鏡像是一種輕量級、可執行的獨立軟件包,用來打包軟件運行環境和基于運行環境開發的軟件,它包含運行某個軟件所需的所有內容,包括代碼、運行時庫、環境變量和配置文件。

所有的應用,直接打包docker鏡像,就可以直接跑起來!

得到鏡像的方式:

·從遠程倉庫下載

·朋友拷貝給你

·自己制作一個鏡像 DockerFile

2.1、docker鏡像加載原理

1. UnionFS(聯合文件系統)

UnionFS(聯合文件系統):Union文件系統(UnionFS)是一種分層、輕量級并且高性能的文件系統,它支持對文件系統的修改作為一次提交來一層層的疊加,同時可以將不同目錄掛載到同一個虛擬文件系統下(unite several directories into a single virtual filesystem)。Union文件系統是Docker鏡像的基礎。鏡像可以通過分層來進行繼承,基于基礎鏡像(沒有父鏡像),可以制作各種具體的應用鏡像。

特性:一次同時加載多個文件系統,但從外面看起來,只能看到一個文件系統,聯合加載會把各層文件系統疊加起來,這樣最終的文件系統會包含所有底層的文件和目錄。

2. Docker鏡像加載原理

docker鏡像實際由一層一層的文件系統(UnionFS)組成,基礎的鏡像都會包含bootfs和rootfs。

bootfs(boot file system)主要包含bootloader和kernel, bootloader主要是引導加載kernel, Linux則啟動時會加載bootfs文件系統,在Docker鏡像的最底層是bootfs。這一層與我們典型的Linux/Unix系統是一樣的,包含boot加載器和內核。當boot加載完成之后整個內核就都在內存中了,此時內存的使用權已由bootfs轉交給內核,此時系統也會卸載bootfs。

rootfs(root file system)在bootfs之上,包含的就是典型Linux系統中的/dev、/proc、/bin、/etc等標準目錄和文件。rootfs就是各種不同的操作系統發行版,比如Ubuntu、Centos等。

[root@localhost ~]# docker images centos
REPOSITORY  TAG   IMAGE ID     CREATED     SIZE
centos         latest   470671670cac  3 months ago   237MB

平時安裝虛擬機的centos都是好幾個GB,為什么使用Docker拉取的鏡像才200MB?

這是因為對于一個精簡的OS,rootfs可以很小,只需要包含最基本的命令、工具和程序就可以了,因為底層直接用Host的kernel,自己只需要提供rootfs就可以了。由此可見對于不同的linux發行版,bootfs基本是一致的,rootfs會有差別,因此不同的發行版可以公用bootfs。

所有的Docker鏡像都起始于一個基礎鏡像層,當進行修改或增加新的內容時,就會在當前鏡像層之上,創建新的鏡像層。

舉一個簡單的例子,假如基于Ubuntu Linux 16.04創建一個新的鏡像,這就是新鏡像的第一層;如果在該鏡像中添加Python包,就會在基礎鏡像層之上創建第二個鏡像層;如果繼續添加一個安全補丁,就會創建第三個鏡像層。該鏡像當前已經包含3個鏡像層,如下圖所示(這只是一個用于演示的簡單例子)。

在添加額外的鏡像層的同時,鏡像始終保持是當前所有鏡像層的組合,理解這一點非常重要。下圖中舉了一個簡單的例子,每個鏡像層包含3個文件,而鏡像包含了來自兩個鏡像層的6個文件。

Docker鏡像的特點:

Docker鏡像都是只讀的,當容器啟動時,一個新的可寫層被加載到鏡像的頂部!這一層就是通常說的容器層,容器之下的都叫鏡像層!

2.2、提交鏡像

提交容器成為一個新的鏡像:

docker commit -m= "描述信息" -a= "作者" 容器id 目標鏡像名:[tag]

下面首先通過默認的tomcat鏡像啟動一個容器,接著修改容器中的webapps,然后將修改后的容器提交成為一個新的tomcat鏡像。

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

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

相關文章

HGDB全文檢索/中文分詞的使用

文章目錄文檔用途詳細信息文檔用途 本文用于HGDB全文檢索/中文分詞的介紹,其介紹內容在附件,使用案例見正文 詳細信息 一、創建擴展 highgo# create extension zhparser;CREATE EXTENSION highgo# \dFp List of text search parsers Schema…

baijian xiaomaodawang

我將為你創建一個基于Go 1.20.8和Gin框架的博客系統項目。以下是完整的實現方案: 項目創建流程 打開Goland,創建新項目選擇Go項目,設置GOROOT為Go 1.20.8項目名稱:blog-system啟用Go Modules 項目結構 blog-system/ ├── cmd/ │…

Node.js的特性

Node.js的特性 Node.js具有幾個顯著特性: 事件驅動:Node.js采用事件驅動機制來處理請求和響應,這種機制可以幫助開發者處理大量并發請求,提高系統的性能和可靠性。 非阻塞I/O:Node.js使用異步I/O原語來實現非阻塞I/O操…

交叉編譯linux-arm32位程序

目標平臺rv1126 芯片 arm32位架構 在ubuntu22.04上交叉編譯: 編譯器下載地址: Linaro Releases 或者: wget http://releases.linaro.org/components/toolchain/binaries/6.4-2017.11/arm-linux-gnueabihf/gcc-linaro-6.4.1-2017.11-x86_6…

S 3.1深度學習--卷積神經網絡

卷積層 圖像原理 卷積神經網絡(Convolutional Neural Network, CNN) 圖像在計算機中是一堆按順序排列的數字,數值為 0 到 255。0 表示最暗,255 表示最亮。 圖像識別 上圖是只有黑白顏色的灰度圖,而更普遍的圖片表達…

【7】SQL 語句基礎應用

SQL 語句基礎應用where (篩選)where 子句可使用到運算符查詢表中所有的數據查詢表中的數據,必須滿足 11(相當于恒成立)查詢表中的 分數(score) 大于 80 分的學生查詢表中 名稱(name) 是 趙六 的數據查詢表中 名稱(name) 不等于 哈哈 的數據.查…

android 嵌套webview 全屏展示 頁面延伸到狀態欄且不被底部導航欄遮擋

我的項目是使用webview嵌套了一個uniapp打包出的h5 本來展示很正常,某天突然發現uniapp的底部導航被手機底部的導航欄擋住了,離奇,某天突然出現的 有些手機會設置展示底部導航按鈕,有些手機會關閉底部導航 以下代碼對這兩種情況通…

【大前端】React Native 調用 Android、iOS 原生能力封裝

📖 React Native 調用 Android、iOS 原生能力封裝 1. 原理 React Native 的 核心思想:JS 層(React 代碼)不能直接調用 Android/iOS 的 API。RN 提供了 Native Module 機制: Android:Java/Kotlin → 繼承 Re…

HOOK安卓木馬重大升級,勒索功能擴展至107項

勒索覆蓋屏成新特征網絡安全研究人員發現名為HOOK的安卓銀行木馬新變種,該惡意軟件新增勒索軟件式覆蓋屏功能用于顯示勒索信息。Zimperium zLabs研究員Vishnu Pratapagiri表示:"最新變種的顯著特征是能夠部署全屏勒索覆蓋界面,旨在脅迫受…

GeoScene Maps 完整入門指南:從安裝到實戰

什么是GeoScene MapsGeoScene Maps是一套功能強大的Web地圖開發平臺,它基于現代Web技術構建,為開發者提供了豐富的地圖服務和開發工具。與其他地圖API相比,GeoScene Maps具有以下特點:核心優勢全面的地圖服務:支持2D/3…

本地大模型部署:Ollama 部署與 Python 接口調用全攻略

本地大語言模型實踐:Ollama 部署與 Python 接口調用全攻略 一、引言 過去我們使用大語言模型(LLM),更多依賴于 OpenAI API、Claude API 等云端服務。它們雖然強大,但存在兩大問題: 隱私與數據安全&#xff…

OpenFeign:讓微服務間調用像本地方法一樣簡單

引言:微服務通信的演進之路什么是OpenFeign?核心特性概覽快速開始:搭建OpenFeign環境環境準備與依賴配置啟用OpenFeign功能基礎用法:從簡單示例開始定義第一個Feign客戶端在服務中調用Feign客戶端進階配置:深度定制Ope…

openharmony之一多開發:產品形態配置講解

OpenHarmony 的“一多開發”指的是 一次開發,多端部署(簡稱“一多”),即使用 一套代碼工程,一次開發上架,按需部署到不同終端設備上 🎯 核心概念速覽 產品形態定義 寫在前面:1.不同的…

被迫在linux上用R(真的很難用啊)之如何在linux上正常使用R

總有一些情況,讓你不得不在linux上使用R。。。 在我不斷試錯,不斷嘗試過程中(恩,新手瘋狂踩坑) 發現最簡單的辦法是: 1 mamba創建一個新環境,在新環境中使用R 2 轉變思維,都在linux上…

【STM32】G030單片機的獨立看門狗

目錄 一、簡單介紹 二、特性 三、窗口選項 四、cubeMX配置 不使用窗口功能 使用窗口功能 五、工程鏈接 一、簡單介紹 獨立看門狗,顧名思義,是不依靠系統而獨立存在的看門狗 可以脫離應用運行,但缺陷在于時序精度比窗口看門狗低 主要…

VR黨建工作站-紅色教育基地

近幾年在市場爆火的VR黨建工作站提升了傳統的黨建方式,利用VR/AR技術,為廣大黨員提供沉浸式、多維度的黨建學習。佩京利用VR技術搭建的教育場景,可以更加直觀地了解黨的發展歷程,提高學習效果,激發奮斗精神。VR黨建工作…

配置 Gitlab 和 Elasticsearch/Zoekt 并使用 Docker Metadata 數據庫、Camo 代理服務

配置 Gitlab 和 Elasticsearch/Zoekt 并使用 Docker Metadata 數據庫、Camo 代理服務 本文章首發于:連接 Gitlab 和 Elasticsearch/Zoekt 并使用 Docker Metadata 數據庫、Camo 代理服務 - Ayaka 的小站 為確保更好閱讀格式和閱讀體驗,更建議前往個人博客…

2025年滲透測試面試題總結-36(題目+回答)

安全領域各種資源,學習文檔,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各種好玩的項目及好用的工具,歡迎關注。 目錄 一、計算機網絡基礎 1. HTTP 狀態碼(502/503/501) 2. HTTP 請求方式及作用 3. 計…

QT5.15.2 - 安裝時如果下載不了停了,需要加速

文章目錄QT5.15.2 - 安裝時如果下載不了停了,需要加速概述筆記安裝的選項可用的國內鏡像站點也有很多ENDQT5.15.2 - 安裝時如果下載不了停了,需要加速 概述 在 https://download.qt.io/archive/online_installers 中找在線安裝包。 用qt-online-instal…

著色器語言

以下是主流的幾種著色器語言:1. HLSL (High-Level Shading Language)這是你在Unity中最主要、最應該學習的語言。開發方:微軟 (Microsoft)主要應用平臺:Unity、DirectX (Windows, Xbox)特點:語法與C語言非常相似,易于學…