其它制作鏡像的方式
?
前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。
?
除了標準的使用?Dockerfile
?生成鏡像的方法外,由于各種特殊需求和歷史原因,還提供了一些其它方法用以生成鏡像。
從 rootfs 壓縮包導入
格式:docker import [選項] <文件>|<URL>|- [<倉庫名>[:<標簽>]]
壓縮包可以是本地文件、遠程 Web 文件,甚至是從標準輸入中得到。壓縮包將會在鏡像?/
?目錄展開,并直接作為鏡像第一層提交。
比如我們想要創建一個?OpenVZ?的 Ubuntu 14.04?模板的鏡像:
$ docker import \http://download.openvz.org/template/precreated/ubuntu-14.04-x86_64-minimal.tar.gz \openvz/ubuntu:14.04
Downloading from http://download.openvz.org/template/precreated/ubuntu-14.04-x86_64-minimal.tar.gz
sha256:f477a6e18e989839d25223f301ef738b69621c4877600ae6467c4e5289822a79B/78.42 MB
這條命令自動下載了?ubuntu-14.04-x86_64-minimal.tar.gz
?文件,并且作為根文件系統展開導入,并保存為鏡像?openvz/ubuntu:14.04
。
導入成功后,我們可以用?docker image ls
?看到這個導入的鏡像:
$ docker image ls openvz/ubuntu
REPOSITORY TAG IMAGE ID CREATED SIZE
openvz/ubuntu 14.04 f477a6e18e98 55 seconds ago 214.9 MB
如果我們查看其歷史的話,會看到描述中有導入的文件鏈接:
$ docker history openvz/ubuntu:14.04
IMAGE CREATED CREATED BY SIZE COMMENT
f477a6e18e98 About a minute ago 214.9 MB Imported from http://download.openvz.org/template/precreated/ubuntu-14.04-x86_64-minimal.tar.gz
docker save
?和?docker load
Docker 還提供了?docker load
?和?docker save
?命令,用以將鏡像保存為一個?tar
?文件,然后傳輸到另一個位置上,再加載進來。這是在沒有 Docker Registry 時的做法,現在已經不推薦,鏡像遷移應該直接使用 Docker Registry,無論是直接使用 Docker Hub 還是使用內網私有 Registry 都可以。
保存鏡像
使用?docker save
?命令可以將鏡像保存為歸檔文件。
比如我們希望保存這個?alpine
?鏡像。
$ docker image ls alpine
REPOSITORY TAG IMAGE ID CREATED SIZE
alpine latest baa5d63471ea 5 weeks ago 4.803 MB
保存鏡像的命令為:
$ docker save alpine | gzip > alpine-latest.tar.gz
然后我們將?alpine-latest.tar.gz
?文件復制到了到了另一個機器上,可以用下面這個命令加載鏡像:
$ docker load -i alpine-latest.tar.gz
Loaded image: alpine:latest
如果我們結合這兩個命令以及?ssh
?甚至?pv
?的話,利用 Linux 強大的管道,我們可以寫一個命令完成從一個機器將鏡像遷移到另一個機器,并且帶進度條的功能:
docker save <鏡像名> | bzip2 | pv | ssh <用戶名>@<主機名> 'cat | docker load'
?
轉自:
https://yeasy.gitbooks.io/docker_practice/image/other.html