實(shí)現(xiàn)的目標(biāo)
- 降低鏡像的部署時(shí)間
- 降低鏡像的編譯時(shí)間
- 減小鏡像的尺寸
降低鏡像的部署時(shí)間
1.首先咱們先編寫一個(gè)大的Dockerfile文件
2.其次編譯這個(gè)大的Dockerfile文件
3.查看這個(gè)編譯好的鏡像尺寸
4.使用Time命令記錄它上傳到Dockerhub和從Dockerhub下載到本地的時(shí)間
其次使用time命令記錄上傳的時(shí)間
$ time docker push cai980273879/largeapp
同樣的删咱,作者從DockerHub上拉取鏡像同樣花了很長時(shí)間渺鹦。
$ time docker pull cai980273879/largeapp
而上傳和下載取決于DockerHub與Docker宿主機(jī)之間的網(wǎng)絡(luò)罕模,如果DockerHub停機(jī)或者被墻蝠猬,都不能夠獲得穩(wěn)定的下載克懊。
為解決這個(gè)問題墓懂,我們可以通過搭建自己私有的Docker Registry進(jìn)行 鏡像性能方面的提升焰宣。
$ mkdir ~/my_registry
$ docker run -d -p 5000:5000 -v /root/my_registry:/tmp/registry registry
//運(yùn)行私有Docker Registry,它將運(yùn)行在tcp://dockerhost:5000
//默認(rèn)情況下捕仔,會(huì)將倉庫創(chuàng)建在容器的/tmp/registry目錄下匕积,可以通過 -v 參數(shù)來將鏡像文件存放在本地的指定路徑上(例如,放在本地目錄/root/my_registry下)榜跌。
</br>
$ docker tag cai980273879/largeapp dockerhostip:5000/largeapp
//打上標(biāo)簽以區(qū)分
//dockerhostip:5000即docker宿主機(jī)的ip地址:如
$ docker tag cai980273879/largeapp 192.168.1.100:5000/largeapp
</br>
$ time docker push dockerhostip:5000/largeapp
//dockerhostip:5000即docker宿主機(jī)的ip地址
//如 $ time docker push 192.168.1.100:5000/largeapp
refer:http://blog.csdn.net/delphiwcdj/article/details/43099877
refer:http://dockone.io/question/21
解決方法:
修改Docker配置文件
vim /etc/default/docker
增加以下一行
DOCKER_OPTS="$DOCKER_OPTS --insecure-registry=dockerhostip:5000"
如DOCKER_OPTS="$DOCKER_OPTS --insecure-registry=192.168.1.100:5000"
重啟Docker
sudo service docker restart
然后重啟本地registry容器
</br>
現(xiàn)在可以觀察同樣的Docker鏡像到新建的Docker Registry的速度有多快。
測(cè)試顯示:<h6>現(xiàn)在推送到Docker鏡像的速度至少是之前速度的10倍以上!!!</h6>
同樣的钓葫,先移除本地鏡像悄蕾,測(cè)試從本地Docker registry拉取Docker鏡像的性能,測(cè)試能夠很好的顯示础浮。
$ docker rmi 192.168.1.100:5000/largeapp
//其實(shí)筆者在這里發(fā)現(xiàn)了個(gè)很嚴(yán)重的問題帆调,如果刪除上面這個(gè)鏡像 同樣也會(huì)導(dǎo)致本地registry鏡像丟失,故可以將dockerhostip設(shè)置為其他主機(jī)ip地址
$ docker rmi cai980273879/largeapp
$ time docker pull dockerhostip:5000/largeapp
//dockerhostip:5000即docker宿主機(jī)的ip地址
//如 $ time docker pull 192.168.1.100:5000/largeapp
<h6>拉取Docker鏡像的速度是之前拉取速度的30倍!!!!</h6>豆同。