前言
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