Docker速通合集

Docker介紹

Docker是一個開源的應用容器引擎,它允許開發者打包他們的應用以及應用的依賴包到一個可移植的容器中,然后發布到任何流行的Linux機器或Windows服務器上。容器是完全使用沙箱機制(程序受控的環境),相互之間不會有任何接口(類似iPhone的app)而且更輕量級。
docker核心:容器 鏡像 倉庫
當我們利用docker安裝應用時,docker會自動搜索并下載應用鏡像(image).鏡像不僅包含應用本身,還包含應用運行所需要的環境,配置,系統函數庫。docker會在運行鏡像時創建一個隔離環境,稱為容器(container)
容器Container:
容器是鏡像創建的運行實例,它是一個輕量級的、可執行的獨立軟件包,包含了運行應用程序所需的一切:代碼、運行時、系統工具、系統庫和設置。
容器化技術使得軟件可以在幾乎任何地方以相同的方式運行,解決了“在我的機器上可以運行”的問題。

鏡像Image:
鏡像是構建容器的模板,它是一個只讀的模板,用于創建Docker容器。
鏡像通常是通過一個Dockerfile定義的,Dockerfile包含了構建鏡像所需的指令
倉庫Registry:
Docker倉庫用于存儲和分發Docker鏡像
公共的Docker Hub是最大的Docker鏡像倉庫,用戶可以在那里找到、分享和運行高質量的Docker鏡像。
Docker的主要特點:
可移植性:Docker容器可以在任何支持Docker的操作系統上運行,應用部署和遷移變得非常簡單。
隔離性:容器之間是相互隔離的,一個容器的崩潰不會影響其他容器。
輕量級:容器不需要像虛擬機那樣啟動一個完整的操作系統,因此它們可以快速啟動,并且占用更少的系統資源。
安全性:容器運行在自己的隔離環境中,并且可以限制對系統資源的訪問,從而提供了額外的安全層。

Docker的工作流程:
編寫Dockerfile:定義應用的依賴、環境變量、配置等。
構建鏡像:通過Dockerfile構建應用鏡像。
運行容器:從鏡像啟動一個或多個容器實例。
管理容器:啟動、停止、監控和刪除容器。
共享鏡像:將構建好的鏡像推送到Docker倉庫,以便在其他機器上使用

使用Docker的優勢:
快速部署和擴展:容器可以在秒內啟動,這對于需要快速擴展服務的應用場景非常有用。
持續集成和持續部署(CI/CD):Docker可以簡化從開發到生產環境的部署流程。
微服務架構:Docker容器非常適合微服務架構,因為它允許將應用分解為多個獨立的服務。

Docker的yum庫
Docker的yum源是一個軟件倉庫,它允許用戶通過yum包管理器在基于Red Hat的Linux發行版(如CentOS、Fedora)上輕松地安裝、更新和卸載Docker及其相關組件。Yum(Yellowdog Updater, Modified)是一個用于RPM-based Linux系統的自動化更新和軟件包安裝的工具。

安裝yum工具

yum install -y yum-utils

配置Docker的yum源(更新為阿里云yum源)

sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.reposudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo

更新yum,建立緩存

sudo yum makecache fast

安裝Docker

安裝命令:

yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin


啟動和校驗:

docker -v        #查看Docker版本
systemctl start docker        # 啟動Docker
docker images        #列出運行在本地Docker主機上的所有鏡像
systemctl stop docker        # 停止Docker
systemctl restart docker        # 重啟
systemctl enable docker        # 設置開機自啟
docker ps        # 執行docker ps命令,如果不報錯,說明安裝啟動成功


配置鏡像加速:

mkdir -p /etc/docker        # 創建目錄
# 復制內容,注意把其中的鏡像加速地址改成你自己的
tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["http://hub-mirror.c.163.com","https://mirrors.tuna.tsinghua.edu.cn","http://mirrors.sohu.com","https://ustc-edu-cn.mirror.aliyuncs.com","https://ccr.ccs.tencentyun.com","https://docker.m.daocloud.io","https://docker.awsl9527.cn"]
}
EOF
systemctl daemon-reload????????????????# 重新加載配置
systemctl restart docker????????????????# 重啟docker

Docker常用命令

幫助命令

docker version		#顯示docker版本信息
docker info			#顯示docker系統信息,包含鏡像和容器數量
docker [conmand]  --help	#幫助命令

鏡像命令

docker images		#查看所有本地主機上的鏡像 相當于docker image ls
docker iamges -aq	#查看所有鏡像id
docker search		#搜索鏡像
docker pull			#下載鏡像
docker pull image[:tag]	#下載指定版本鏡像,tag不寫默認是latest版本
docker rmi			#刪除鏡像
docker rmi -f imageid	#刪除指定鏡像
docker commit		#鏡像提交
docker save			#保存鏡像
docker load			#加載鏡像
docker push			#上傳鏡像
docker build		#構建鏡像
docker tag
docker login		#登錄dockerhub
docker loout		#登出

容器命令

docker run		#運行容器(如果鏡像不存在會自動拉取鏡像并運行)
--name: #為容器指定一個名稱;
-d: #后臺運行容器,并返回容器ID,也即啟動守護式容器;
-p: #端口映射,-p標志用于指定端口映射,它允許你將容器內的端口映射到鏡像端口#映射有以下格式
#      -p ip:主機端口:容器端口 
#      -p 主機端口:容器端口(常用)
#      -p 容器端口
#      容器端口      
-P: #隨機端口映射;
-w: #指定命令執行時,所在的路徑
#例:docker run -d --name nignx -p 80:80 nginx
#后臺運行最新版本nginx ,容器名字定義為nginx,鏡像,容器端口都是80docker stop		#停止容器
docker kill		#強停容器
docker ps		#查看運行中的容器
docker ps -a	#查看所有容器
docker rm 		#刪除容器(只能刪除已經停止的容器)
docker rm -f	#刪除容器(可以刪除運行中的容器)
docker start	#啟動容器
docker restart	#重啟容器
docker stats	#查看容器狀態(cpu情況等)
docker logs		#查看容器日志
docker logs -f	#查看日志,持續輸出日志
docker logs --tail number	#查看number條數量的日志
docker top		#查看容器進程信息
docker exec -it container bash		#進入容器內部
docker attach container			#進入容器正在執行的終端
docker cp container:容器文件路徑 主機路徑		#從容器內復制文件到主機
docker inspect			#查看容器詳情
docker network			#自定義網絡

數據卷(volume)是一個虛擬目錄,容器目錄與宿主機目錄之間映射的橋梁。
宿主機文件系統目錄 /var/lib/docker/volumes

數據卷相關命令

docker volume --help			#查看幫助信息
docker volume create		#創建數據卷
docker volume ls			#查看所有數據卷
docker volume rm			#刪除指定數據卷
docker volume inspect 卷名		#查看某個數據卷的詳情
docker volume prune			#清除數據卷(未使用的數據卷)
docker -v 本地目錄:容器目錄	#具名掛載,完成本地目錄掛載
#例 docker -v /mysql:/var/lib/mysql		掛在到mysql目錄下(目錄掛載) **目錄掛載必須以"/"或者"./"開頭**
#	docker -v mysql:/var/lib/mysql		會被識別為數據卷掛載,數據卷為mysql(卷映射)

Dockerfile制作鏡像

FROM指定鏡像基礎環境
RUN運行自定義命令
CMD

容器啟動命令或參數

LABEL自定義標簽
EXPOSE指定暴露端口
ENV環境變量
ADD添加文件到鏡像
COPY復制文件到鏡像
ENTRYPOINT容器固定啟動命令
VOLUME數據卷
USER指定用戶和用戶組
WORKDIR指定默認工作目錄
ARG指定構建參數

#簡單Dockerfile例子
FROM    openjdk:17
LABEL   author=Olivia
COPY    app.jar    /app.jar
EXPOSE  8080
ENTRYPOINT    ["java","-jar","/app.jar"]
docker build -f Dockerfile -t myjavaapp:v1.0 .        #構建鏡像,最后的.不可缺少

DockerCompose

用來批量管理容器的工具

docker-compose.yaml-------用來定義一組相關聯的應用容器

頂級元素

name

services? ? ? ? ? ? ?

networks

volumes

configs

sercets

常用命令:

docker compose -f yaml文件名 up -d        #創建和運行容器 默認會查找compose.yaml文件,也可以指定具體文件名
docker compose -f yaml文件名 down         #停止并刪除所有由up子命令啟動的服務

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

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

相關文章

2025 年 PHP 常見面試題整理以及對應答案和代碼示例

2025 年 PHP 常見面試題整理以及對應答案和代碼示例 PHP 面試通常會考察基礎知識&#xff08;數組、OOP、錯誤處理&#xff09;和現代特性&#xff08;類型、屬性、枚舉&#xff09;。關鍵是要展示你能寫出簡潔、可預測的代碼&#xff0c;同時了解 PHP 8 的新變化。 我整理了…

系統性掌握 LangChain 的核心概念體系

二階段&#xff1a;系統性掌握 LangChain 的核心概念體系 需要意識到&#xff1a;零散學習概念 ≠ 構建能力。 我們需要的不是“知道這些詞”&#xff0c;而是“理解它們如何構成一個系統”。&#x1f3af; 目標在 4 周內&#xff0c;通過刻意練習和漸進式學習&#xff0c;系統…

【C++實戰⑩】C++ 引用:解鎖高效編程的密鑰

目錄一、引用的概念與定義1.1 引用的本質與語法規則1.2 引用與指針的區別與聯系1.3 引用的初始化與使用注意事項二、引用作為函數參數實戰2.1 引用參數的傳遞特點與優勢2.2 引用參數實現函數修改外部數據2.3 引用參數與值參數、指針參數的對比三、引用作為函數返回值實戰3.1 引…

微信支付回調成功通知到本地

微信支付回調成功通知到本地最近在本地調試微信支付需要用到支付成功回調&#xff0c;借助工具frp把微信支付成功回調通知到本地進行調試具體如下&#xff1a; 安裝frp1.安裝文檔&#xff1a;https://gofrp.org/zh-cn/docs/setup/服務端準備一臺公網上能正常訪問的服務器&#…

Java的jdk21與 Go語言對比

JDK 21 的發布&#xff0c;特別是虛擬線程&#xff08;Virtual Threads&#xff09; 的引入&#xff0c;確實讓 Java 在高并發領域的表現有了質的飛躍&#xff0c;也讓大家更頻繁地將其與 Go 這類天生并發友好的語言進行比較。下面我將從幾個關鍵維度對它們進行梳理和對比&…

問答精選 | 《CATIA MODSIM SmartCAE 帶練營》第三期 —— 設計迭代全流程直播答疑匯總(上)

目錄 前情提要 ?點擊觀看完整版直播回放? 概念問題 Q1.MODSIM是什么&#xff1f; Q2.SmartCAE是CATIA升級以后的新功能嘛&#xff1f;在哪個模塊&#xff1f; 軟\硬件適配問題 Q1.我們公司用的是V5&#xff0c;能用SmartCAE嗎&#xff1f; Q2.我們公司的V5是2018版&a…

【進階OpenCV】 光流估計--描繪運動物體軌跡

目錄 前言 一、光流估計的核心原理 二、光流估計的計算流程 1. 特征提取&#xff1a;找到 “好跟蹤” 的點 2. 光流計算&#xff1a;匹配幀間特征點 三、完整實現步驟&#xff08;附代碼&#xff09; 1. 環境準備 2. 步驟 1&#xff1a;處理視頻第一幀 3. 步驟 2&#…

InnoDB ACID實現:數據庫可靠性的核心秘密

這段內容出自 MySQL 官方文檔第 17.2 節《InnoDB 與 ACID 模型》&#xff0c;深入解釋了 InnoDB 是如何實現 ACID 特性 的。ACID 是數據庫系統中最核心的設計原則&#xff0c;確保數據在各種異常情況下依然可靠、一致、安全。 我們來逐部分解析并通俗理解&#xff1a;&#x1f…

CoolUtils Total Excel Converter:全能的 Excel 文件轉換工具

一、軟件簡介 CoolUtils Total Excel Converter 是一款功能強大的 Excel 文件轉換工具&#xff0c;專為高效處理和轉換 Excel 文件而設計。它支持將 Excel 文件&#xff08;包括 XLS 和 XLSX 格式&#xff09;轉換為多種常見的文件格式&#xff0c;如 PDF、CSV、HTML、TXT 等&…

告別靜態圖譜!TextSSL如何用「稀疏學習」實現更智能的文檔分類?

文章鏈接&#xff1a;https://mp.weixin.qq.com/s/danmd9lSQpmck4tVsM37bQ 今天分享一篇將圖神經網絡應用于文本分類的創新模型——TextSSL。在傳統的文檔理解中&#xff0c;模型往往難以同時捕捉文本的局部句法細節和全局語義關聯。針對這一挑戰&#xff0c;TextSSL提出了一種…

開源商城mall項目功能評估與優化建議

項目地址&#xff1a;https://github.com/macrozheng/mall 開源項目是大多數程序員用來練手的最好途徑&#xff0c;但是技術面和技術深度同樣重要。一個商城項目能夠稱之為商城不光有基礎的商品后臺管理、移動端、支付管理&#xff0c;要打造一個全鏈路的生態系統&#xff0c;…

我的頁面開發

我的頁面開發 后端data\me_page.js我的頁面靜態數據module.exports () > {return {superCard: {beanCount: 1555,tips: "下單得5倍吃貨豆,兌專享紅包",},cards: [{label: "常用功能",size: 30,items: [{iconUrl: "/imgs/me_page/coupang.png"…

Java Swagger2 能顯示頁面但看不到一個接口

反復檢查之后&#xff0c;發現問題出在的代碼如下&#xff1a; ApiModelProperty(value "材料鏈接地址", example "{ApiHost}/storage/test.pdf")private String url; 結論&#xff1a;example的值包括了 { 和 } &#xff0c;導致網頁解析的JSON數據失敗…

2025年- H143-Lc344. 反轉字符串(字符串)--Java版

1.題目2.思路 方法一&#xff1a;比如有5個元素 s[0],s[1],s[2],s[3],s[4] 反轉之后對應 s[4],s[3],s[2],s[1],s[0] 所以s[0]s[4], s[1]s[3] s[i]s[n-1-i] 方法2:雙指針 left0,rights.length-1; 當left<right的時候&#xff0c;交換兩個元素的位置&#xff0c;左指針左移&am…

微服務高可用流程講解

如何理解從前端nginx到后端微服務高可用架構問題&#xff0c;下面從nginx、gateway、nacos、各個服務節點的角度講解下應該如何進行高可用&#xff0c;比如nginx是前端向后端進行的負載均衡&#xff0c;也相當于均衡地向各個gateway網關進行請求&#xff0c;再由gateway網關拉取…

留個檔,Unity,Animation控制相機,出現抖動的問題記錄

起因是項目用了一段高度自定義的過程復雜的相機Animation&#xff0c;來控制虛擬相機位移旋轉。 發現在不同的電腦上&#xff0c;出現了不同程度的抖動。 搜索過程中&#xff0c;發現關鍵詞&#xff1a;World Origin Rebasing。 Unity 世界坐標使用 float&#xff08;單精度浮點…

組合對沖策略(外匯版)

在復雜多變的外匯市場中&#xff0c;投資者常常面臨著匯率波動帶來的風險。為了降低這種風險&#xff0c;對沖策略成為了一種有效的風險管理工具。以下將詳細介紹三種組合對沖策略&#xff0c;它們分別是基于多貨幣正負相關對沖、區域性貨幣對沖以及全日元貨幣對沖的策略。①多…

GPT-5-Codex 正式發布:邁向真正的“自主編程”時代

在 Anthropic Claude 近期遭遇爭議的同時&#xff0c;OpenAI 推出了其編程領域的王牌產品——GPT-5-Codex。這并非簡單的模型升級&#xff0c;而是基于 GPT-5 專為“自主編程”&#xff08;Autonomous Programming&#xff09;場景深度優化的專用版本&#xff0c;標志著 AI 編程…

java面試:了解redis的集群么,怎么通過redis的集群來實現redis的高可用?

我們知道&#xff0c;為了幫助數據庫緩解高并發的壓力&#xff0c;我們會上reids緩存幫助數據庫分攤&#xff0c;雖說常見場景的并發量還不足以讓redis宕機&#xff0c;但假設出現了極高的并發場景&#xff0c;redis依舊是有宕機的可能的&#xff0c;畢竟單點部署的redis容易出…

氧氣科技亮相GDMS全球數字營銷峰會,分享AI搜索時代GEO新觀

2025年9月16日&#xff0c;全球數字營銷領域的年度盛會——GDMS&#xff08;Global Digital Marketing Summit&#xff09;在上海國家會展中心盛大舉行。作為品牌數字化轉型的風向標&#xff0c;本屆峰會匯聚來自全球的CEO、CMO、CDO及營銷領域高管&#xff0c;共同探討AI驅動下…