Docker 倉庫管理和Docker Dockerfile詳解
Docker 倉庫管理和Docker Dockerfile
Docker 倉庫管理
倉庫(Repository)是集中存放鏡像的地方。以下介紹一下 Docker Hub。當(dāng)然不止 docker hub,只是遠(yuǎn)程的服務(wù)商不一樣,操作都是一樣的。
Docker Hub
目前 Docker 官方維護(hù)了一個公共倉庫 Docker Hub。
大部分需求都可以通過在 Docker Hub 中直接下載鏡像來實(shí)現(xiàn)。
注冊
在下載地址免費(fèi)注冊一個 Docker 賬號。
登錄和退出
登錄需要輸入用戶名和密碼,登錄成功后,我們就可以從 docker hub 上拉取自己賬號下的全部鏡像。
$ docker login
退出
退出 docker hub 可以使用以下命令:
$ docker logout
拉取鏡像
你可以通過 docker search 命令來查找官方倉庫中的鏡像,并利用 docker pull 命令來將它下載到本地。
以 ubuntu 為關(guān)鍵詞進(jìn)行搜索:
$ docker search ubuntu
使用 docker pull 將官方 ubuntu 鏡像下載到本地:
$ docker pull ubuntu
推送鏡像
用戶登錄后,可以通過 docker push 命令將自己的鏡像推送到 Docker Hub。
以下命令中的 username 請?zhí)鎿Q為你的 Docker 賬號用戶名。
$ docker tag ubuntu:18.04 username/ubuntu:18.04 $ docker image ls REPOSITORY TAG IMAGE ID CREATED ... ubuntu 18.04 275d79972a86 6 days ago ... username/ubuntu 18.04 275d79972a86 6 days ago ... $ docker push username/ubuntu:18.04 $ docker search username/ubuntu NAME DESCRIPTION STARS OFFICIAL AUTOMATED username/ubuntu
Docker Dockerfile
什么是 Dockerfile?
Dockerfile 是一個用來構(gòu)建鏡像的文本文件,文本內(nèi)容包含了一條條構(gòu)建鏡像所需的指令和說明。
使用 Dockerfile 定制鏡像
這里僅講解如何運(yùn)行 Dockerfile 文件來定制一個鏡像,具體 Dockerfile 文件內(nèi)指令詳解,將在下一節(jié)中介紹,這里你只要知道構(gòu)建的流程即可。
1、下面以定制一個 nginx 鏡像(構(gòu)建好的鏡像內(nèi)會有一個 /usr/share/nginx/html/index.html 文件)
在一個空目錄下,新建一個名為 Dockerfile 文件,并在文件內(nèi)添加以下內(nèi)容:
FROM nginx RUN echo '這是一個本地構(gòu)建的nginx鏡像' > /usr/share/nginx/html/index.html
2、FROM 和 RUN 指令的作用
FROM:定制的鏡像都是基于 FROM 的鏡像,這里的 nginx 就是定制需要的基礎(chǔ)鏡像。后續(xù)的操作都是基于 nginx。
RUN:用于執(zhí)行后面跟著的命令行命令。有以下倆種格式:
shell 格式:
FROM nginx RUN echo '這是一個本地構(gòu)建的nginx鏡像' > /usr/share/nginx/html/index.html
exec 格式:
RUN ["可執(zhí)行文件", "參數(shù)1", "參數(shù)2"] # 例如: # RUN ["./test.php", "dev", "offline"] 等價于 RUN ./test.php dev offline
注意:Dockerfile 的指令每執(zhí)行一次都會在 docker 上新建一層。所以過多無意義的層,會造成鏡像膨脹過大。例如:
FROM centos RUN yum -y install wget RUN wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" RUN tar -xvf redis.tar.gz
以上執(zhí)行會創(chuàng)建 3 層鏡像。可簡化為以下格式:
FROM centos RUN yum -y install wget \ && wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" \ && tar -xvf redis.tar.gz
如上,以 && 符號連接命令,這樣執(zhí)行后,只會創(chuàng)建 1 層鏡像。
開始構(gòu)建鏡像
在 Dockerfile 文件的存放目錄下,執(zhí)行構(gòu)建動作。
以下示例,通過目錄下的 Dockerfile 構(gòu)建一個 nginx:v3(鏡像名稱:鏡像標(biāo)簽)。
$ docker build -t nginx:v3 .
以上顯示,說明已經(jīng)構(gòu)建成功。
上下文路徑
上一節(jié)中,有提到指令最后一個 . 是上下文路徑,那么什么是上下文路徑呢?
$ docker build -t nginx:v3 .
上下文路徑,是指 docker 在構(gòu)建鏡像,有時候想要使用到本機(jī)的文件(比如復(fù)制),
docker build
命令得知這個路徑后,會將路徑下的所有內(nèi)容打包。解析:由于 docker 的運(yùn)行模式是 C/S。我們本機(jī)是 C,docker 引擎是 S。實(shí)際的構(gòu)建過程是在 docker引擎下完成的,所以這個時候無法用到我們本機(jī)的文件。這就需要把我們本機(jī)的指定目錄下的文件一起打包提供給 docker 引擎使用。
如果未說明最后一個參數(shù),那么默認(rèn)上下文路徑就是 Dockerfile 所在的位置。
注意:上下文路徑下不要放無用的文件,因為會一起打包發(fā)送給 docker 引擎,如果文件過多會造成過程緩慢。
到此這篇關(guān)于Docker 倉庫管理和Docker Dockerfile的文章就介紹到這了,更多相關(guān)Docker 倉庫管理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker 部署Mysql 服務(wù)和Redis 服務(wù)的方法
這篇文章主要介紹了Docker 部署Mysql 服務(wù)和Redis 服務(wù)的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11如何解決docker-compose網(wǎng)段路由沖突,docker-compose自定義網(wǎng)絡(luò)
這篇文章主要介紹了如何解決docker-compose網(wǎng)段路由沖突,docker-compose自定義網(wǎng)絡(luò)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01docker使用alpine構(gòu)建jdk21鏡像的詳細(xì)步驟
這篇文章主要給大家介紹了關(guān)于docker使用alpine構(gòu)建jdk21鏡像的詳細(xì)步驟,鏡像中包含了應(yīng)用程序所需要的運(yùn)行環(huán)境,函數(shù)庫,配置,以及應(yīng)用本身等各種文件,這些文件分層打包而成,需要的朋友可以參考下2024-03-03docker nginx 配置文件要點(diǎn)及注意事項
本文介紹了Nginx的配置要點(diǎn)及注意事項,包括訪問靜態(tài)資源、負(fù)載均衡等,在訪問靜態(tài)資源時,可以使用root或alias指令指定路徑,本文給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2025-02-02