Docker 搭建私有倉庫

[TOC]

一、前提和準(zhǔn)備條件

搭建私有倉庫需要以下條件:

  • 1.已安裝Docker服務(wù)的服務(wù)端
  • 2.測試docker鏡像拉取的客戶端
  • 3.2臺測試機(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私有倉庫搭建成功。

下面對這條命令的部分內(nèi)容做下說明。

/registry表示宿主機(jī)目錄,該目錄如果不存在會自動(dòng)創(chuàng)建。

docker -v 宿主機(jī)目錄:容器目錄

解釋:

把宿主機(jī)的目錄掛載到容器中

或者把docker 容器中某目錄的數(shù)據(jù) 加載到 宿主機(jī)的某個(gè)目錄

這樣做的目的是為了防止docker私有倉庫這個(gè)容器被刪除時(shí),倉庫里的鏡像也會被刪除。

3.查詢當(dāng)前私有倉庫信息

查詢一下當(dāng)前建立的私有倉庫的信息,windows請直接訪問以下地址:

http://10.18.33.90:5000/v2/_catalog

結(jié)果信息如下:


image

如果在Linux上,請運(yùn)行如下命令來獲得當(dāng)前私有倉庫信息:

[root@localhost ~]# curl -X GET http://10.18.33.90:5000/v2/_catalog
{"repositories":[]}

第一次建立私有倉庫,查詢結(jié)果應(yīng)該是沒有鏡像信息的。

三、docker-app注冊私有倉庫信息

1.daemon.json配置文件

  • linux配置

修改docker的配置文件daemon.json文件添加私有倉庫信息,daemon.json在/etc/docker/目錄下
添加如下信息:

"insecure-registries":["10.18.33.90:5000"]

其中 IP為docker-registry的IP,5000端口位registry容器映射對外的端口
完整的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:/#
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容