前言
DockerHub 上有很多的鏡像切心,可以滿足大部分的需求心俗。這種情況我們就可以直接通過docker pull **
從DockerHub上獲取對(duì)應(yīng)的鏡像。
當(dāng)然還有一些情況,我們需要的鏡像DockerHub上不存在,例如:Linux信創(chuàng)的環(huán)境温兼,在DockerHub上就很難知道對(duì)應(yīng)的鏡像,如果需要這種鏡像的話就需要通過運(yùn)行的系統(tǒng)來制作鏡像了武契。
具體步驟
1. 對(duì)系統(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
這幾個(gè)目錄都是系統(tǒng)啟動(dòng)時(shí)自動(dòng)生成的届垫,雖然也屬于文件系統(tǒng)一部分,但是他們每次開機(jī)都會(huì)有變化全释,所以打包的時(shí)候就應(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 以用戶識(shí)別碼及群組識(shí)別碼取代用戶名稱和群組名稱
tar 命令更多參數(shù)可參考:
Linux tar 命令
Linux tar.gz符衔、tar找前、bz2、zip 等解壓縮判族、壓縮命令詳解
2. 導(dǎo)入docker
導(dǎo)入docker之前,最好修改下docker的默認(rèn)存儲(chǔ)路徑项戴。
具體修改方法可參考: Linux 下修改Docker默認(rèn)存儲(chǔ)路徑
- 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)入的鏡像的時(shí)候必須帶command形帮,否則啟動(dòng)報(bào)如下錯(cuò)誤. 最后的/bin/bash 不能少
$ docker run -it -d **** /bin/bash
提示: 制作的鏡像文件太大,會(huì)導(dǎo)致啟動(dòng)容器時(shí)候失斨芏!: Getting the final child's pid from pipe caused "EOF"
參考文章:
[Docker 鏡像導(dǎo)出和導(dǎo)入] https://yeasy.gitbook.io/docker_practice/container/import_export