如何把ISO鏡像轉換成Docker鏡像
阿新 • • 發佈:2018-01-23
mage media 部分 cto ash 運行 iso peid dbd 最近開始研究docker,如果想要自己創建個鏡像,必須從Docker Hub上面獲取一個基礎鏡像來創建;對於我們公司是定制的ISO,我就在想有沒有辦法把ISO轉換成Docker格式,然後上傳到Docker Hub上作為基礎鏡像使用。
1.準備階段
首先,在一臺虛擬機中安裝好需要轉換的ISO鏡像,本文以CentOS 7.2為例;
其次,進入裝好的系統,到根目錄下面我們可以看到如下文件夾:
[root@localhost /]# ls bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
其中/proc、/sys、/run、/dev這幾個目錄都是系統啟動時自動生成的,雖然也屬於文件系統一部分,但是他們每次開機都會有變化,所以打包的時候就應該忽略它們。
2.打包系統
直接運行如下命令
# tar -cvpf /tmp/system.tar --directory=/ --exclude=proc --exclude=sys --exclude=dev --exclude=run --exclude=boot .
命令運行完成後再/tmp目錄生成了一個system.tar文件,如果tar文件太大的話,也可以繼續壓縮成tar.gz格式。
就可以把打包好的文件導入到docker了。
3.導入docker
tar文件導入到docker方法很多,下面兩種辦法測試了都可以。
cat system.tar |docker import - centos:7.2
docker import system.tar centos:7.2
[root@docker ~]# du -sh system.tar 1.2G system.tar [root@docker ~]# cat system.tar |docker import - centos:7.2 sha256:72cc6a6d481b512c04d7d1012bc6e50f54c856bdbd87b25c0b7aed9765af94c1 [root@docker ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos 7.2 72cc6a6d481b 6 seconds ago 1.197 GB
4.導入成功後,接下去就可以運行容器了.
# docker run -t -i centos:7.2 /bin/bash
[root@docker ~]# docker run -it --rm centos:7.2 /bin/bash [root@476281ec40ee /]# ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.17.0.2 netmask 255.255.0.0 broadcast 0.0.0.0 inet6 fe80::42:acff:fe11:2 prefixlen 64 scopeid 0x20<link> ether 02:42:ac:11:00:02 txqueuelen 0 (Ethernet) RX packets 6 bytes 508 (508.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 6 bytes 508 (508.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 0 (Local Loopback) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 [root@476281ec40ee /]# exit exit [root@docker ~]#
鏡像做好之後就可以push到docker hub上了,不過我發現做好的鏡像還是挺大的有1.2G,這樣push的時候就會很慢很慢。
如何把ISO鏡像轉換成Docker鏡像