Docker -- 快速入門

鏡像與容器

當我們使用Docker安裝應用時,Docker會自動搜索并下載應用鏡像(image)。鏡像不僅包含應用本身,還包含應用運行所需要的環境,配置、系統函數庫。Docker會在運行鏡像時創建一個隔離環境,稱為容器(container)

總結來說:docker的鏡像做到了忽略操作系統環境,忽略系統本身的差異去直接部署,Docker會在運行鏡像時創建一個隔離環境,docker類似于Windows系統,就相當于在電腦中有下了一個小系統,里面獨立運行程序。

鏡像倉庫:存儲和管理鏡像的平臺,Docker官方維護了一個公共倉庫:DockerHub

主要流程:下載鏡像運行,形成容器。

如何找到想要的鏡像?

在docker服務端執行一個命令即可。

主要執行流程:

在docker客戶端輸入命令,docker daemon的守護進程會監聽該命令,再去對應的鏡像倉庫去拉去鏡像,下載到本地運行,運行時會為鏡像區創建一個隔離的環境稱之為容器,多個容器之間相互隔離,可以進行多實例部署,形成集群,相互之間沒有干擾,也可以在一個服務上去部署多個不同應用的實例,不需要擔心相互干擾的問題,搭建集群部署整個復雜的微服務應用非常方便。

總結:有了docker的鏡像和容器,運維在部署時就忽略了系統的差異以及應用之間的干擾,節省了非常多的時間。

命令解讀
?docker run -d \--name mysql \-p 3306:3306 \-e TZ=Asia/Shanghai \ -e MYSQL_ROOT_PASSWORD=123 \mysql

第一行 docker run 是命令的起始,所有的docker命令都是以docker為前綴,后面的run是一個子命令,docker命令下有很多很多的子命令,

  • docker run :創建并運行一個容器,-d 是讓容器在后臺運行,命令結束后,MySQL的進程以及它的容器會持續保持一個運行狀態,就不會用影響正常工作,因此 docker run -d 可以認為成一套配套的指令。

  • --name MySQL:給容器起個名字,必須唯一

  • -p 3306:3306:設置端口映射 宿主機端口:容器內端口。容器內端口取決于進程,不需要改動,宿主機的端口可以改變,如果要布置集群的話,就需要改變宿主機端口,防止端口沖突

舉例說明:

例如配置一臺虛擬機的IP地址為192.168.88.130,我們可以訪問到該IP地址,是可以ping通的。

而配置在這臺虛擬機上的容器是一個隔離的環境。

比如部署MySQL容器,MySQL啟動端口為3306,但是容器是隔離環境,有自己獨立的內存空間,有自己獨立的文件系統,也有自己獨立的網絡空間。因此這個MySQL容器中的京城一旦啟動,會有自己的IP地址,這個網絡空間對外是不可訪問的。

因此MySQL客戶端無法直連該容器的端口,但是可以連接容器外的虛擬機,即宿主機,為了連接該容器,需要去做一個端口的映射,可以將宿主機的3306端口跟容器的3306端口做一個映射。

因為容器是由docker來控制的,內部完全可以做好這個映射,這樣,當客戶端訪問外部宿主機的3306端口時,docker就會將請求轉到容器的3306端口,這樣就間接的訪問到了容器。即MySQL客戶端連接jdbc:mysql://192.168.88.130就能連接到宿主機的3306端口,請求就會轉到容器內,這樣就實現間接訪問了。

這就是端口映射的作用。

  • -e KEY = VALUE:設置環境變量,環境變量是由鏡像內部去執行容器時用到的,因此是由鏡像來決定的,比如現在是MySQL的容器,MySQL官方規定將來需要怎樣的環境變量,這是由鏡像制作者去規定的。需要去鏡像文檔中查看。

  • mysql:指定運行的鏡像的名字 docker run 一執行,docker的守護進程會幫助我們搜索和下載并且部署應用,而這些都需要靠容器名來指定。

鏡像命名規范

  • 鏡像名稱一般分為兩部分組成:[repository]:[tag]

    • 其中repository就是鏡像名

    • tag是鏡像的版本

  • 在沒有指定tag時,默認是latest,代表最新版本的鏡像

Docker基礎

常見命令

Docker最常見的命令就是操作鏡像、容器的命令,詳情可見官方文檔:Docker 文檔

  • docker pull:拉去鏡像,從鏡像倉庫中下載鏡像到本地鏡像中

  • docker images :查看所有本地鏡像

  • docker rmi :刪除指定本地鏡像

  • docker build:自定義鏡像:需要定義一個docker file 基于docker file文件使用 docker build來完成構建

  • docker save:將打包好的鏡像通過save命令保存到本地變成壓縮文件,和docker load配合可以將鏡像傳遞,但是使用較少

  • docker load:將壓縮好的鏡像解壓

  • docker push:將本地鏡像推到鏡像倉庫,鏡像倉庫可以是公用,也可以私用,

以上都是鏡像的相關操作

鏡像最終要去創建對應的容器還要運行

  • docker run:創建容器并運行,該命令為自動化,如果發現鏡像不存在,會先去拉取鏡像,之后再自動創建容器,再去運行

  • docker stop:停止容器運行(停止的是容器內部的那個進程),容器還在。

  • docker start:啟動容器,將容器內部的停止的進程再次啟動

注意事項:docker run每執行一次就會創建一個容器并運行,而docker start只是啟動已有容器中停止的進程,不會創建容器。

  • docker ps:查看容器的運行狀態 ps(進程狀態)

  • docker rm: 刪除容器

  • docker logs:查看容器日志

  • docker exec:執行一些命令進入容器的內部,有時需要對容器做修改,可以通過該命令進入容器,進行一些處理

以上就是docker的常用命令了

image-20250614233106661

案例演示:查看DockerHub,拉取Nginx鏡像,創建并運行Nginx容器

需求:

  • 在DockerHub中搜索Nginx鏡像,查看鏡像的名稱

  • 拉取Nginx鏡像

  • 查看本地鏡像列表

  • 創建并運行Nginx容器

  • 查看容器

  • 停止容器

  • 再次啟動容器

  • 進入Nginx容器

  • 刪除容器

實現步驟:

首先去瀏覽器查看https://hub.docker.com/,尋找Nginx鏡像

image-20250615163913240

執行命令

image-20250615164928989

測試壓縮功能

解壓功能

image-20250615221322960

創建并運行容器,并查看運行狀態

image-20250615221827792

停止容器運行

image-20250615222006303

注意事項:默認情況下 docker ps 查看的是運行中的容器,如果想要查看所有容器狀態,就需要去添加 -a 參數

image-20250615222144101

再次啟動

image-20250615222350350

以上就是容器的一些基本操作

除此之外還可以查看日志

image-20250615222540449

如果想要一直查看該容器日志,就需要加上參數 - f

主要用在調試場景。

還可以進入容器的內部來操作:

image-20250615223052108

-it 指添加一個可輸入的終端 后面跟容器名 進入容器內部后,使用bash命令來進行交互

在容器內部,docker容器模擬了一個計算機,有獨立網絡,內存,文件系統。

image-20250615223423724

就是獨立的Linux系統。

注意事項:不能刪除一個正在運行中的容器,可以選擇停止運行容器后刪除,或者加上 - f 強制刪除。

以上就是在docker中常用的命令。

希望對大家有所幫助

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

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

相關文章

輸入數量未知如何設置輸入

在 C 的算法題中,如果你不知道輸入數據有多少組(即測試用例的數量未知),通常的處理方式是使用 循環讀取輸入直到文件結束 (EOF)。這類題目常見于在線評測系統(如 LeetCode、牛客網、POJ 等&…

如何在Windows上使用qemu安裝ubuntu24.04服務器?

2025年6月15日,周日晚上 在Windows上使用QEMU安裝Ubuntu 24.04需要完成環境配置、鏡像準備、虛擬機創建及系統安裝等步驟。以下是綜合多個搜索結果后的詳細指南: 1. 安裝QEMU環境 下載QEMU Windows版 從QEMU官網下載64位安裝包(如qemu-w64-s…

前端開發面試題總結-vue2框架篇(二)

Vue2高頻問答 一、為什么 Vue 的 data 屬性必須聲明為返回一個初始數據的函數? 回答重點: Vue 的 data 屬性聲明成一個返回初始數據的函數,是為了確保每個組件實例都有獨立的狀態。通過這種方式,避免了組件使用相同的數據對象導致的狀態共…

Web第二次方向考核復盤

一、簡答題 1. &#xff08;1&#xff09;為什么要清除浮動&#xff1f; 答&#xff1a;當子元素浮動時會脫離文檔流&#xff0c;父元素無法正確計算子元素高度導致高度、邊框異常顯示。同時會影響后續文檔流布局。 <style>.box1 {border: solid 2px #000;}.child1 {fl…

Linux入門(十八)read函數

read 讀取控制臺輸入 基本語法 read 選項 參數 選項 -p 指定讀取值時的提示符 -t 指定讀取值時等待的時間&#xff08;秒&#xff09;&#xff0c;如果沒有在指定的時間內輸入&#xff0c;就不再等待了 參數 變量&#xff1a;指定讀取值的變量名 實例&#xff1a; 1、讀取控制…

Python 文件操作詳解

文章目錄 Python 文件操作詳解一、文件操作的基本流程二、文件打開模式詳解1. 基本模式2. 擴展模式3. 模式組合示例 三、文件操作方法大全1. 打開和關閉文件2. 讀取文件內容3. 寫入文件內容4. 文件指針操作 四、文件編碼處理五、二進制文件操作六、常見文件操作場景1. 文件內容…

用AI配合MCP快速生成n8n工作流

在數字化時代的浪潮中&#xff0c;AI技術正以前所未有的速度改變著我們的生活和工作方式。從智能家居到智能辦公&#xff0c;從數據分析到自動化流程&#xff0c;AI的應用場景無處不在。今天&#xff0c;我們將帶你走進一個充滿創新與效率的世界&#xff0c;探索如何通過AI大眼…

ArkUI-X框架LogInterface使用指南

ArkUI-X框架支持日志攔截能力&#xff0c;Android側提供原生接口&#xff0c;用于注入LogInterface接口&#xff0c;框架日志及ts日志通過該接口輸出&#xff0c;本文的核心內容是介紹如何在Android平臺上有效利用ArkUI-X框架的LogInterface攔截日志。 Android平臺創建ArkUI-X…

函數重載與函數模板

函數重載與函數模板 函數重載 函數組成 返回類型 函數名稱(參數列表){函數體}函數簽名&#xff1a;函數名稱(參數列表) C 允許定義同名函數&#xff0c;前提是它們具有不同的簽名。這被稱為函數重載 。 C 編譯器通過檢查調用中參數的數量、類型和順序來選擇要調用的適當函…

NLP學習路線圖(四十六):可解釋性

在自然語言處理(NLP)技術重塑人機交互、信息檢索甚至司法決策的今天,一個尖銳的問題愈發凸顯:當模型在文本分類中判定你的貸款申請被拒,或在簡歷篩選中將你排除,你是否有權追問一句——“為什么?” 一、黑箱迷霧:NLP模型的不透明困境 現代NLP的核心驅動力——深度神經…

uniapp的app項目,在華為pad上運行,頁面顯示異常

最開始為了好調試&#xff0c;運行成h5在瀏覽器調試的&#xff0c;調完以后&#xff0c;放到pad上。。。天塌了&#xff0c;所有頁面異常&#xff0c;感覺被放大了好多&#xff0c;而且頁面很亂。。。 查了很多資料&#xff0c;說把px改為rpx&#xff0c;好&#xff0c;全部改…

Linux中的連接符

Linux中的&&連接符 和其它語言類似&#xff0c;在Shell中&#xff0c;&&是一個邏輯運算符&#xff0c;表示邏輯AND&#xff0c;用于連接多個條件表達式 不同的是&#xff0c;在Linux系統中&#xff0c;&&不僅可以連接條件表達式&#xff0c;而且還能連…

裝飾模式Decorator Pattern

模式定義 動態地給對象增加額外的職責 對象結構型模式 模式結構 Component&#xff1a;抽象構件 ConcreteComponent&#xff1a; 具體構件 Decorator&#xff1a;抽象裝飾類 ConcreteDecorator&#xff1a; 具體裝飾類 抽象裝飾類代碼 public class Decorator extends Compo…

https說明

http是無狀態的&#xff0c;https是在http應用層協議和tcp傳輸控制層之間加了一層&#xff0c;主要功能包括加密傳輸內容&#xff0c;校驗信息是否完整&#xff0c;信息是否被篡改等。http的網絡傳輸&#xff0c;源端應用層發送http請求&#xff0c;傳輸到源端的控制層&#xf…

實時操作系統(FreeRTOS、RT-Thread)RISC-V

FreeRTOS&#xff1a;FreeRTOS? - FreeRTOS? RT-Thread&#xff1a;rt-thread.org VxWorks&#xff1a; QNX Neutrino RTOS&#xff1a; RT-Linux&#xff1a; 一、 實時操作系統介紹 實時操作系統&#xff08;Real Time Operating System&#xff0c;簡稱RTOS&#xff…

Python3除標準庫外更全面的XML解析方案

一、擴展解析庫方案 lxml高性能解析 from lxml import etree doc etree.parse(data.xml) # XPath 2.0增強查詢 nodes doc.xpath(//student[score>90]/name/text())優勢&#xff1a;支持XPath 2.0語法和XSLT轉換&#xff0c;比標準庫快5-10倍 BeautifulSoup混合解析 fr…

同時裝兩個MySQL, 我在MySQL5的基礎上, 安裝MySQL8

目錄 1. 前言 2. 下載MySQL 3. 安裝MySQL 3.1 第一步:選擇MySQL ?編輯 3.2 第二步:存儲地址 3.3 第三步 3.4 第四步:完成基礎配置 3.5 第五步 3.6 第六步:數據庫密碼 3.7 第七部:服務名 4. 環境變量 4.1 復制MySQL的bin地址 4.2 進入高級系統設置 4.3 PATH 4.4 更改…

Visual Studio 2022打包程序流程

Visual Studio 2022打包程序流程 打開管理拓展 安裝Microsoft Visual Studio Installer Projects 關閉軟件才能繼續安裝 安裝完成后點擊&#xff0c;解決方案&#xff0c;創建新項目 添加&#xff1a;setup project 打開軟件的路徑 復制路徑 添加文件 粘貼剛才復制的路徑&…

web3方法詳解

web3.py 是一個功能強大的 Python 庫,用于與以太坊區塊鏈交互。它提供了多種模塊和功能,涵蓋賬戶管理、智能合約交互、交易發送、區塊鏈數據查詢等。以下是 web3.py 的主要功能模塊及其用途: 1. Web3 核心模塊 功能:提供基礎連接、工具函數和核心功能。 常用方法: Web3(…

HTML5+JS實現一個簡單的SVG 貝塞爾曲線可視化設計器,通過幾個點移動位置,控制曲線的方向

三次貝塞爾曲線,二次貝塞爾曲線有什么區別 https://blog.csdn.net/xiaoyao961/article/details/148678265 SVG 貝塞爾曲線可視化設計器 下面是一個簡單的貝塞爾曲線可視化設計器&#xff0c;使用 HTML5 和 JavaScript 實現。這個設計器允許你通過拖動控制點來實時調整貝塞爾曲…