搭建 docker 私有鏡像庫(kù)_如何搭建Docker環(huán)境??
搭建 Docker 私有鏡像庫(kù)

1、安裝 Docker
下載 Docker 安裝包:訪問(wèn) Docker 官網(wǎng)(https://www.docker.com/)下載適合您操作系統(tǒng)的安裝包。
安裝 Docker:按照安裝向?qū)нM(jìn)行安裝,并確保啟動(dòng) Docker 服務(wù)。
2、創(chuàng)建 Docker Swarm
初始化 Swarm:在終端中運(yùn)行以下命令來(lái)初始化 Swarm。

```
docker swarm init
```
獲取 Swarm Join Command:運(yùn)行上述命令后,會(huì)顯示一個(gè)加入 Swarm 的命令,請(qǐng)將其復(fù)制保存。
3、部署 Docker Swarm Manager

創(chuàng)建網(wǎng)絡(luò):運(yùn)行以下命令創(chuàng)建一個(gè)名為 "mynet" 的自定義網(wǎng)絡(luò)。
```
docker network create mynet
```
部署 Swarm Manager:運(yùn)行以下命令部署一個(gè) Swarm Manager。
```
docker service create name swarmmanager network mynet replicas 1 publish published=2375,target=2375 docker:swarm manage
```
4、配置私有鏡像庫(kù)
創(chuàng)建卷存儲(chǔ):運(yùn)行以下命令創(chuàng)建一個(gè)名為 "myregistry" 的卷存儲(chǔ)。
```
docker volume create myregistry
```
運(yùn)行私有鏡像庫(kù):運(yùn)行以下命令啟動(dòng)私有鏡像庫(kù)容器。
```
docker run d p 5000:5000 name myregistry restart always v myregistry:/var/lib/registry e REGISTRY_URL=localhost:5000 e REGISTRATION_TOKEN=mytoken network mynet registry:2
```
注冊(cè)私有鏡像庫(kù):運(yùn)行以下命令將私有鏡像庫(kù)注冊(cè)到 Swarm。
```
docker tag myregistry:latest myregistry:local
docker push myregistry:local
```
更新 Swarm Manager:運(yùn)行以下命令更新 Swarm Manager。
```
docker service update image myregistry:local swarmmanager
```
5、驗(yàn)證私有鏡像庫(kù)是否可用
拉取私有鏡像庫(kù)中的鏡像:運(yùn)行以下命令從私有鏡像庫(kù)中拉取名為 "nginx" 的鏡像。
```
docker pull myregistry:local/nginx
```
運(yùn)行容器:運(yùn)行以下命令使用剛剛拉取的鏡像創(chuàng)建一個(gè)容器。
```
docker run d p 8080:80 name mynginx restart always myregistry:local/nginx
```
訪問(wèn)容器:在瀏覽器中輸入 "http://localhost:8080",如果能夠正常訪問(wèn),則說(shuō)明私有鏡像庫(kù)已經(jīng)成功搭建并可用。
相關(guān)問(wèn)題與解答:
1、Q: 如果我想將私有鏡像庫(kù)設(shè)置為只允許特定用戶訪問(wèn),應(yīng)該如何操作?
A: 你可以使用認(rèn)證機(jī)制來(lái)實(shí)現(xiàn)只允許特定用戶訪問(wèn)私有鏡像庫(kù),具體步驟如下:
在私有鏡像庫(kù)容器中啟用認(rèn)證功能:編輯/etc/docker/daemon.json 文件,添加以下內(nèi)容:
```json
{
"insecureregistries": ["myregistry:5000"],
"auth": {
"authentication": "token",
"token"(本文來(lái)源:kenGNiao.cOM);: "mytoken"
}
}
```
重啟私有鏡像庫(kù)容器以使更改生效,在推送或拉取鏡像時(shí),需要提供正確的認(rèn)證令牌。
```bash
docker login myregistry:5000 u <username> p <password> password <token>
docker push myregistry:local/<image>:<tag>
docker pull myregistry:local/<image>:<tag>
```
