最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker鏡像壓縮與優(yōu)化操作

 更新時間:2020年11月26日 16:18:41   作者:Hello-BigData  
這篇文章主要介紹了Docker鏡像壓縮與優(yōu)化操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

現(xiàn)如今docker如此受人追捧,主要是因為它的輕量化、可以快速部署以及資源的利用。但是一個docker images質量的好與壞,主要取決于Dockerfile編寫的質量。同樣功能的鏡像,但是不同的Dockerfile build出來的鏡像大小是不一樣的,這是因為docker是由一層一層的只讀層累積起來的,而這每一層就是Dockerfile中的每一條指令,所以Docker image的大小完全取決于Dockerfile中的每條指令生成的中間層的大小,

下面我們來舉一個小例子來詳細說明dockerimage的形成。

我們有一個Dockerfile:

FROM Ubuntu:14.04
ADD run.sh /
VOLUME /data
CMD [“./run.sh”]

這個簡單的Dockerfile主要做的事情是:基于Ubuntu:14.04系統(tǒng)將run.sh放在根目錄下,設置卷掛載點,然后在image啟動的時候run腳本run.sh。

下圖就是形成的docker image:

很明顯,由圖我們可以看到,四條指令分別形成四個層,假設Ubuntu:14.04是150MB,run.sh是1MB的話,那么FROM Ubuntu:14.04層的大小就是150MB,ADD run.sh /層的大小即為1MB,而VOLUME /data層和CMD [“./run.sh”]由于沒有加入文件等數(shù)據,也沒有在系統(tǒng)中生成數(shù)據,所以該層的大小為0。

所以整個image的大小就是151MB。在知道了docker image生成的原理之后,下面我們就來聊一下docker鏡像的優(yōu)化與壓縮。

需要說明的一點就是:層數(shù)的多少在某些情況下是不會決定image的大小的,只有當Dockerfile中出現(xiàn):

RUN yum install ***

RUN yum uninstall ***

的時候鏡像是可以壓縮優(yōu)化的,因為上面這兩句是安裝一個工具,然后卸載掉,正常情況下我們感覺這樣一安裝一卸載大小就為0了,但是在docker image中不是這樣的,RUN yum uninstall ***這一層只能是令上一層不可見,但是上一層的大小是不會變化的,所以,如果想達到0的效果,我們就需要將這兩層壓縮成一層,也就是這樣寫:

RUN yum install *** && \

yumuninstall ***

這樣就會達到壓縮鏡像的效果。

所以,壓縮鏡像主要有兩點:

1、選擇一個較小的原鏡像,也就是FROM后面的那個鏡像盡量要小。

2、根據實際情況對Dockerfile中的層進行合并,具體情況就是如上述所說的情況,要知道并不是隨便合并層就會達到效果的。

補充知識:如何將anaconda+jupyter build成docker鏡像

最近由于業(yè)務的需求,要build一個jupyter的image來提供服務,因為docker的輕量化可以很方便的遷移。

下面來介紹一下我所做的操作,以及我踩的坑:

首先來安裝anaconda,有python2和3版本的,版本不同但是build的過程是一樣的,有兩種方式,第一種,你可以通過Dockerfile的方式來build image,但是在運行Anaconda2-5.0.1-Linux-x86_64.sh腳本的時候無法實現(xiàn)交互,所以,我才用了docker commit的方式來執(zhí)行,但是事實證明也可以通過Dockerfile的方式來build,您只需要在本機上先運行了Anaconda2-5.0.1-Linux-x86_64.sh的腳本,并將生成的文件夾就是anaconda2 ADD到image中相應的位置,并且修改環(huán)境變量,將PATH加進去即可。

下面以python2為例來說:

1. 從anaconda官網上下載運行腳本Anaconda2-5.0.1-Linux-x86_64.sh,其中在下載的時候要注意你的系統(tǒng)的是32位還是64位。

2. 將腳本scp到基礎鏡像中,安裝解壓指令bzip2

yum install bzip2

3. 運行腳本(一路輸入yes)

sh Anaconda2-5.0.1-Linux-x86_64.sh

4. 更新anaconda

conda update anaconda

5. 安裝jupyter

conda install jupyter

6. 創(chuàng)建登錄密碼

root@localhost ~]# ipython
 
Python 3.5.2 (default, Aug 4 2017, 02:13:48)
Type 'copyright', 'credits' or 'license' for more information
IPython 6.1.0 -- An enhanced Interactive Python. Type '?' for help.
 
In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password:
Verify password:
Out[2]: 'sha1:5311cd8b9da9:70dd3321fccb5b5d77e66080a5d3d943ab9752b4'

7. 生成配置文件

jupyter notebook --generate-config --allow-root

注意:在這一步的時候有可能會遇見編碼錯誤:UnicodeEncodeError:'ascii'codec can't encode characters in position...

處理的方法是:在anaconda2文件夾中的lib>python2.7>site.py更改:

if 0:  
 # Enable to support locale aware default string encodings.  
 import locale  
 loc = locale.getdefaultlocale()  
 if loc[1]:   
 encoding = loc[1]
#將上述代碼段中if后面的0改成1,保存,重新啟動anaconda。 

8. 修改配置文件:

vi ~/.jupyter/jupyter_notebook_config.py

添加以下內容:

c.NotebookApp.ip='*'
c.NotebookApp.password = u'sha1:5311cd8b9da9:70dd3321fccb5b5d77e66080a5d3d943ab9752b4' #注意這里的密鑰是剛剛生成的那個
c.NotebookApp.open_browser = False
c.NotebookApp.port =8888 #隨便指定一個端口,使用默認8888也可以

9.保存鏡像

docker commit 容器ID 鏡像名稱

10. 啟動images提供服務:

docker run --privileged -d -p 8889:8888 -v /sys/fs/cgroup:/sys/fs/cgroup --name jupyter jupyter2:v2 /usr/sbin/init

注意:centos7有一個大坑,就是你在關閉防火墻的時候,systemctl 無法使用,報錯: Failed to get D-Bus connection : Operation not permitted

所以要用init來起,在Dockerfile中可以用CMD來使運行時啟動。

11. 進入docker image

docker exec -it jupyter /bin/bash

12.關閉防火墻

systemctl stop firewalls.service

13. 啟動jupyter

jupyter notebook --notebook-dir=/root/ --allow-root

14.在瀏覽器輸入服務器的IP+映射的端口號即可訪問,完成~

以上這篇Docker鏡像壓縮與優(yōu)化操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • 在云服務器上基于docker安裝jenkins的實現(xiàn)步驟

    在云服務器上基于docker安裝jenkins的實現(xiàn)步驟

    本文主要介紹了在云服務器上基于docker安裝jenkins的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • docker?update?命令及用法詳解

    docker?update?命令及用法詳解

    docker?update?命令動態(tài)更新容器配置,您可以使用此命令來防止容器消耗?Docker?主機的過多資源,本文給大家介紹docker?update?命令及用法,感興趣的朋友一起看看吧
    2023-08-08
  • docker找不到鏡像無法成功下載ragflow-main的問題解決辦法

    docker找不到鏡像無法成功下載ragflow-main的問題解決辦法

    這篇文章主要介紹了docker找不到鏡像無法成功下載ragflow-main的問題解決辦法,文中通過代碼及圖文將解決的辦法介紹的非常詳細,對大家學習或者使用docker具有一定的參考借鑒價值,需要的朋友可以參考下
    2025-04-04
  • 在Docker中跑Hadoop與鏡像制作方法

    在Docker中跑Hadoop與鏡像制作方法

    這篇文章主要介紹了在Docker中跑Hadoop與鏡像制作方法,本文通過實例代碼和截圖的形式給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-11-11
  • docker-compose部署配置jenkins的詳細教程

    docker-compose部署配置jenkins的詳細教程

    這篇文章主要介紹了docker-compose部署配置jenkins的詳細教程,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Docker swarm如何通過docker-compose部署應用

    Docker swarm如何通過docker-compose部署應用

    這篇文章主要介紹了Docker swarm如何通過docker-compose部署應用問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • docker容器日志占滿硬盤空間的問題解決

    docker容器日志占滿硬盤空間的問題解決

    由于默認情況下,docker使用json-file類型的日志驅動,該日志驅動默認情況下,每個容器的日志會一直追加在文件名為 containerId-json.log文件中,因此在容器不重建的情況下,該日志文件會一直追加內容,直到占滿整個服務器硬盤空間,本文就來介紹一下解決方法
    2023-09-09
  • Docker安裝ollama過程解讀

    Docker安裝ollama過程解讀

    Ollama是一個開源的LLM服務工具,用于簡化在本地運行大語言模型,本文介紹了如何使用Docker安裝Ollama并運行大語言模型,包括拉取鏡像、運行容器和加載模型,最后,還介紹了如何安裝OpenWebUI進行Web界面交互
    2025-02-02
  • 利用docker搭建php7和nginx運行環(huán)境全過程(官方鏡像)

    利用docker搭建php7和nginx運行環(huán)境全過程(官方鏡像)

    docker提供了在服務端分布式的部署應用,這樣的好處是方便維護和升級。下面這篇文章主要給大家介紹了利用docker搭建php7和nginx運行環(huán)境的相關資料,搭建過程中運用的是官方鏡像,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-05-05
  • docker run -e傳遞環(huán)境變量的過程

    docker run -e傳遞環(huán)境變量的過程

    這篇文章主要介紹了docker run -e傳遞環(huán)境變量的過程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01

最新評論

临泽县| 宝丰县| 邢台市| 荆州市| 永济市| 盱眙县| 珲春市| 上高县| 盱眙县| 辉县市| 安义县| 昌平区| 沙湾县| 英山县| 赤峰市| 海丰县| 调兵山市| 汾阳市| 竹山县| 尼勒克县| 长武县| 丹阳市| 丹东市| 五大连池市| 右玉县| 永春县| 辽阳市| 鄂伦春自治旗| 广平县| 莎车县| 九寨沟县| 富阳市| 常熟市| 柘荣县| 淄博市| 万荣县| 理塘县| 太原市| 彭阳县| 卫辉市| 芒康县|