簡單介紹
之前使用docker run或者docker pull使用了Docker Hub上面已經構建好的的鏡像,當然也可以自己基於基礎鏡像自定義鏡像。
實際操作
1、可以使用docker run或者docker pull進行鏡像的拉取和運行。
2、使用docker search ×××指令進行查找鏡像
指令:sudo docker search fedora
這里展示了有關fedora的鏡像,顯示了鏡像名稱,描述,星級,是否為官方以及是否自動構建信息。
3、構建鏡像
構建鏡像可以使用兩個命令:
(1)docker commit
(2)docker build命令和Dockerfile文件
3.1docker commit
可以將此方法看為在以往版本控制系統里提交變更,然后進行變更的提交即可。首先創建一個新容器,也可以在之前容器基礎上進行修改,這里使用已有容器進行修改。
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書》
