將iso鏡像轉換為docker鏡像


為什么不用官方的鏡像?

  不是不想使用,而是官方鏡像提供的功能實在是太少了,不信的話,你pull一個ubuntu:latest的進行,你看有沒有wget、curl、ssh這些功能,就連最簡單的ifconfig都沒有,可謂是最純凈、最精簡的操作系統。但是我們平時工作中往往需要一些鏡像能夠擁有盡可能多的功能,當然這就可能造成鏡像比較臃腫。

  本次測試過程使用的ubuntu16.04桌面版。沒錯,帶GUI的桌面版,其實什么版並沒有什么區別,轉換為docker鏡像之后,使用方法沒有區別。

前提:iso已經在虛擬機中安裝好

  操作很簡單,就是耗時---就是進入虛擬機中,然后將某些目錄的文件打成tar包,有了tar包之后,再使用docker的import命令來創建鏡像。 

 

打包操作:

  iso鏡像1.62G,打出的tar包5.6G,時間稍長,10分鍾左右,大概是在虛擬機里面的原因。

  需要注意的是,在打包之前,請先確認要將哪些文件進行打包,比如下面這些目錄都可以不用打包

  1. 某些用戶的家目錄是否需要打包
  2. 每個用戶的執行的歷史命令是否需要清除
  3. 一些涉及到隱私的文件
  4. 與系統鏡像沒有關系的文件,或者說只是系統運行過程中保存的垃圾文件或者緩存等
  5. 臨時文件

  建議手動選擇要進行打包的目錄,比如:bin dev  lib64 media opt root snap var boot etc lib mnt sbin srv usr vmlinuz這些目錄

  如果你拿不准哪些文件目錄要打包,那么可以將根目錄下所有文件都打包(不推薦)

→ ~ #  cd / 
→ ~ #  tar -cf  system.tar  bin dev  lib64 media opt root snap var boot etc lib mnt sbin srv usr vmlinuz

  建議打包時不要加-v選項,因為文件太多了,翻頁速度太快,顯示出來也看不清。

  將打出的包拷貝到一個安裝了docker的環境,如果本地有docker的話,就可以不用移動。

  

導入操作

→ ~ #  cat image.tar | docker import - ubuntu:16:04
sha256:e2b87a8f4f31657f9781b6dad1bdf423f3f3e62865995f4720852c81be0c4e96

 

查看導入的鏡像

→ ~ $ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              16.04               e2b87a8f4f31        29 minutes ago      4.97GB

  

運行新建的鏡像

  這里可能會遇到一個問題,就是嘗試運行docker鏡像的時候,會提示錯誤docker: Error response from daemon: No command specified.

  即使是使用管理員權限來運行也是不行的,

→ ~ $ docker run -t -i ubuntu:16.04
docker: Error response from daemon: No command specified.
See 'docker run --help'.
→ ~ $ sudo docker run -t -i ubuntu:16.04
Password:
docker: Error response from daemon: No command specified.
See 'docker run --help'.

  正確方法:

→ ~ $ docker run -t -i ubuntu:16.04
docker: Error response from daemon: No command specified.
See 'docker run --help'.
→ ~ $ docker run -t -i ubuntu:16.04 /bin/bash   #正確方法
root@f0389c5d3270:/# wget www.baidu.com

  至於docker run -t -i ubuntu:16.04為什么不行,可以參考:使用Dockerfile來構建鏡像,因為他沒有設定RUN命令的參數,即容器啟動時,要運行的命令

推到鏡像庫

  最后,可以將鏡像push到自己的鏡像庫,需要的時候就pull下來運行即可。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM