亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

不通過 docker hub 怎樣把 docker image 共享給別人?

不通過 docker hub 怎樣把 docker image 共享給別人?

慕桂英3389331 2019-02-08 15:11:30
不通過 docker hub 怎樣把 docker image 共享給別人
查看完整描述

2 回答

?
瀟湘沐

TA貢獻1816條經驗 獲得超6個贊

Dockerfile 中 ADD 和 COPY 命令不能使用絕對路徑,只能使用相對路徑。 這點在官方文檔中說的比較清楚 如果不是非要把文件 build 到 image里,可以通過 run container 的時候通過 -v 參數將 host 文件或目錄加載/共享到 container 里。

查看完整回答
反對 回復 2019-02-27
?
holdtom

TA貢獻1805條經驗 獲得超10個贊

將ubuntu push到私有registry
docker push rd-server:5000/ubuntu

如何將ubuntu的所有分支都鏡像到自己的私有倉庫?

1.先打TAG,把需要的版本打上標簽,然后進行推送

語句大概是這個樣子的:

docker tag eb601b8965b8 rd-server:5000/ubuntu:raring
docker tag eb601b8965b8 rd-server:5000/ubuntu:13.04
docker tag 9f676bd305a4 rd-server:5000/ubuntu:saucy
docker tag 9f676bd305a4 rd-server:5000/ubuntu:13.10
docker tag 9cd978db300e rd-server:5000/ubuntu:precise
docker tag 9cd978db300e rd-server:5000/ubuntu:latest
docker tag 9cd978db300e rd-server:5000/ubuntu:12.04
docker tag 9cc9ea5ea540 rd-server:5000/ubuntu:lucid
docker tag 9cc9ea5ea540 rd-server:5000/ubuntu:10.04
docker tag 5ac751e8d623 rd-server:5000/ubuntu:quantal
docker tag 5ac751e8d623 rd-server:5000/ubuntu:12.10

開始推送

docker push rd-server:5000/ubuntu

如果返回的內容的最后一行是下面這個樣子的

2014/03/14 08:22:14 push: }

請反復執行,沒錯,不要懷疑,請循環一直反復執行下去

docker pull rd-server:5000/ubuntu

直到不再出現 push:
}的字樣

不知道這是docker的BUG還是本身設計是這樣的,需要反復多次push才能將完整的tag推送到private
registry里,否則在客戶端下載的時候總會提示某些image找不到,個人猜測可能是這么設計的,因為docker
image比較大,而一個repo會有很多的塊文件,每次push的時候只Push一個塊,好了,猜測就道這,活還是得干,所以,寫個腳本解決手工的問題吧。

#!/bin/sh
#
#Copyright (c) 2014 ZhengXujin [email protected]
#

server="127.0.0.1:5000"
index_repo_name="username/ubuntu"
private_repo_name="ubuntu"

echo "\n"
echo " ## ."
echo " ## ## ## =="
echo " ## ## ## ## ==="
echo " /""""""""""""""""\___/ ==="
echo " ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===- ~~~"
echo " \______ o __/"
echo " \ \ __/"
echo " \____\______/"
echo "\n"

idx=0
is_continue=1

docker images|grep -q "$server/$private_repo_name"
if [[ $? -ne 0 ]]; then
docker images|grep $index_repo_name|awk -F" " '{printf("docker tag %s %s/%s:%s\n",$3,"'$server'","'$private_repo_name'",$2)}'|bash
fi

while [ $is_continue -eq 1 ]
do
docker push $server/$private_repo_name
is_continue=$?
let idx=$idx+1
echo "$(tput setaf 1)continue push, $idx times pushed. $(tput sgr



查看完整回答
反對 回復 2019-02-27
  • 2 回答
  • 0 關注
  • 1521 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號