將Linux的系統(tǒng)制作成Docker鏡像

前言

DockerHub 上有很多的鏡像,可以滿足大部分的需求。這種情況我們就可以直接通過docker pull ** 從DockerHub上獲取對應(yīng)的鏡像。
當(dāng)然還有一些情況,我們需要的鏡像DockerHub上不存在,例如:Linux信創(chuàng)的環(huán)境,在DockerHub上就很難知道對應(yīng)的鏡像,如果需要這種鏡像的話就需要通過運(yùn)行的系統(tǒng)來制作鏡像了。

具體步驟

1. 對系統(tǒng)進(jìn)行壓縮

  • 查看系統(tǒng)目錄
$ cd /
$ ls
bin  boot  data  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

/proc/sys、/run、/dev這幾個目錄都是系統(tǒng)啟動時自動生成的,雖然也屬于文件系統(tǒng)一部分,但是他們每次開機(jī)都會有變化,所以打包的時候就應(yīng)該忽略它們

  • tar 完成系統(tǒng)壓縮包
    1、可以選擇/跟目錄,然后--exclude排除不需要的目錄
    2、也可以直接選擇需要壓縮的目錄
tar -cvpf /tmp/system.tar --directory=/ --exclude=proc --exclude=sys --exclude=dev --exclude=run --exclude=boot .

or 

tar -cvpf /tmp/system.tar bin data  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  root  sbin  srv  tmp  usr  var

參數(shù)說明:
-c或--create 建立新的備份文件
-f<備份文件>或--file=<備份文件> 指定備份文件
-p或--same-permissions 用原來的文件權(quán)限還原文件
-v或--verbose 顯示指令執(zhí)行過程
z或--gzip或--ungzip 通過gzip指令處理備份文件
--numeric-owner 以用戶識別碼及群組識別碼取代用戶名稱和群組名稱

tar 命令更多參數(shù)可參考:
Linux tar 命令
Linux tar.gz、tar、bz2、zip 等解壓縮、壓縮命令詳解

2. 導(dǎo)入docker

導(dǎo)入docker之前,最好修改下docker的默認(rèn)存儲路徑。
具體修改方法可參考: Linux 下修改Docker默認(rèn)存儲路徑

  • tar 導(dǎo)入docker
$ docker import /tmp/system.tar linux:10.1
// linux:10.1  是自定義的鏡像和tag名稱

or 

cat /tmp/system.tar | docker import - linux:10.1

運(yùn)行鏡像容器

tips: 運(yùn)行導(dǎo)入的鏡像的時候必須帶command,否則啟動報如下錯誤. 最后的/bin/bash 不能少

$ docker run -it -d **** /bin/bash

提示: 制作的鏡像文件太大,會導(dǎo)致啟動容器時候失敗: Getting the final child's pid from pipe caused "EOF"

參考文章:
[Docker 鏡像導(dǎo)出和導(dǎo)入] https://yeasy.gitbook.io/docker_practice/container/import_export

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容