Docker私有倉庫搭建及使用
準備:一臺服務器(www.niezhiliang.com),本地機器(我的是Mac)
上傳鏡像源代碼:https://github.com/niezhiliang/springbootwebsocket
1.下載docker私有倉庫鏡像
docker pull registry:2.6
2.編寫docker-compose.yml將鏡像跑起來
version: '3'
services:
sign-online-eureka:
image: docker.io/registry:latest
restart: always
container_name: private-registry
hostname: private-registry
ports:
- "5000:5000"
volumes:
- /opt/data/registry:/tmp/registry registry
- /etc/timezone:/etc/timezone
- /etc/localtime:/etc/localtime
3. 本地上傳鏡像到私有倉庫
- 1.下載代碼到本地
git clone https://github.com/niezhiliang/springbootwebsocket
- 2.進入項目根目錄,將源代碼生成鏡像
./buile_image.sh
-
- 打一個tag爲推到私有倉庫做準備
docker tag suyu/springbootwebsocket:1.0 www.niezhiliang.com:5000/suyu/springbootwebsocker:1.0
//查看鏡像
docker images
//將鏡像推動到私有倉庫
docker push www.niezhiliang.com:5000/suyu/springbootwebsocker
我們會看到控制檯打印這條語句,大概意思就是一個是(私有倉庫)http協議一個是(本地)https協議,兩個協議不一致,導致推送失敗。我們將本地也設置爲http就能推成功
- mac環境設置
修改docker的Daemon 將私有倉庫加進去,就好了Mac的操作爲 Preference ==> Daemon
- linux環境設置
在/etc/docker文件夾下面創建daemon.json文件
加入倉庫地址
{
"insecure-registries": ["www.niezhiliang.com:5000"]
}
多個倉庫之間,用逗號隔開。
{
"insecure-registries" : ["registry1:5000"],
"insecure-registries" : ["registry2:5000"]
}
//Mac重啓docker,其他系統自己想辦法(重啓有點慢得等會)
killall Docker && open /Applications/Docker.app
//再次推送
docker push www.niezhiliang.com:5000/suyu/springbootwebsocker
4.測試是否推送成功
- 刪除構建之前的鏡像
docker rmi [鏡像id]
- 從私有倉庫下載鏡像
docker pull www.niezhiliang.com:5000/suyu/springbootwebsocker:1.0
- 運行容器看看項目是否正常啓動(可以看到項目可以正常啓動)
docker run www.niezhiliang.com:5000/suyu/springbootwebsocker:1.0