docker如何查詢鏡像版本信息
docker查詢鏡像版本信息
1. 官網(wǎng)查詢
訪問https://hub.docker.com/搜索mysql
選擇第一個,然后點擊tag
2. curl 訪問url
docker search mysql
curl https://registry.hub.docker.com/v1/repositories/mysql/tags\ | tr -d '[\[\]" ]' | tr '}' '\n'\ | awk -F: -v image='mysql' '{if(NR!=NF && $3 != ""){printf("%s:%s\n",image,$3)}}'
什么是docker
Docker 是一個開源的應用容器引擎,是虛擬化的一種輕量級替代技術。Docker 可以讓開發(fā)者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然后發(fā)布到任何流行的 Linux 機器上,也可以實現(xiàn)虛擬化。
容器是完全使用沙箱機制,相互之間不會有任何接口,開銷很低。docker解決了服務器昂貴的問題,生產(chǎn)環(huán)境和測試環(huán)境不一致的問題。
什么要使用docker而不使用虛擬機
1).虛擬機的缺點
(1).資源占用多:虛擬機運行需要大量的內(nèi)存、硬盤和CPU,而且是獨占這些資源
(2).啟動慢:虛擬機也是個操作系統(tǒng),啟動很慢
2).docker優(yōu)點
(1).體積小、占用資源少
(2).啟動快:docker是個容器,是個進程,既然是進程所以啟動比虛擬機(操作系統(tǒng))快
(3).進程隔離:在一臺服務器上可以部署多個docker容器,而且互不干擾
(4).遷移輕松:docker可以制作鏡像進行遷移,非常容易
docker有什么用
1).搭建微服務環(huán)境:一個服務器可以安裝多個容器,實現(xiàn)微服務,并且降低服務器成本
2).降低服務器成本:在少量的服務器上可以通過docker安裝多個容器,不用購買多個服務器
3).提供一次性的環(huán)境:docker可以將運行項目所需要的資源、環(huán)境全部集中打包在一個鏡像內(nèi),無需再去配置搭建項目運行所需要的資源和環(huán)境(無需重復配置),有利于測試、開發(fā)和部署
docker基本概念
1).image(鏡像):Docker 鏡像可以看作是一個特殊的文件系統(tǒng),提供了容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些為運行時準備的一些配置參數(shù)(環(huán)境變量、端口等),但是鏡像在構建之后就不會被改變。
2).Container(容器):Docker 容器是一個開源的應用容器引擎,讓開發(fā)者可以以統(tǒng)一的方式打包他們的應用以及依賴包到一個可移植的容器中,然后發(fā)布到任何安裝了docker引擎的服務器上,也可以實現(xiàn)虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口(類似 iPhone 的 app)。幾乎沒有性能開銷,可以很容易地在機器和數(shù)據(jù)中心中運行。
3).Dockerfile :Dockerfile是一個指令的集合文件,可以利用Dockerfile 制作一個鏡像
docker基本命令
1).查詢鏡像
docker search 鏡像名稱
2).拉取鏡像
docker pull 鏡像名稱
3).啟動容器(以tomcat作為實例)
docker run -d --name fist_tomcat --privileged=true -e TZ="Asia/Shanghai" -v /etc/localtime:/etc/localtime -p 8081:8080 docker.io/tomcat
-d
表示以“守護模式”執(zhí)行/root/run.sh腳本,此時 Tomcat 控制臺不會出現(xiàn)在輸出終端上。-p
表示宿主機(8081)與容器的端口映射(8080,Tomcat容器固定的端口為8080,必須映射到8080)–name
表示容器名稱,用一個有意義的名稱命名即可。-v
表示需要將本地哪個目錄掛載到容器中,格式:-v <宿主機目錄>:<容器目錄>-e
運行上海時區(qū)格式–privileged=true
開啟特權,可以設置容器里的內(nèi)核參數(shù)-e TZ=“Asia/Shanghai”
-v /etc/localtime:/etc/localtime
都是用來解決容器時區(qū)的問題
Dockerfile 基本命令
1).FROM 基礎驚喜
:基于那個鏡像作為基礎去構建新的鏡像
2).COPY 源文件 目標目錄
:復制指令,從上下文目錄中復制文件或者目錄到容器里指定路徑
3).ADD 源文件 目標目錄
:和COPY基本一樣,但是ADD會自動解壓壓縮包
4).RUN
:執(zhí)行命令
5).CMD
:執(zhí)行命令(和RUN類似,但二者運行的時間點不同,CMD 在docker run 時運行,RUN 是在 docker build)
(1).注意:在執(zhí)行docker run命令后,CMD命令指定的程序會被docker run后面的程序所覆蓋
(2).注意:如果 Dockerfile 中如果存在多個 CMD 指令,僅最后一個生效
6).ENTRYPOINT
:類似于CMD,但是ENTRYPOINT的指令參數(shù)不會被docker run后面的指令所覆蓋
7).ENV
:設置環(huán)境變量
8).VOLUME 系統(tǒng)目錄 docker目錄
:掛載目錄,類似于-V
9).EXPOSE 8080
:聲明端口
10).WORKDIR
:類似于cd命令,進入那個文件夾
運行Dockerfile命令:
docker build -t 容器名稱:版本 .
.
是上下文路徑,也就是dockerFile所在的目錄
docker build -t tomcat:v1.3 .
Dockerfile示例
FROM tomcat:8.5.38-jre8 ARG JAR_PATH=./target #1.刪除ROOT文件夾,避免war包不解壓,[2,3]指定時區(qū) RUN rm -rf /usr/local/tomcat/webapps/ROOT \ && /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && echo 'Asia/Shanghai' >/etc/timezone ADD ${JAR_PATH}/*.war /usr/local/tomcat/webapps/ROOT.war CMD ["/usr/local/tomcat/bin/catalina.sh", "run"] EXPOSE 8080
總結
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Docker中容器數(shù)據(jù)卷(Data Volume)和數(shù)據(jù)管理詳解
本文主要給大家介紹了關于Docker中容器數(shù)據(jù)卷(Data Volume)和數(shù)據(jù)管理的相關資料,文中介紹的很詳細,對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。2017-02-02Spring Boot應用通過Docker發(fā)布部署的流程分析
將Spring Boot項目部署到docker中有兩種方法,手動部署和插件部署,本文通過實例代碼介紹了idea創(chuàng)建spring boot項目的詳細過程,感興趣的朋友一起看看吧2021-09-09Docker跨服務器通信Overlay解決方案(上)之 Consul單實例
這篇文章主要介紹了Docker跨服務器通信Overlay解決方案(上)之 Consul單實例,本文通過場景分析實例代碼相結合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-12-12