作者簡介: 辭七七,目前大二,正在學(xué)習(xí)C/C++,Java,Python等
作者主頁: 七七的個人主頁
文章收錄專欄: 七七的閑談
歡迎大家點(diǎn)贊 ?? 收藏 ? 加關(guān)注哦!????
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 格式:
RUN <命令行命令>
# <命令行命令> 等同于,在終端操作的 shell 命令。
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 層鏡像??珊喕癁橐韵赂袷剑?/p>
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 所在的位置。
注意:上下文路徑下不要放無用的文件,因?yàn)闀黄鸫虬l(fā)送給 docker 引擎,如果文件過多會造成過程緩慢。文章來源:http://www.zghlxwxcb.cn/news/detail-751318.html
??關(guān)于 【Docker】Docker 倉庫管理和Docker Dockerfile的詳細(xì)講解,七七就先分享到這里了,如果你認(rèn)為這篇文章對你有幫助,請給七七點(diǎn)個贊吧,如果發(fā)現(xiàn)什么問題,歡迎評論區(qū)留言?。????文章來源地址http://www.zghlxwxcb.cn/news/detail-751318.html
到了這里,關(guān)于【Docker】Docker 倉庫管理和Docker Dockerfile的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!