您好,登錄后才能下訂單哦!
1.Dockerfile中的每個指令都會創建一個新的鏡像層
2.鏡像層將被緩存和復用
3.當Dockerfile的指令修改了,復制的文件變化了,或者構建鏡像時指定的變量不同了,對應的鏡像層緩存就會失效
4.某一層的鏡像緩存失效之后,它之后的鏡像層緩存都會失效
5.鏡像層是不可變的,如果在某一層中添加一個文件,然后在下一層中刪除它,則鏡像中依然會包含該文件
是應用發布的標準格式
可支撐一個Docker容器的運行
基于已有鏡像創建
基于本地模板創建
基于Dockerfile創建
將容器里面運行的程序及運行環境打包生成新的鏡像
docker commit [選項] 容器ID/名稱 倉庫名稱:[標簽]
選項:
-m說明信息
-a作者信息
-p生成過程中停止容器的運行
通過導入操作系統模板文件生成新的鏡像
使用wget命令導,入為本地鏡像
Wqet http://download.openvz.org/template/ precreated/debian-7.0-x86-minimal.tar.gz
導入成功后可查看本地鏡像信息
docker images |grep new
Dockerfile是由一組指令組成的文件
Dockerfile結構四部分
基礎鏡像信息
維護者信息
鏡像操作指令
容器啟動時執行指令
使用Dockerfile創建鏡像并在容器中運行
指令 | 含義 |
---|---|
FROM鏡像 | 指定新鏡像所基于的鏡像,第一條指令必須為FROM指令,每創建一個鏡像就需要一條FROM指令 。 |
MAINTAINER名字 | 說明新鏡像的維護人信息 |
RUN命令 | 在所基于的鏡像上執行命令,并提交到新的鏡像中 |
CMD[“要運行的程序”,”參數1”,”參數2”] | 指令啟動容器時要運行的命令或者腳本,Dockerfile只能有一條CMD命令,如果指定多條則只能最后一條被執行 |
EXPOSE端口號 | 指定新鏡像加載到Docker時要開啟的端口 |
ENV環境變量 變量值 | 設置一個環境變量的值,會被后面的RUN使用 |
ADD源文件/目錄 目標文件/目錄 | 將源文件復制到目標文件,源文件要與Dockerfile位于相同目錄中, 或者是一個URL |
COPY源文件/目錄 目標文件/目錄 | 將本地主機上的文件/目錄復制到目標地點,源文件/目錄要與Dockerfile在相同的目錄中 |
VOLUME[“目錄”] | 在容器中創建一個掛載點 |
USER用戶名/UID | 指定運行容器時的用戶 |
WORKDIR路徑 | 為后續的RUN、CMD、ENTRYPOINT指定 工作目錄 |
ONBUILD命令 | 指定所生成的鏡像作為一個基礎鏡像時所要運行的命令 |
HEALTHCHECK | 健康檢查 |
#創建容器
docker create- it jasonlix/ docker- cobbler /bin/ bash
docker commit -m "new" -a "daoke" c83aee844ae0 daoke:test
docker images| grep daoke
wget http://dlownload.openvz.org/template/precreated/debian-7.0-x86-minimal.tar.gz
cat debian-7.0-x86-minimal.tar.gz| docker import - daoke:new
docker images|grep new
docker pull registry
vim /etc/dockerdaemon.json
#添加以下內容,修改地址
"insecure-registries": ["IP地址:5000"],
systemctl restart docker.service
docker create -it registry /bin/bash
docker ps -a
docker start 庫ID
#宿主機的/data/registry自動創建掛載容器中的/tmp/registry
docker run -d -p 5000:5000 -v /data/registry:/tmp/registry registry
#宿主機的/ data/registry自動創建掛載容器中的/tmp/ registry
docker run -d- P 5000:5000 -v /data/registry:/tmp/registry registry
#更改標記為192.168. 195. 128: 5000/nginx
docker tag nginx:latest IP地址:5000/nginx
#上傳
docker push IP地址: 5000/nginx
#獲取私有倉庫列表
curlI -XGET http://IP地址:5000/v2/_catalog
#顯示上傳成功
{"repositories" :["nginx"]}
#測試私有倉庫下載
docker pul1 IP地址:5000/nginx
docker run -d -P httpd:centos
docker run -d -p 49280:80 httpd: centos
docker ps -a
#創建并運行容器取名web1,端口號自動映射
docker run -itd -P --name web1 centos /bin/bash
#創建并運行容器取名web2
docker run -itd -P --name web2 --link webl:web1 centos /bin/bash
進web2容器ping web1
mkdir apache
cd apache
vim Dockerfile
#基于的基礎鏡像
FROM centos
#維護鏡像的用戶信息
MAINTAINER The porject <cloud-ops@centos.org>
#鏡像操作指令安裝apache軟件
RUN yum -y update
RUN yum -y install httpd
#開啟80端口
EXPOSE 80
#復制網站首頁文件
ADD index.html /var/www/html/index.html
#將執行腳本復制到鏡像中
ADD run.sh /run.sh
RUN chmod 755 /run.sh
#啟動容器時執行腳本
CMD ["/run.sh"]
vim run.sh
#!/bin/bash
rm -rf /run/httpd/*
exec /usr/sbin/apachectl -D FOREGROUND
echo "web test" > index.html
#生成鏡像
docker build -t httpd:centos .
#新鏡像運行容器
docker run -d -p 1216:80 httpd:centos
#測試并服務網頁
http://192.168.142.131:1216/
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。