Docker之建立自定義鏡像

簡單介紹

以前使用docker run或者docker pull使用了Docker Hub上面已經構建好的的鏡像,固然也能夠本身基於基礎鏡像自定義鏡像。html

 

實際操做

一、可使用docker run或者docker pull進行鏡像的拉取和運行。nginx

二、使用docker search ×××指令進行查找鏡像web

指令:sudo docker search fedoradocker


結果

這裏展現了有關fedora的鏡像,顯示了鏡像名稱,描述,星級,是否爲官方以及是否自動構建信息。apache

三、構建鏡像ubuntu

構建鏡像可使用兩個命令:服務器

(1)docker commitui

(2)docker build命令和Dockerfile文件版本控制

3.1docker commitserver

能夠將此方法看爲在以往版本控制系統裏提交變動,而後進行變動的提交便可。首先建立一個新容器,也能夠在以前容器基礎上進行修改,這裏使用已有容器進行修改。

sudo docker start suspicious_noyce

sudo docker attach suspicious_noyce

在容器內進行apache2的安裝,並但願將這個容器做爲一個web服務器來運行,因此把當前的狀態保留下來。這樣就不須要每次都建立一個容器並再次在裏面安裝Apache了。

root@d0920780bc56:/# apt-get -yqq update

root@d0920780bc56:/# apt-get -y install apache2

運行成功以後,就能夠進行提交鏡像了。以下:

指令:

sudo docker commit -m"A new custom image" -a"MNicholas" d0920780bc56 mnicholas/apache2:webserver

在docker commit命令中,首先-m選項用來制定新建立的鏡像的提交信息,同時還制定了-a選項用來列出該鏡像的做者信息。接着指定了要提交的修改過的容器的ID爲d0920780bc56(能夠經過sudo docker ps -l -q查看),最後的指定了鏡像的用戶名和倉庫名爲mnicholas/apache2:webserver,併爲該鏡像增長了一個webserver標籤。

可使用sudo docker inspect mnicholas/apache2:webserver查看鏡像的詳細信息,以下:


詳細信息

3.2Dockerfile和docker build

不推薦使用docker commit方法來構建鏡像,相反,使用被稱爲Dockerfile的定義文件和docker build命令來構建鏡像。Dockerfile使用基本的基於DSL(Domain Specific Language)語法的指令來構建一個鏡像,由於經過Dockerfile構建鏡像更具有可重複性、透明性和冪等性。一旦有了Dockerfile,就可使用docker build命令基於該Dockerfile中的指令構建一個新的鏡像。

首先建立一個Dockerfile,路徑本身熟悉便可,內容以下:

# cd Docker

# mkdir static_web

# cd static_web/

建立一個static_web目錄用來存放Dockerfile,這個目錄就是咱們的構建環境(build environment),Docker則稱此環境爲上下文(context)或者構建上下文(build context)。Docker會在構建鏡像時將構建上下文和該上下文中的文件和目錄上傳到Docker守護進程。這樣Docker守護進程就能直接訪問用戶想在鏡像中存儲的任何地阿媽、文件或者其餘數據。

# Version: 0.0.1

FROM ubuntu:18.04

MAINTAINER MNicholas "632549546@qq.com"

RUN apt-get update && apt-get install -y nginx

RUN echo 'Hi, I am in you container'  >/usr/share/nginx/html/index.html

EXPOSE 80

如此,使用以下指令進行構建鏡像:

sudo docker build -t="mnicholas/static_web" .

注意:最後的「.」不能少,不然沒法構建。


成功

3.3查看鏡像


成功

 

 

參考:

《第一本Docker書》

相關文章
相關標籤/搜索