以前使用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書》