Docker架構及常用的命令

一、初識Docker

1、 docker是一個快速交付應用、運行應用的技術,具備下列優勢:

  • 可以將程序及其依賴、運行環境一起打包為一個鏡像,可以遷移到任意Linux操作系統
  • 運行時利用沙箱機制形成隔離容器,各個應用互不干擾
  • 啟動、移除都可以通過一行命令完成,方便快捷

2、鏡像和容器

鏡像(Image):Docker將應用程序及其所需的依賴、函數庫、環境、配置等文件打包在一起,稱為鏡像。

容器(Container):鏡像中的應用程序運行后形成的進程就是容器,只是Docker會給容器進程做隔離,對外不可見。

3、DockerHub 鏡像托管平臺

DockerHub是一個官方的Docker鏡像的托管平臺。這樣的平臺稱為Docker Registry

4、Docker架構

Docker是一個CS架構的程序,由兩部分組成:

  • 服務端(server):Docker守護進程,負責處理Docker指令,管理鏡像、容器等
  • 客戶端(client):通過命令或RestAPI向Docker服務端發送指令。可以在本地或遠程向服務端發送指令

二、CentOS安裝Docker及啟動

1、安裝yum工具

yum install -y yum-utils \device-mapper-persistent-data \lvm2 --skip-broken

2、如果之前安裝過舊版本的Docker,可以使用下面命令卸載:

yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux \docker-engine-selinux \docker-engine \docker-ce

3、設置docker本地鏡像源

yum-config-manager \--add-repo \https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.reposed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
yum makecache fast

4、開始安裝docker-ce

docker-ce為社區免費版本

yum install -y docker-ce

Docker應用需要用到各種端口,如果只是練習建議直接關閉防火墻!否則就去釋放對應的端口就行

5、關閉防火墻

  • 關閉 systemctl stop firewalld
  • 禁止開機啟動防火墻 systemctl disable firewalld

6、啟動Docker服務

  • systemctl start docker # 啟動docker服務
  • systemctl stop docker # 停止docker服務
  • systemctl restart docker # 重啟docker服務
  • systemctl enable docker #開機自啟

使用docker -v查詢docker版本,systemctl status docker查詢啟動狀態

三、鏡像基本操作及命令

1、鏡像名稱組成規則

鏡像名稱一般分兩部分組成:[repository]:[tag]。 在沒有指定tag時,默認是latest,代表最新版本的鏡像。例如mysql:5.7mysql是repository ,5.7則是tag
在這里插入圖片描述

2、鏡像操作命令

常見的鏡像操作命令如圖:
在這里插入圖片描述

2.1 查看鏡像(docker images)

例如:docker images

2.2 刪除鏡像(docker rmi)

例如:docker rmi nginx:latest

2.3 拉取鏡像(docker pull)

例如:docker pull nginx

需求:從DockerHub中拉取一個nginx鏡像并查看

1)首先去鏡像倉庫搜索nginx鏡像,建議找官方的)
在這里插入圖片描述

2)點進去詳情,復制docker pull nginx命令
在這里插入圖片描述
在這里插入圖片描述

2.4 保存鏡像(docker save)

例如:docker save -o nginx.tar nginx:latest 將nginx:latest保存為nginx.tar

2.5 導入鏡像(docker load)

例如:docker load -i nginx.tar

四、容器基本操作及命令

1、容器操作命令

容器操作的命令如圖:
在這里插入圖片描述
容器保護三個狀態:

  • 運行:進程正常運行
  • 暫停:進程暫停,CPU不再運行,并不釋放內存
  • 停止:進程終止,回收進程占用的內存、CPU等資源
1.1 創建并運行一個容器(docker run)

例如: docker run --name mn -p 8080:80 -d nginx

命令解讀:

  • docker run :創建并運行一個容器
  • --name : 給容器起一個名字,比如叫做mn
  • -p:將宿主機端口與容器端口映射,冒號左側是宿主機端口,右側是容器端口
  • -d:后臺運行容器
  • nginx:鏡像名稱,例如nginx
1.2 讓運行的容器暫停(docker pause)

例如:docker pause mn

1.3 讓容器從暫停狀態恢復運行(docker unpause)

例如:docker unpause mn

1.4 停止運行的容器(docker stop)

例如:docker stop mn

1.5 讓停止的容器再次運行(docker start)

例如:docker start mn

1.6 刪除容器(docker rm)

例如:docker rm mn,如果該容器未處于暫停的狀態下刪除,則會失敗。可使用 docker rm -f mn 強制刪除

1.7 查看運行的容器及狀態(docker ps)

僅查看運行的容器,如想查全部的容器可用 docker ps -a

1.8 進入某個容器(docker exec)

docker exec -it mn bash 命令解讀:

  • docker exec :進入容器內部,執行一個命令
  • -it : 給當前進入的容器創建一個標準輸入、輸出終端,允許我們與容器交互
  • mn :要進入的容器的名稱
  • bash:進入容器后執行的命令,bash是一個linux終端交互命令

2、常用的容器基本創建及運行命令

Nginx

docker run --name mn -p 8081:80 -d nginx

命令解讀:

  • docker run :創建并運行一個容器
  • --name : 給容器起一個名字,比如叫做mn
  • -p :將宿主機端口與容器端口映射,冒號左側是宿主機端口,右側是容器端口,也就是說用戶可以通過主機名+8081訪問到容器的nginx
  • -d:后臺運行容器
  • nginx:鏡像名稱
Redis

docker run --name mr -p 6379:6379 -d redis redis-server --appendonly yes
命令解讀:

  • docker run :創建并運行一個容器
  • --name : 給容器起一個名字,比如叫做mr
  • -p :將宿主機端口與容器端口映射,冒號左側是宿主機端口,右側是容器端口,也就是說用戶可以通過主機名+6379訪問到容器的redis
  • -d:后臺運行容器
  • redis:鏡像名稱
  • -redis-server –appendonly yes 在容器執行redis-server啟動命令,并打開redis持久化配置

五、數據卷(容器數據管理)及相關操作命令

數據卷(volume)是一個虛擬目錄,指向宿主機文件系統中的某個目錄。之前進入nginx內部。并且因為沒有編輯器,修改文件也很麻煩。要解決這個問題,必須將數據與容器解耦,這就要用到數據卷了。一旦完成數據卷掛載,對容器的一切操作都會作用在數據卷對應的宿主機目錄了

1、數據卷操作命令

docker volume命令是數據卷操作,根據命令后跟隨的command來確定下一步的操作:

  • create 創建一個volume
  • inspect 顯示一個或多個volume的信息
  • ls 列出所有的volume
  • prune 刪除未使用的volume
  • rm 刪除一個或多個指定的volume
1.1 創建數據卷(docker volume create)

例如:docker volume create html

1.2 查看數據卷詳細信息(docker volume inspect)

例如:docker volume inspect html

在這里插入圖片描述

1.3 列出所有的數據卷(docker volume ls)

例如:docker volume ls
在這里插入圖片描述

1.4 刪除未使用的數據卷(docker volume prune)

例如:docker volume prune

1.5 刪除一個或多個指定的數據卷(docker volume rm)

例如:docker volume rm

2、本地目錄掛載和數據卷掛載

docker run的命令中通過 -v 參數掛載文件或目錄到容器中

2.1 數據卷掛載

需求:創建一個nginx容器,通過掛載的方式修改容器內的html目錄內的index.html內容

docker run --name mn -v html:/usr/share/nginx/html -p 8000:80 -d nginx
命令解讀:

  • docker run :創建并運行一個容器
  • --name : 給容器起一個名字,比如叫做mn
  • -v html:/usr/share/nginx/html :把html數據卷掛載到容器內的 /usr/share/nginx/html 這個目錄中,如果沒有html掛載卷將會自動創建
  • -p :將宿主機端口與容器端口映射,冒號左側是宿主機端口,右側是容器端口
  • -d:后臺運行容器
  • nginx:鏡像名稱

② 進入html數據卷所在位置,并修改HTML內容

  1. 查看html數據卷的位置 docker volume inspect html
  2. 進入該目錄 cd /var/lib/docker/volumes/html/_data
  3. 修改文件 vi index.html
  4. 瀏覽器訪問 主機:8000
2.2 本地目錄掛載

需求:創建并運行一個MySQL容器,將宿主機目錄直接掛載到容器

①創建目錄/tmp/mysql/data
②創建目錄/tmp/mysql/conf,并且在/tmp/mysql/conf創建一個hmy.cnf文件內容為:

[mysqld] skip-name-resolve character_set_server=utf8
datadir=/var/lib/mysql server-id=1000


掛載/tmp/mysql/data到mysql容器內數據存儲目錄,
掛載/tmp/mysql/conf/hmy.cnf到mysql容器的配置文件,
設置MySQL密碼

docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 33060:3306
-v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf
-v /tmp/mysql/data:/var/lib/mysql
-d mysql:5.7.25

命令解讀:

  • docker run :創建并運行一個容器
  • --name : 給容器起一個名字,比如叫做mysql
  • -e MYSQL_ROOT_PASSWORD=123456 : 設置mysql 的root密碼為123456
  • -v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf : 掛載/tmp/mysql/conf/hmy.cnf到mysql容器的配置文件(這里的hmy.cnf為自己需要更新mysql配置)
  • -v /tmp/mysql/data:/var/lib/mysql : 掛載/tmp/mysql/data數據到mysql容器
  • -p :將宿主機端口與容器端口映射,冒號左側是宿主機端口,右側是容器端口
  • -d:后臺運行容器
  • mysql:5.7.25:鏡像名稱

總結:
在這里插入圖片描述

  • 帶數據卷模式:宿主機目錄 --> 數據卷 —> 容器內目錄
    由docker來管理目錄,但是目錄較深,不好找

  • 直接目錄掛載模式:宿主機目錄 —> 容器內目錄
    耦合度高,需要我們自己管理目錄,不過目錄容易尋找查看

  • 努力學習,持續補充更新中,多多指教~~

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

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

相關文章

邊緣智能網關如何應對環境污染難題

隨著我國工業化、城鎮化的深入推進,包括大氣污染在內的環境污染防治壓力繼續加大。為應對環境污染防治難題,佰馬綜合邊緣計算、物聯網、智能感知等技術,基于邊緣智能網關打造環境污染實時監測、預警及智能干預方案,可應用于大氣保…

銀行數據分析入門篇:信用卡全生命周期分析,到底應該怎么做?

最近有朋友向我咨詢銀行信貸業務的數據分析,就看了很多案例,剛好看到一個信用卡全生命周期分析的案例,做得很詳細又通俗易懂,基本上可以直接復制套用,所以特地分享給大家。 本文主要分享作者整個分析作品的思路&#x…

Unity對象池

標題:Unity對象池技術詳解 一、引言 在Unity游戲開發中,我們經常需要創建大量的游戲對象,如子彈、敵人和道具等。然而,頻繁地創建和銷毀這些對象會消耗大量的系統資源,影響游戲的性能。為了解決這個問題,…

golang 使用 viper 加載配置文件 自動反序列化到結構

golang使用 viper 無需設置 mapstructure tag 根據配置文件后綴 自動返序列化到結構 解決結構有下劃線的字段解析不成功問題 viper 正常加載配置文件 golang viper 其中可以用來 查找、加載和反序列化JSON、TOML、YAML、HCL、INI、envfile和格式的配置文件 配置文件 test_to…

jdom利用純java技術對xml文檔進行解析、生成、序列化等各種操作

Jdom對xml文檔進行解析、生成、序列化等各種操作。 使用jdom之前,首先要導入jar包:jdom.jar 獲得根元素: //首先確定xml文件位置 String xmlPath "./src/ceshi/Test.xml"; //使用的解析器,這里表示默認的解…

KMP算法數組下標從0和數組下標從1開始

我在運用KMP時&#xff0c;總時會搞混如果數組下標為0時要如何用寫&#xff0c;下標為1時要如何寫。 當下標為0時kmp void kmp(int len) {//下標為0 時vector<int> f(n,-1);for(int i 1;i < len;i){ // 每次更新的是 下標i // 當第 i1不匹配是 跳到 f[i]的位置上&…

106.進程控制(結束、孤兒、僵尸進程)以及進程回收

目錄 結束進程 孤兒進程 僵尸進程 進程回收 wait() waitpid 進程控制是指在操作系統中對進程進行創建、終止、掛起、喚醒以及進程之間的同步、通信等操作的管理。 結束進程 exit() 和 _exit() 函數都用于終止一個進程&#xff0c;但它們之間有一些重要的區別&#xf…

新工科:數據科學與大數據技術實驗中心解決方案,賦能高校新工科數智人才培養

隨著數字經濟蓬勃發展&#xff0c;數字化產業和產業數字化成為就業增長新動能。據人瑞人才與德勤調研顯示&#xff0c;未來3年&#xff0c;數字產業化企業最需要運營人員和開發人員&#xff08;包括大數據開發工程師、數據建模開發工程師等&#xff09;&#xff0c;其次是數據分…

【RTOS學習】FreeRTOS中的鏈表 | 堆的管理

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;專欄&#xff1a;《RTOS學習》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交給時間&#xff01; 目錄 &#x1f969;FreeRTOS中的鏈表&#x1f95e;初始化&#x1f95e;尾部插入&#x1f95e;按順…

OpenWRT搭建本地web站點并結合內網穿透實現公網遠程訪問

文章目錄 前言1. 檢查uhttpd安裝2. 部署web站點3. 安裝cpolar內網穿透4. 配置遠程訪問地址5. 配置固定遠程地址 前言 uhttpd 是 OpenWrt/LuCI 開發者從零開始編寫的 Web 服務器&#xff0c;目的是成為優秀穩定的、適合嵌入式設備的輕量級任務的 HTTP 服務器&#xff0c;并且和…

【Windows】MCSM面板搭建Mycraft服務器,實現公網遠程聯機

文章目錄 前言1.Mcsmanager安裝2.創建Minecraft服務器3.本地測試聯機4. 內網穿透4.1 安裝cpolar內網穿透4.2 創建隧道映射內網端口 5.遠程聯機測試6. 配置固定遠程聯機端口地址6.1 保留一個固定TCP地址6.2 配置固定TCP地址 7. 使用固定公網地址遠程聯機 前言 MCSManager是一個…

[香橙派]Orange pi zero 3命令行配網方法——建立ssh連接——Ubuntu配置WIFI自動連接

一、前言 前面我們給Orange Pi安裝了Ubuntu系統&#xff0c;并通過MobaXterm進行了串口連接&#xff0c;但其實并不方便&#xff0c;在日常開發中&#xff0c;我們希望能夠使用更方便的ssh連接來進行操作&#xff0c;因此配置網絡是必要的。 本章介紹的方法無需網線、HDMI線等&…

upload-labs

01 隨便上傳個文件 發現對于上傳類型有限制 查看頁面代碼發現是js的過濾直接關閉js 上傳成功 右鍵圖片在新建標簽頁打開文件 這里直接抓包改名字也行 02 抓包修改后綴名 03 發現后端做了檢測抓包修改失敗 大小寫繞過失敗&#xff0c;php特性php1等會被當成php執行 這里圖片的…

私域流量:探索營銷新紀元的高效之路

在當前的數字營銷領域&#xff0c;私域流量已經嶄露頭角&#xff0c;成為企業和品牌爭相追逐的新路徑。私域流量指的是企業或品牌通過自有渠道&#xff0c;如網站、APP、微信公眾號等&#xff0c;直接觸達的用戶流量。這種流量具有更高的自主性和可控性&#xff0c;對于提升營銷…

MS1242,替代ADS1242,24bit 高精度、低功耗模數轉換器

產品簡述 MS1242/MS1243 是一款高精度、寬動態范圍、 ?-Σ 模數轉 換芯片&#xff0c;其工作電壓為 2.7V 至 5.25V &#xff0c;可以達到 24bit 無失碼轉 換&#xff0c;有效精度可達 21bit 。 MS1242/MS1243 可以廣泛使用在工 業控制、稱重、液體 / 氣體化學分析、血液分…

spark 寫入 hudi時數據類型報錯

報錯信息如下&#xff1a; Caused by: org.apache.spark.sql.execution.QueryExecutionException: Parquet column cannot be converted in file hdfs://master:9000/user/hive/warehouse/ods_ds_hudi.db/order_info/19971201/77687054-08d3-4045-9529-1ca38e7de10b-0_0-65-57…

selenium相關地址匯總

webdriver下載 Chrome瀏覽器驅動下載地址&#xff1a;https://chromedriver.storage.googleapis.com/index.html Edge瀏覽器驅動下載地址&#xff1a;https://developer.microsoft.com/zh-cn/microsoft-edge/tools/webdriver) 或 https://msedgewebdriverstorage.z22.web.cor…

手眼標定 - 最終精度和誤差優化心得

手眼標定 - 標定誤差優化項 一、TCP標定誤差優化1、注意標定針擺放范圍2、TCP標定時的點次態與工作姿態盡可能保持相近 二、深度相機對齊矩陣誤差1、手動計算對齊矩陣 三、手眼標定拍照姿態1、TCP標定姿態優先2、水平放置棋盤格優先 為減少最終手眼標定的誤差&#xff0c;可做或…

Get職場新知識:做分析,用大數據分析工具

為什么企業每天累積那么多的數據&#xff0c;也做數據分析&#xff0c;但最后決策還是靠經驗&#xff1f;很大程度上是因為這些數據都被以不同的指標和存儲方式放在各自的系統中&#xff0c;這就導致了數據的分析口徑和標準不一致&#xff0c;無法在同一個分析軟件上做綜合分析…

Rsync+Sersync

服務器相關參數 源服務器 192.168.17.101 目標服務器&#xff08;同步到的服務器&#xff09; 192.168.17.103 ##目標服務器配置 ###1、配置rsync服務 1、安裝rsync yum -y install rsync 2、配置rsync vim /etc/rsyncd.conf 配置文件內容 uid root gid root use c…