Docker 倉庫管理和Docker Dockerfile詳解

Docker 倉庫管理和Docker Dockerfile
Docker 倉庫管理
倉庫(Repository)是集中存放鏡像的地方。以下介紹一下 Docker Hub。當然不止 docker hub,只是遠程的服務商不一樣,操作都是一樣的。
Docker Hub
目前 Docker 官方維護了一個公共倉庫 Docker Hub。
大部分需求都可以通過在 Docker Hub 中直接下載鏡像來實現。
注冊
在下載地址免費注冊一個 Docker 賬號。
登錄和退出
登錄需要輸入用戶名和密碼,登錄成功后,我們就可以從 docker hub 上拉取自己賬號下的全部鏡像。
$ docker login

退出
退出 docker hub 可以使用以下命令:
$ docker logout
拉取鏡像
你可以通過 docker search 命令來查找官方倉庫中的鏡像,并利用 docker pull 命令來將它下載到本地。
以 ubuntu 為關鍵詞進行搜索:
$ 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 是一個用來構建鏡像的文本文件,文本內容包含了一條條構建鏡像所需的指令和說明。
使用 Dockerfile 定制鏡像
這里僅講解如何運行 Dockerfile 文件來定制一個鏡像,具體 Dockerfile 文件內指令詳解,將在下一節(jié)中介紹,這里你只要知道構建的流程即可。
1、下面以定制一個 nginx 鏡像(構建好的鏡像內會有一個 /usr/share/nginx/html/index.html 文件)
在一個空目錄下,新建一個名為 Dockerfile 文件,并在文件內添加以下內容:
FROM nginx RUN echo '這是一個本地構建的nginx鏡像' > /usr/share/nginx/html/index.html

2、FROM 和 RUN 指令的作用
FROM:定制的鏡像都是基于 FROM 的鏡像,這里的 nginx 就是定制需要的基礎鏡像。后續(xù)的操作都是基于 nginx。
RUN:用于執(zhí)行后面跟著的命令行命令。有以下倆種格式:
shell 格式:
FROM nginx RUN echo '這是一個本地構建的nginx鏡像' > /usr/share/nginx/html/index.html
exec 格式:
RUN ["可執(zhí)行文件", "參數1", "參數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 層鏡像。
開始構建鏡像
在 Dockerfile 文件的存放目錄下,執(zhí)行構建動作。
以下示例,通過目錄下的 Dockerfile 構建一個 nginx:v3(鏡像名稱:鏡像標簽)。
$ docker build -t nginx:v3 .

以上顯示,說明已經構建成功。
上下文路徑
上一節(jié)中,有提到指令最后一個 . 是上下文路徑,那么什么是上下文路徑呢?
$ docker build -t nginx:v3 .
上下文路徑,是指 docker 在構建鏡像,有時候想要使用到本機的文件(比如復制),
docker build命令得知這個路徑后,會將路徑下的所有內容打包。解析:由于 docker 的運行模式是 C/S。我們本機是 C,docker 引擎是 S。實際的構建過程是在 docker引擎下完成的,所以這個時候無法用到我們本機的文件。這就需要把我們本機的指定目錄下的文件一起打包提供給 docker 引擎使用。
如果未說明最后一個參數,那么默認上下文路徑就是 Dockerfile 所在的位置。
注意:上下文路徑下不要放無用的文件,因為會一起打包發(fā)送給 docker 引擎,如果文件過多會造成過程緩慢。
到此這篇關于Docker 倉庫管理和Docker Dockerfile的文章就介紹到這了,更多相關Docker 倉庫管理內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Docker在Windows環(huán)境的搭建和使用詳解
這篇文章主要介紹了Docker在Windows環(huán)境的搭建和使用,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-03-03
Docker容器中Elasticsearch內存不足問題的排查與解決方案
在使用Docker運行Elasticsearch(ES)時,可能會遇到內存不足的問題,導致ES無法啟動,以下是一次完整的排查和解決過程,需要的朋友可以參考下2025-08-08
docker-compose 部署 Apollo 自定義環(huán)境的詳細教程
本篇文章給大家介紹docker-compose 部署 Apollo 自定義環(huán)境的詳細教程,而其中Config Service提供配置的讀取、推送等功能,服務對象是Apollo客戶端,對docker部署Apollo環(huán)境相關知識感興趣的朋友一起看看吧2021-06-06
使用 docker部署tomcat并接入skywalking的使用
這里主要介紹了使用 docker 部署 tomact 并接入 skywalking 的使用,因為在網上并沒有查到太多相關的信息,所以這里記錄下來,需要對有需求的小伙伴提供一些幫助2021-04-04

