[TOC]
一、前提和準(zhǔn)備條件
搭建私有倉庫需要以下條件:
- 1.已安裝Docker服務(wù)的服務(wù)端
- 2.測試docker鏡像拉取的客戶端
- 3.2臺(tái)測試機(jī)都需安裝docker服務(wù)
- 4.配置好了鏡像加速信息
機(jī)器名 | ip | 功能 |
---|---|---|
docker-registry | 10.18.33.90 | docker私有倉庫服務(wù)器 |
docker-app | 10.18.33.88 | 運(yùn)行docker服務(wù)的普通服務(wù)器 |
二善玫、docker-registry搭建私有倉庫
1.拉取倉庫鏡像
在docker-registry[10.18.33.90]服務(wù)器執(zhí)行一下命令,拉取倉庫的鏡像:
[root@localhost DockerDB]# docker pull registry
2.運(yùn)行私有倉庫
在docker-registry[10.18.33.90]服務(wù)器執(zhí)行一下命令,來啟動(dòng)一個(gè)私有倉庫的容器
docker run -d -v /registry:/var/lib/registry -p 5000:5000 --restart=always --privileged=true --name registry registry:latest
執(zhí)行成功后饼疙,查看容器是否啟動(dòng)成功
[root@localhost DockerDB]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
edd6c0d7ca9b registry:latest "/entrypoint.sh /etc…" 3 seconds ago Up 2 seconds 0.0.0.0:5000->5000/tcp registry
如果成功執(zhí)行其弊,則表示我們的docker私有倉庫搭建成功。
下面對(duì)這條命令的部分內(nèi)容做下說明椒拗。
/registry表示宿主機(jī)目錄舒帮,該目錄如果不存在會(huì)自動(dòng)創(chuàng)建。
docker -v 宿主機(jī)目錄:容器目錄
解釋:
把宿主機(jī)的目錄掛載到容器中
或者把docker 容器中某目錄的數(shù)據(jù) 加載到 宿主機(jī)的某個(gè)目錄
這樣做的目的是為了防止docker私有倉庫這個(gè)容器被刪除時(shí)陡叠,倉庫里的鏡像也會(huì)被刪除玩郊。
3.查詢當(dāng)前私有倉庫信息
查詢一下當(dāng)前建立的私有倉庫的信息,windows請(qǐng)直接訪問以下地址:
http://10.18.33.90:5000/v2/_catalog
結(jié)果信息如下:
如果在Linux上枉阵,請(qǐng)運(yùn)行如下命令來獲得當(dāng)前私有倉庫信息:
[root@localhost ~]# curl -X GET http://10.18.33.90:5000/v2/_catalog
{"repositories":[]}
第一次建立私有倉庫译红,查詢結(jié)果應(yīng)該是沒有鏡像信息的。
三兴溜、docker-app注冊(cè)私有倉庫信息
1.daemon.json配置文件
- linux配置
修改docker的配置文件daemon.json文件添加私有倉庫信息侦厚,daemon.json在/etc/docker/目錄下
添加如下信息:
"insecure-registries":["10.18.33.90:5000"]
其中 IP為docker-registry的IP,5000端口位registry容器映射對(duì)外的端口
完整的daemon.json信息如下:
{
"registry-mirrors": ["https://7e2zsv7s.mirror.aliyuncs.com"],
"insecure-registries":["10.18.33.90:5000"]
}
重啟docker服務(wù)
[root@localhost docker]# systemctl daemon-reload;
[root@localhost docker]# systemctl restart docker;
-
windows配置
在docker圖標(biāo)右鍵拙徽,打開settings刨沦,定位到Daemon菜單下:
windows修改配置
打開Advanced,添加docker私有倉庫信息膘怕,并點(diǎn)擊應(yīng)用想诅,等待docker重啟成功。
四、推送鏡像到私有倉庫
推送鏡像到私有倉庫来破,可以是已有鏡像的重新封裝篮灼,也可以是你的項(xiàng)目鏡像,前提是你已經(jīng)正確構(gòu)建了一個(gè)可用的鏡像徘禁。
1.重命名已經(jīng)鏡像信息Tag標(biāo)簽
列舉已構(gòu)建成功的鏡像信息:
PS E:\WorkSpace-GW\image-gateway\mysql> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
db 0.0.1 3924615d26ec 3 minutes ago 366MB
mariadb latest b468922dbbd7 About an hour ago 366MB
PS E:\WorkSpace-GW\image-gateway\mysql>
將已有的鏡像信息重新Tag命名
PS E:\WorkSpace-GW\image-gateway\mysql> docker tag 3924615d26ec 10.18.33.90:5000/db:v1.0
TIPS:
重命名鏡像必須遵循: 私有倉庫IP:端口/倉庫名
2.將重名的鏡像推送到私有倉庫
執(zhí)行如下命令推送鏡像到私有倉庫
PS E:\WorkSpace-GW\image-gateway\mysql> docker push 10.18.33.90:5000/db
推送成功后訪問倉庫诅诱,查看鏡像是否推送成功,訪問私有鏡像倉庫服務(wù)
http://10.18.33.90:5000/v2/_catalog
可以看到db已經(jīng)被推送到了私有倉庫
五送朱、從私有倉庫拉取鏡像
測試docker-app客戶端拉取鏡像娘荡,先刪除客戶端docker的相關(guān)的鏡像內(nèi)容,如下圖所示:
PS E:\WorkSpace-GW\image-gateway\mysql> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
PS E:\WorkSpace-GW\image-gateway\mysql>
1.拉取一個(gè)私有倉庫的鏡像
執(zhí)行如下命令驶沼,拉取剛推送私有鏡像 db并創(chuàng)建一個(gè)容器
PS E:\WorkSpace-GW\image-gateway\mysql> docker run --name gatewaydb -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -idt 10.18.33.90:5000/db:v1.0
2.查看容器啟動(dòng)情況和進(jìn)入容器
查看容器啟動(dòng)情況
PS E:\WorkSpace-GW\image-gateway\mysql> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a9a3ec4f309e 10.18.33.90:5000/db:v1.0 "docker-entrypoint.s…" About a minute ago Up 58 seconds 0.0.0.0:3307->3306/tcp gatewaydb
進(jìn)入容器查看啟動(dòng)情況:
PS E:\WorkSpace-GW\image-gateway\mysql> docker exec -it gatewaydb /bin/bash
root@a9a3ec4f309e:/#