registry --------->倉庫 ----------------->映象
registry --------->倉庫 ----------------->映象
本地映象都儲存在宿主機下 :
/var/lib/docker/containers
映象從倉庫下載下來.映象儲存在倉庫中,而倉庫存在於Registry中.
Docker Hub 中有兩種型別的倉庫:
使用者庫:
使用者倉庫的映象都是有docker使用者建立的;
使用者倉庫的命名由使用者名稱和倉庫名兩部分組成,如scrapinghub/splash
頂層倉庫
頂層倉庫則是由docker內部人員來管理的;
頂層倉庫只包含倉庫名的部分,如centos倉庫.
頂層倉庫中的映象時架構良好,安全且是最新的.
用do…
docker使用
1.拉取映象
docker pull centos
1
2.從centos映象 建立一個容器
docker run -i -t centos /bin/bash
1
3.用Dockerfile構建映象
建立一個包含Dockerfile檔案,Docker在建立映象構建上下文,並將該檔案所在目錄下的所有檔案上傳到docker守護程序.
touch /root/docker_demo/Dockerfile
1
構建映象的執行流程:
Docker從基礎映象執行一個容器
執行一條指令,對容器做出修改
執行類似 docker commit的操作,提交一個新的映象層
Docer再基於剛提交的映象執行一個容器
執行Dockerfile中的下一條指令,直到所有指令都執行完畢
# 示例
# version: 0.0.1
# 每條指令必須大寫如FROM
# 執行順序從上到下執行
# 每條指令都會建立一個新的映象並對映象進行提交
FROM ubuntu:14.04 # 第一條指令都應該是FROM,FROM指令指定一個已經存在的映象,後續指令都基於該映象進行,這個映象稱為基礎映象
#MAINTAINER James Turnbull "www.gcyl152.com
RUN apt-get update #在當前映象中執行指定命令,跟新倉庫
RUN apt-get install -y nginx www.michenggw.com # 當前映象中安裝nginx
#RUN echo "Hi,I am www.meiwanyule.cn in your container' /usr/share/nignx/html/index.html # 建立html檔案
EXPOSE 80 # 告訴Docker該容器內的應用程式將會使用容器的指定埠80,可以指定多個EXPOSE指令 來向外部公開多個埠
# EXPOSE 指令可以用來幫助多個容器連結
根據Dockerfile構建映象
docker build -t='psd/test:v1' . # -t設定倉庫 名字和名稱 v1 為標籤
1
Docker Image的釋出
方法1 Save Image To TarBall 儲存為tar包
docker save to -o centos-myname-nginx.tar centos:nginx
# centos-myname-nginx.tar表示匯出映象的名字
# centos:nginx 表示原來映象的名字
docker load -i centos-myname-nginx.tar # 表示匯入本地映象
方法2 Push Image To Docker Hub
# 步驟1:註冊一個賬號 https://hub.docker.com/
# 步驟2:登入
docker login -u userabc -p abc-123 -e [email protected] # -u 使用者名稱 -p 密碼 -e 電子郵件
# 步驟3:上傳映象
docker pysh centos:nginx
# 步驟4:下載映象
docker pull userabc/centos:nginx
docker run -d -p 80:80 userabc/centos /bin/bash -c /usr/local/bin/star.sh # -p 物理機的80埠:容器的例項的80,