新聞中心
你是否曾經(jīng)遇到過需要在沒有安裝任何 Docker 客戶端的機器上拉取容器鏡像這樣變態(tài)的需求呢?如果有,你當(dāng)時又是如何解決的呢?今天我們就來給大家介紹幾種另辟蹊徑的方法來實現(xiàn)這樣的需求。

創(chuàng)新互聯(lián)是專業(yè)的克東網(wǎng)站建設(shè)公司,克東接單;提供成都網(wǎng)站建設(shè)、成都做網(wǎng)站,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進行克東網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團隊,希望更多企業(yè)前來合作!
使用 docker-drag 實現(xiàn)
根據(jù)官網(wǎng)介紹:docker-drag 是一個用于與 Docker Hub 交互的工具,并且不需 Docker 客戶端本身支持。它主要是通過與 Docker Hub 的 HTTPS API 進行交互來實現(xiàn)相應(yīng)功能。
項目地址:https://github.com/NotGlop/docker-drag
安裝 docker-drag
docker-drag 其實就是一個 Python 腳本,目前版本總共才 168 行代碼。你只需要去官網(wǎng)倉庫直接下載就可以使用了,非常的簡單。
- $ wget https://raw.githubusercontent.com/NotGlop/docker-drag/master/docker_pull.py
使用 docker-drag
我們先來看一下官方給出的演示效果。
docker-drag 的使用也是非常簡單的,基本上和 docke pull 命令使用方法一致。其主要是借助 Python 的 Request 庫和 HTTPS API 直接從倉庫中拉取鏡像,并保存為 TAR 文件。
- # 直接在官方倉庫拉取官方鏡像
- $ python docker_pull.py nginx:alpine
- # 直接在官方倉庫拉取三方鏡像
- $ python docker_pull.py mysql/mysql-server:8.0
- # 直接在三方倉庫拉取鏡像
- $ python docker_pull.py mcr.microsoft.com/windows/nanoserver@sha256:ae443bd9609b9ef06d21d6caab59505cb78f24a725cc24716d4427e36aedabf2
鏡像下載完成后,你可以直接使用 docker load -i 命令對 TAR 文件進行加載。由于不在依賴容器工具本身,在一些實際使用場景中,例如:CICD 流程。這個小工具或許能助你解決大問題喲!
使用 download-frozen-image-v2 實現(xiàn)
與 docker-drag 類似的工具,還有一個 SHELL 腳本的實現(xiàn) download-frozen-image-v2,該腳本隸屬于 Moby 項目。
項目地址:https://github.com/moby/moby
它的使用基本上和 docker-drag 類似,大致有如以下幾步所示。
1.下載對應(yīng)的腳本
- $ wget https://raw.githubusercontent.com/moby/moby/master/contrib/download-frozen-image-v2.sh
2.download-frozen-image-v2 腳本使用語法
- download-frozen-image-v2.sh target_dir image[:tag][@digest] ...
3.一個完整的使用實例
- # 下載 Ubuntu 容器鏡像
- $ bash download-frozen-image-v2.sh ubuntu ubuntu:latest
- # download-frozen-image-v2 這里要稍為復(fù)雜點,需要自己手動打成 TAR 包
- $ tar -C 'ubuntu' -cf 'ubuntu.tar' .
- # 導(dǎo)入容器鏡像
- $ docker load -i ubuntu.tar
- # 導(dǎo)入容器鏡像完成后,運一個容器
- $ docker run --rm -ti ubuntu bash
- root@1dd5e62113b9:/#
使用 dp 實現(xiàn)
dp 同樣也是一個實現(xiàn)上述類似需求的小工具。dp 使用 Go 語言開發(fā),天生具有良好的跨平臺性。相對于前兩個工具來說更容易在多平臺上部署使用,而且 dp 還支持將多個鏡像打包在一起。
項目地址:https://github.com/zhangguanzhang/dp/
安裝 dp
dp 的安裝非常簡單,只需在官方倉庫 Releases 頁面直接下載各平臺對應(yīng)的版本,解壓后即可使用。
使用 dp
dp 使用起來也是很容易的,下面我們就來看幾個實例。
- # 從官方倉庫拉取一個容器鏡像
- $ dp pull nginx:alpine
- # 從官方倉庫拉取一個容器鏡像并打包到壓縮文件
- $ dp pull -o nginx.tar.gz nginx:alpine
- # 使用 sha256 拉取一個容器鏡像
- $ dp pull mcr.microsoft.com/windows/nanoserver@sha256:ae443bd9609b9ef06d21d6caab59505cb78f24a725cc24716d4427e36aedabf2
- # 一次從官方倉庫拉取多個容器鏡像并打包到壓縮文件
- $ dp pull -o project.tar.gz nginx:alpine nginx:1.17.5-alpine-perl
- # 從三方鏡像倉庫拉取多個容器鏡像并打包到壓縮文件
- $ dp pull -o project.tar.gz nginx:alpine gcr.io/google_containers/pause-amd64:3.1
至此,我們就演示完了如何在不需要 Docker 客戶端的前提下拉取容器鏡像的方法。
名稱欄目:假如服務(wù)器上沒有Docker環(huán)境,你還能愉快的拉取容器鏡像嗎?
文章URL:http://m.fisionsoft.com.cn/article/djejesp.html


咨詢
建站咨詢
