Docker 倉(cāng)庫(kù)管理和Docker Dockerfile詳解
Docker 倉(cāng)庫(kù)管理和Docker Dockerfile
Docker 倉(cāng)庫(kù)管理
倉(cāng)庫(kù)(Repository)是集中存放鏡像的地方。以下介紹一下 Docker Hub。當(dāng)然不止 docker hub,只是遠(yuǎn)程的服務(wù)商不一樣,操作都是一樣的。
Docker Hub
目前 Docker 官方維護(hù)了一個(gè)公共倉(cāng)庫(kù) Docker Hub。
大部分需求都可以通過(guò)在 Docker Hub 中直接下載鏡像來(lái)實(shí)現(xiàn)。
注冊(cè)
在下載地址免費(fèi)注冊(cè)一個(gè) Docker 賬號(hào)。
登錄和退出
登錄需要輸入用戶名和密碼,登錄成功后,我們就可以從 docker hub 上拉取自己賬號(hào)下的全部鏡像。
$ docker login
退出
退出 docker hub 可以使用以下命令:
$ docker logout
拉取鏡像
你可以通過(guò) docker search 命令來(lái)查找官方倉(cāng)庫(kù)中的鏡像,并利用 docker pull 命令來(lái)將它下載到本地。
以 ubuntu 為關(guān)鍵詞進(jìn)行搜索:
$ docker search ubuntu
使用 docker pull 將官方 ubuntu 鏡像下載到本地:
$ docker pull ubuntu
推送鏡像
用戶登錄后,可以通過(guò) docker push 命令將自己的鏡像推送到 Docker Hub。
以下命令中的 username 請(qǐng)?zhí)鎿Q為你的 Docker 賬號(hào)用戶名。
$ 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è)用來(lái)構(gòu)建鏡像的文本文件,文本內(nèi)容包含了一條條構(gòu)建鏡像所需的指令和說(shuō)明。
使用 Dockerfile 定制鏡像
這里僅講解如何運(yùn)行 Dockerfile 文件來(lái)定制一個(gè)鏡像,具體 Dockerfile 文件內(nèi)指令詳解,將在下一節(jié)中介紹,這里你只要知道構(gòu)建的流程即可。
1、下面以定制一個(gè) nginx 鏡像(構(gòu)建好的鏡像內(nèi)會(huì)有一個(gè) /usr/share/nginx/html/index.html 文件)
在一個(gè)空目錄下,新建一個(gè)名為 Dockerfile 文件,并在文件內(nèi)添加以下內(nèi)容:
FROM nginx RUN echo '這是一個(gè)本地構(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è)本地構(gòu)建的nginx鏡像' > /usr/share/nginx/html/index.html
exec 格式:
RUN ["可執(zhí)行文件", "參數(shù)1", "參數(shù)2"] # 例如: # RUN ["./test.php", "dev", "offline"] 等價(jià)于 RUN ./test.php dev offline
注意:Dockerfile 的指令每執(zhí)行一次都會(huì)在 docker 上新建一層。所以過(guò)多無(wú)意義的層,會(huì)造成鏡像膨脹過(guò)大。例如:
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í)行會(huì)創(chuàng)建 3 層鏡像。可簡(jiǎn)化為以下格式:
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
如上,以 && 符號(hào)連接命令,這樣執(zhí)行后,只會(huì)創(chuàng)建 1 層鏡像。
開(kāi)始構(gòu)建鏡像
在 Dockerfile 文件的存放目錄下,執(zhí)行構(gòu)建動(dòng)作。
以下示例,通過(guò)目錄下的 Dockerfile 構(gòu)建一個(gè) nginx:v3(鏡像名稱(chēng):鏡像標(biāo)簽)。
$ docker build -t nginx:v3 .
以上顯示,說(shuō)明已經(jīng)構(gòu)建成功。
上下文路徑
上一節(jié)中,有提到指令最后一個(gè) . 是上下文路徑,那么什么是上下文路徑呢?
$ docker build -t nginx:v3 .
上下文路徑,是指 docker 在構(gòu)建鏡像,有時(shí)候想要使用到本機(jī)的文件(比如復(fù)制),
docker build
命令得知這個(gè)路徑后,會(huì)將路徑下的所有內(nèi)容打包。解析:由于 docker 的運(yùn)行模式是 C/S。我們本機(jī)是 C,docker 引擎是 S。實(shí)際的構(gòu)建過(guò)程是在 docker引擎下完成的,所以這個(gè)時(shí)候無(wú)法用到我們本機(jī)的文件。這就需要把我們本機(jī)的指定目錄下的文件一起打包提供給 docker 引擎使用。
如果未說(shuō)明最后一個(gè)參數(shù),那么默認(rèn)上下文路徑就是 Dockerfile 所在的位置。
注意:上下文路徑下不要放無(wú)用的文件,因?yàn)闀?huì)一起打包發(fā)送給 docker 引擎,如果文件過(guò)多會(huì)造成過(guò)程緩慢。
到此這篇關(guān)于Docker 倉(cāng)庫(kù)管理和Docker Dockerfile的文章就介紹到這了,更多相關(guān)Docker 倉(cāng)庫(kù)管理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Dockerfile構(gòu)建Redis鏡像的方法實(shí)現(xiàn)(yum方式)
- Docker利用DockerFile創(chuàng)建部署NVIDIA+PyTorch容器的詳細(xì)過(guò)程
- Dockerfile文件詳細(xì)介紹
- Dockerfile的CMD指令用法
- 利用Dockerfile文件部署php項(xiàng)目的全過(guò)程
- 使用Dockerfile實(shí)現(xiàn)容器內(nèi)部服務(wù)隨容器自啟動(dòng)的方法
- .NETCore Docker實(shí)現(xiàn)容器化與私有鏡像倉(cāng)庫(kù)管理
- Docker私有倉(cāng)庫(kù)管理和刪除本地倉(cāng)庫(kù)中的鏡像
相關(guān)文章
Docker 部署Mysql 服務(wù)和Redis 服務(wù)的方法
這篇文章主要介紹了Docker 部署Mysql 服務(wù)和Redis 服務(wù)的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-113分鐘帶你學(xué)會(huì)docker搭建帕魯服務(wù)器
幻獸帕魯已經(jīng)正式開(kāi)服,目前在線人數(shù)已經(jīng)超過(guò)7W+,很多玩家想自己創(chuàng)建服務(wù)器和朋友一起聯(lián)機(jī)游玩,本文主要介紹了3分鐘帶你學(xué)會(huì)docker搭建帕魯服務(wù)器,具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01如何解決docker-compose網(wǎng)段路由沖突,docker-compose自定義網(wǎng)絡(luò)
這篇文章主要介紹了如何解決docker-compose網(wǎng)段路由沖突,docker-compose自定義網(wǎng)絡(luò)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01docker使用alpine構(gòu)建jdk21鏡像的詳細(xì)步驟
這篇文章主要給大家介紹了關(guān)于docker使用alpine構(gòu)建jdk21鏡像的詳細(xì)步驟,鏡像中包含了應(yīng)用程序所需要的運(yùn)行環(huán)境,函數(shù)庫(kù),配置,以及應(yīng)用本身等各種文件,這些文件分層打包而成,需要的朋友可以參考下2024-03-03詳解docker pull 下來(lái)的鏡像文件存放的位置
本篇文章主要介紹了詳解docker pull 下來(lái)的鏡像文件存放的位置,具有一定的參考價(jià)值,有興趣的可以了解一下。2017-04-04docker nginx 配置文件要點(diǎn)及注意事項(xiàng)
本文介紹了Nginx的配置要點(diǎn)及注意事項(xiàng),包括訪問(wèn)靜態(tài)資源、負(fù)載均衡等,在訪問(wèn)靜態(tài)資源時(shí),可以使用root或alias指令指定路徑,本文給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2025-02-02Docker使用的個(gè)人學(xué)習(xí)總結(jié)
最近時(shí)不時(shí)會(huì)用到很多開(kāi)發(fā)工具,無(wú)奈裝了太多無(wú)用軟件,所以不想安裝太多開(kāi)發(fā)軟件在電腦上,所以想到了用docker容器來(lái)配置開(kāi)發(fā)環(huán)境適應(yīng)不同開(kāi)發(fā)內(nèi)容,這篇文章主要給大家總結(jié)了關(guān)于Docker使用的一些個(gè)人學(xué)習(xí)知識(shí)點(diǎn),需要的朋友們下面來(lái)一起看看吧。2017-06-06