一、Docker的架構
1.Docker平臺
- Docker提供了一個開發、打包、運行Application(應用)的平臺。
- Docker把應用和底層物理資源隔離開來
** 其中Docker Engine是Docker中非常重要的一個部件**
2.Docker Engine
- Docker是一個C/S架構,有server和client。
- Docker Engine包含:一個後臺進程(dockerd)、REST API Server(負責server和client通信)、CLI接口(docker)
3.Docker架構
二、Docker Image(鏡像)
1.什麼是Image?
- 文件和meta data的集合
- Image是分層的,並且每一層都可以添加改變刪除文件(軟件),成爲一個新的image
- 不同的image可以共享相同的layer
- Image本身是read-only的
2.獲取鏡像
(1)Dockerfile
Docker提供了一種文件格式Dockerfile,通過這種格式的文件我們就可以定義一個Docker鏡像,通過這個文件,我們就可以構建(build)出一個鏡像。
一個簡單的Dockerfile示例:
FROM ubuntu:14.04 -- 指定Base Image
LABEL maintainer="[email protected]" -- 標識
RUN apt-get update && apt-get install -y redis-server -- 在Base Image之上運行apt-get update和apt-get install redis-server兩條命令
EXPOSE 6379 -- 暴露端口
ENTRYPOINT ["/usr/bin/redis-server"] -- 啓動redis-server
(2)從Registry(倉庫)拉取
我們可以從遠程倉庫拉取我們需要的鏡像,同時,我們也可以將我們自己的鏡像推送到遠程倉庫上去。
示例:從Docker Hub拉取一個ubuntu 14.04的基礎鏡像:
執行命令:docker pull ubuntu:14.04
3. Docker Hub
目前Docker官方維護了一個遠程倉庫(Docker Hub),上面有一些官方維護的鏡像,我們可以從這個倉庫拉取所需要的鏡像。
4.查看本地鏡像
執行命令: docker image ls
可以看到展示了我們剛剛拉取的ubuntu鏡像。
可以看到ubuntu鏡像僅僅197MB,和我們自己本機裝一個虛擬機的大小差距很大,這是因爲鏡像是不包含Linux Kernel的,精簡了很多核心繫統文件,所以體積非常小。