速通Docker === 使用最佳實踐總結

?

目錄

主要使用步驟

1. 命令

2. 網絡

3. 存儲

卷存儲(Volumes)

目錄掛載(Bind Mounts)

比較

4. 環境變量

5. 端口

示例:啟動 MySQL 容器

解釋:

總結


Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發布到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。

主要使用步驟

根據提供的圖和命令示例,我們可以總結出 Docker 的主要使用步驟如下:

1. 命令

Docker 的操作主要通過命令行工具進行。常用的命令包括 docker run(運行容器)、docker stop(停止容器)、docker start(啟動容器)、docker rm(刪除容器)等。

  • docker pull IMAGE:從鏡像倉庫中拉取或更新鏡像。
  • docker push IMAGE:將鏡像推送到鏡像倉庫。
  • docker run [OPTIONS] IMAGE [COMMAND] [ARG...]:運行一個新的容器。
  • docker stop CONTAINER:停止一個或多個正在運行的容器。
  • docker start CONTAINER:啟動一個或多個已經被停止的容器。
  • docker restart CONTAINER:重啟容器。
  • docker rm CONTAINER:刪除一個或多個容器。
  • docker rmi IMAGE:刪除一個或多個鏡像。
  • docker ps:列出當前所有正在運行的容器。
  • docker logs CONTAINER:獲取容器的日志。

2. 網絡

Docker 容器可以配置網絡,以便容器之間或容器與外部世界進行通信。網絡配置可以通過 docker network 命令進行管理。

  • docker network ls:列出所有網絡。
  • docker network create NETWORK:創建一個新網絡。
  • docker network inspect NETWORK:查看網絡的詳細信息。
  • docker network connect NETWORK CONTAINER:將容器連接到網絡。
  • docker network disconnect NETWORK CONTAINER:將容器從網絡中斷開。

3. 存儲

Docker 容器的數據持久化通過卷(Volumes)實現。卷可以掛載到容器中,用于存儲數據。例如,使用 -v 參數將宿主機的目錄掛載到容器中。

目錄掛載是將宿主機上的目錄直接掛載到容器內。這種方式使得容器可以訪問宿主機上的文件和目錄,但這種方式不如卷存儲安全,因為宿主機的文件系統直接暴露給了容器。

區分目錄掛載和卷映射,可通過掛載的路徑中是否包含 / 或者 ./來判斷

卷存儲(Volumes)

Docker 卷是 Docker 管理的數據存儲機制,它們獨立于容器的生命周期,即使容器被刪除,卷中的數據也不會丟失。卷可以被多個容器掛載,非常適合用于持久化數據。

創建和使用卷的命令:

  • docker volume create VOLUME_NAME:創建一個新的 Docker 卷。
  • docker volume ls:列出所有 Docker 卷。
  • docker volume inspect VOLUME_NAME:查看卷的詳細信息。
  • docker volume rm VOLUME_NAME:刪除一個 Docker 卷。

使用卷的示例命令:

docker run -d \-v mydata:/path/in/container \myimage

這里,mydata 是 Docker 卷的名稱,/path/in/container 是容器內掛載卷的路徑。

目錄掛載(Bind Mounts)

目錄掛載是將宿主機上的目錄直接掛載到容器內。這種方式使得容器可以訪問宿主機上的文件和目錄,但這種方式不如卷存儲安全,因為宿主機的文件系統直接暴露給了容器。

使用目錄掛載的示例命令:

docker run -d \-v /host/path:/path/in/container \myimage

這里,/host/path 是宿主機上的目錄路徑,/path/in/container 是容器內掛載目錄的路徑。

比較
  • 持久性:卷存儲和目錄掛載都可以實現數據的持久化,但卷存儲更安全,因為它是 Docker 管理的。

  • 共享性:卷可以被多個容器掛載,而目錄掛載通常只用于單個容器。

  • 性能:目錄掛載可能提供更好的性能,因為它直接使用宿主機的文件系統,但這也取決于具體的使用場景。

4. 環境變量

環境變量用于在容器啟動時傳遞配置信息。例如,使用 -e 參數設置環境變量。

  • -e KEY=VALUE--env KEY=VALUE:設置環境變量。
  • -e KEY--env KEY:設置環境變量,值從宿主機環境變量中獲取。

5. 端口

端口映射允許容器內的服務通過宿主機的端口訪問。例如,使用 -p 參數將容器的端口映射到宿主機的端口。

  • -p 宿主機端口:容器端口--publish 宿主機端口:容器端口:映射端口。
  • -p 容器端口--publish 容器端口:讓 Docker 自動在宿主機上選擇端口。

?

示例:啟動 MySQL 容器

以下是一個啟動 MySQL 容器的示例命令:

docker run -d -p 3306:3306 \
-v /home/docker/mysql/config:/etc/mysql/conf.d \
-v /home/docker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=shiguang \
--name mysql \
mysql:8.0.37-debian

解釋:

  • -d:后臺運行容器。

  • -p 3306:3306:將宿主機的 3306 端口映射到容器的 3306 端口。

  • -v /home/docker/mysql/config:/etc/mysql/conf.d:將宿主機的 /home/docker/mysql/config 目錄掛載到容器的 /etc/mysql/conf.d 目錄,用于配置 MySQL。

  • -v /home/docker/mysql/data:/var/lib/mysql:將宿主機的 /home/docker/mysql/data 目錄掛載到容器的 /var/lib/mysql 目錄,用于存儲 MySQL 數據。

  • -e MYSQL_ROOT_PASSWORD=shiguang:設置環境變量 MYSQL_ROOT_PASSWORD,用于設置 MySQL 的 root 用戶密碼。

  • --name mysql:為容器指定名稱 mysql

  • mysql:8.0.37-debian:指定要運行的鏡像,這里是 MySQL 8.0.37 的 Debian 版本。

總結

通過以上步驟和示例,我們可以看到 Docker 的使用主要包括命令操作、網絡配置、存儲管理、環境變量設置和端口映射。這些步驟確保了容器的可移植性、安全性和靈活性。Docker 的最佳實踐還包括使用官方鏡像、定期更新鏡像、合理配置資源限制等,以確保容器的穩定運行和資源的高效利用。

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

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

相關文章

Postgresql源碼(140)理解PG的編譯流程(make、Makefile、Makefile.global.in)

PG16 PG中使用的makefile看起來代碼比較多,但是實際邏輯比較簡單,這里做一些抽象總結。 總結 Makefile.global.in的$(recurse)宏自動生成了target,可以方便的進入內存目錄進行編譯。 all: all-common-recurse all-common-recurse: submak…

c語言中的數組(上)

數組的概念 數組是?組相同類型元素的集合; 數組中存放的是1個或者多個數據,但是數組元素個數不能為0。 數組中存放的多個數據,類型是相同的。 數組分為?維數組和多維數組,多維數組?般?較多?的是?維數組。 數組創建 在C語言…

戴爾電腦設置u盤啟動_戴爾電腦設置u盤啟動多種方法

最近有很多網友問,戴爾臺式機怎么設置u盤啟動,特別是近兩年的戴爾臺式機比較復雜,有些網友不知道怎么設置,其實設置u盤啟動有兩種方法,下面小編教大家戴爾電腦設置u盤啟動方法。 戴爾電腦設置u盤啟動方法一、戴爾進入b…

2【選修】再探寶可夢、數碼寶貝分類器

1 Pokemon/Digimon Classifier 1.1 Observation 1.2 Function 1.3 Loss 1.4 Training Examples – OOPS what do we want? 2 What is the probability of sampling bad D t r a i n D_{train} Dtrain? 2.1 Theroy – Larger N N N smaller ∣ H ∣ |H| ∣H∣ 2.2…

微信小程序中實現背景圖片完全覆蓋顯示,可以通過設置CSS樣式來實現

wxml頁面代碼 <view class"beijing"></view>wxss樣式代碼 /* pages/beiJing/beiJing.wxss */ .beijing {background-image: url("https://www.qipa250.com/qipa.jpg");/* 定位&#xff1a;絕對定位 */position: absolute;/* 上下左右都定位到…

Mongodb 慢查詢日志分析 - 1

Mongodb 慢查詢日志分析 使用 mloginfo 處理過的日志會在控制臺輸出, 顯示還是比較友好的. 但是如果內容較大, 就不方便查看了, 如果可以導入到 excel 就比較方便篩選/排序. 但是 mloginfo 并沒有提供生成到 excel 的功能. 可以通過一個 python 腳本輔助生成: import pandas…

ASP.NET Core 6.0 如何處理丟失的 Startup.cs 文件

介紹 .NET 6.0 已經發布&#xff0c;ASP.NET Core 6.0 也已發布。其中有不少變化讓很多人感到困惑。例如&#xff0c;“誰動了我的奶酪”&#xff0c;它在哪里Startup.cs&#xff1f;在這篇文章中&#xff0c;我將深入研究這個問題&#xff0c;看看它移動到了哪里以及其他變化。…

歐幾里得算法求最小公倍數和最大公約數

一.最大公約數 gcd(a,b)gcd(b,a%b) 遞歸式,當且僅當b0&#xff0c;易得0和a的公約數為a.(可作為遞歸的出口) 證明&#xff1a; int gcd(int a, int b) {if (b 0) return a;else return gcd(b, a % b); } 二.最小公倍數 給定整數a b&#xff0c;求a b的最小公倍數 有圖可知…

文檔解析:PDF里的復雜表格、少線表格如何還原?

PDF中的復雜表格或少線表格還原通常需要借助專業的工具或在線服務&#xff0c;以下是一些可行的方法&#xff1a; 方法一&#xff1a;使用在線PDF轉換工具 方法二&#xff1a;使用桌面PDF編輯軟件 方法三&#xff1a;通過OCR技術提取表格 方法四&#xff1a;手動重建表格 …

局域網中 Windows 與 Mac 互相遠程連接的最佳方案

由于工作需要&#xff0c;經常需要遠程連接或登錄到幾臺不同的工作用機上進行操作。 下面基于免費、高體驗等基本訴求&#xff0c;簡要記錄幾種不同場景下的實踐方案選擇&#xff0c;僅供參考。如您有更簡單且更優的方案&#xff0c;歡迎一起探討。 1 遠程桌面連接的幾種不同…

二叉樹的所有路徑(力扣257)

因為題目要求路徑是從上到下的&#xff0c;所以最好采用前序遍歷。這樣可以保證按從上到下的順序將節點的值存入一個路徑數組中。另外&#xff0c;此題還有一個難點就是如何求得所有路徑。為了解決這個問題&#xff0c;我們需要用到回溯。回溯和遞歸不分家&#xff0c;每遞歸一…

Centos 修改歷史讀錄( HISTSIZE)

history命令 -c #清空命令歷史 -r #讀歷史文件附加到歷史列表 -w #保存歷史列表到指定的歷史文件 命令歷史相關環境變量 HISTSIZE #命令歷史記錄的條數 HISTFILE #指定歷史文件&#xff0c;默認為~/.bash_history HISTFILESIZE #命令歷史文件記錄歷史的條數 以上變量可以 exp…

【C++高并發服務器WebServer】-2:exec函數簇、進程控制

本文目錄 一、exec函數簇介紹二、exec函數簇 一、exec函數簇介紹 exec 函數族的作用是根據指定的文件名找到可執行文件&#xff0c;并用它來取代調用進程的內容&#xff0c;換句話說&#xff0c;就是在調用進程內部執行一個可執行文件。 exec函數族的函數執行成功后不會返回&…

TDengine 與上海電氣工業互聯網平臺完成兼容性認證

在工業數字化轉型和智能化升級的浪潮中&#xff0c;企業對高效、可靠的數據管理解決方案的需求日益增長。特別是在風電智能運維、火電遠程運維、機床售后服務等復雜多樣的工業場景下&#xff0c;如何實現海量設備和時序數據的高效管理&#xff0c;已經成為推動行業升級的關鍵。…

Jenkins pipline怎么設置定時跑腳本

目錄 示例&#xff1a;在Jenkins Pipeline中設置定時觸發 使用pipeline指令設置定時觸發 使用Declarative Pipeline設置定時觸發 使用Scripted Pipeline設置定時觸發 解釋Cron表達式 保存和應用配置 小結 在Jenkins中&#xff0c;定時跑腳本&#xff08;例如定時執行Pip…

kotlin的協程的基礎概念

Kotlin的協程是一種用于簡化異步編程的強大工具。 理解協程的基礎概念可以幫助開發者有效地利用其能力。 以下是Kotlin協程的一些關鍵基礎概念&#xff1a; 協程&#xff08;Coroutines&#xff09; &#xff1a; 協程是一種用于處理并發任務的編程模型&#xff0c;它可以在單…

machine learning knn算法之使用KNN對鳶尾花數據集進行分類

通過導入必要的scikit-learn導入必要的庫&#xff0c;加載給定的數據&#xff0c;劃分測試集和訓練集之后訓練預測和評估即可 具體代碼如下&#xff1a; import numpy as np from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split f…

springEl 構建通用樹

再項目開發中&#xff0c;需要構建組織的樹形&#xff0c;菜單的樹形&#xff0c;字典樹形。感覺相似的代碼寫了一堆&#xff0c;就想著有沒有辦法&#xff0c;寫個通用的方法去處理下&#xff1f; 學習了《SpringEL詳解》&#xff0c;用springEl處理下。 構建樹形&…

C++ 入門速通-第1章【黑馬】

內容來源于&#xff1a;黑馬 集成開發環境&#xff1a;CLion CLion的官方下載網址&#xff1a;CLion: A Cross-Platform IDE for C and C by JetBrains 我在b站找到了一個安裝教程&#xff0c;可以按照這個視頻教程進行安裝&#xff08;內置漢化教程&#xff09;&#xff1a; …

Python的進程和線程

ref 接受幾個設定: 進程是一家almost密不透風的公司,緬甸KK園區 線程里面工作的…人 進程**[園區]**內公共資源對于進程來說,可以共享. 別的園區[進程],一般不能和自己的園區共享人員資源,除非… 好的,現在再接受設定: 單個CPU在任一時刻只能執行單個線程&#xff0c;只有…