目錄
一、Docker私有倉庫創建
1、在一臺安裝Docker私有倉庫的主機上添加docker-compose 命令
2、安裝docker-ce服務
3、Docker 鏡像加速
4、安裝Harbor倉庫
5、使用腳本安裝倉庫
6、網站登陸
7、客戶端使用Harbor倉庫
二、Docky存儲與網絡配置
1、存儲與網絡
掛載主機目錄
創建數據卷容器
實現負載均衡
2、Docker網絡
一、Docker私有倉庫創建
1、在一臺安裝Docker私有倉庫的主機上添加docker-compose 命令
192.168.58.171(rocky9)
[root@harbor ~]# rz rz waiting to receive.**[root@harbor ~]# ls 公共 模板 視頻 圖片 文檔 下載 音樂 桌面 anaconda-ks.cfg docker-compose [root@harbor ~]# mv docker-compose /usr/local/sbin/ [root@harbor ~]# chmod +x /usr/local/sbin/docker-compose
2、安裝docker-ce服務
yum install -y yum-utils yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum install -y docker-ce
3、Docker 鏡像加速
root@harbor ~]# vim /etc/docker/daemon.json {"registry-mirrors": ["https://0vmzj3q6.mirror.aliyuncs.com","https://docker.m.daocloud.io","https://mirror.baidubce.com","https://dockerproxy.com","https://mirror.iscas.ac.cn","https://huecker.io","https://dockerhub.timeweb.cloud","https://noohub.ru","https://vlgh0kqj.mirror.aliyuncs.com"] } ? [root@harbor ~]# systemctl daemon-reload [root@harbor ~]# systemctl enable --now docker
4、安裝Harbor倉庫
[root@harbor ~]# rz rz waiting to receive.**[root@harbor ~]# ls 公共 模板 視頻 圖片 文檔 下載 音樂 桌面 anaconda-ks.cfg harbor-offline-installer-v2.7.3.tgz [root@harbor ~]# tar xf harbor-offline-installer-v2.7.3.tgz [root@harbor ~]# ls 公共 模板 視頻 圖片 文檔 下載 音樂 桌面 anaconda-ks.cfg harbor harbor-offline-installer-v2.7.3.tgz [root@harbor ~]# cd harbor/ [root@harbor harbor]# ls common.sh harbor.v2.7.3.tar.gz harbor.yml.tmpl install.sh LICENSE prepare [root@harbor harbor]# cp harbor.yml.tmpl harbor.yml [root@harbor harbor]# vim harbor.yml ##更改hostname為自己的主機ip
5、使用腳本安裝倉庫
[root@harbor harbor]# ls common.sh harbor.v2.7.3.tar.gz harbor.yml harbor.yml.tmpl install.sh LICENSE prepare [root@harbor harbor]# ./install.sh
6、網站登陸
安裝完成后網站訪問自己的主機ip
密碼在配置文件harbor.yml中查看
創建私有倉庫
項目——新建項目
7、客戶端使用Harbor倉庫
在自己的客戶端操作
安裝好docker服務,并啟動后進行操作
192.168.58.170
##加入倉庫地址 [root@bogon ~]# vim /etc/docker/daemon.json {"insecure-registries": ["192.168.58.171:80"],"registry-mirrors": ["https://0vmzj3q6.mirror.aliyuncs.com","https://docker.m.daocloud.io","https://mirror.baidubce.com","https://dockerproxy.com","https://mirror.iscas.ac.cn","https://huecker.io","https://dockerhub.timeweb.cloud","https://noohub.ru","https://vlgh0kqj.mirror.aliyuncs.com"] } ? [root@bogon ~]# systemctl daemon-reload [root@bogon ~]# systemctl restart docker
##登陸倉庫 [root@bogon ~]# docker login -u admin http://192.168.58.171:80 Password: Harbor12345 ? WARNING! Your credentials are stored unencrypted in '/root/.docker/config.json'. Configure a credential helper to remove this warning. See https://docs.docker.com/go/credential-store/ ? Login Succeeded
##查看本機鏡像并上傳和下載鏡像 [root@bogon ~]# docker images REPOSITORY ? ? ? ? TAG ? ? ? ? IMAGE ID ? ? ? CREATED ? ? ? ? ? ? SIZE alpine ? ? ? ? ? ? php ? ? ? ? 865c7c6fdd6d ? About an hour ago ? 31.3MB alpine ? ? ? ? ? ? nginx ? ? ? 45e852400cec ? 2 hours ago ? ? ? ? 12.9MB dockerfile1_nginx ? latest ? ? ? 0f4e5963a308 ? 21 hours ago ? ? ? 192MB dockerfile1_php ? ? latest ? ? ? 38b23698b2d9 ? 21 hours ago ? ? ? 470MB alpine ? ? ? ? ? ? latest ? ? ? 9234e8fb04c4 ? 3 weeks ago ? ? ? ? 8.31MB nginx ? ? ? ? ? ? ? latest ? ? ? 2cd1d97f893f ? 3 weeks ago ? ? ? ? 192MB redis ? ? ? ? ? ? ? 7.2-alpine ? 30db5eb24b65 ? 4 weeks ago ? ? ? ? 40.9MB mysql ? ? ? ? ? ? ? 5.7 ? ? ? ? 5107333e08a8 ? 20 months ago ? ? ? 501MB [root@bogon ~]# docker tag alpine:latest 192.168.58.171:80/private/alpine:v1 [root@bogon ~]# docker images REPOSITORY ? ? ? ? ? ? ? ? ? ? ? ? TAG ? ? ? ? IMAGE ID ? ? ? CREATED ? ? ? ? ? ? SIZE alpine ? ? ? ? ? ? ? ? ? ? ? ? ? ? php ? ? ? ? 865c7c6fdd6d ? About an hour ago ? 31.3MB alpine ? ? ? ? ? ? ? ? ? ? ? ? ? ? nginx ? ? ? 45e852400cec ? 2 hours ago ? ? ? ? 12.9MB dockerfile1_nginx ? ? ? ? ? ? ? ? latest ? ? ? 0f4e5963a308 ? 21 hours ago ? ? ? 192MB dockerfile1_php ? ? ? ? ? ? ? ? ? latest ? ? ? 38b23698b2d9 ? 21 hours ago ? ? ? 470MB 192.168.58.171:80/private/alpine ? v1 ? ? ? ? ? 9234e8fb04c4 ? 3 weeks ago ? ? ? ? 8.31MB alpine ? ? ? ? ? ? ? ? ? ? ? ? ? ? latest ? ? ? 9234e8fb04c4 ? 3 weeks ago ? ? ? ? 8.31MB nginx ? ? ? ? ? ? ? ? ? ? ? ? ? ? latest ? ? ? 2cd1d97f893f ? 3 weeks ago ? ? ? ? 192MB redis ? ? ? ? ? ? ? ? ? ? ? ? ? ? 7.2-alpine ? 30db5eb24b65 ? 4 weeks ago ? ? ? ? 40.9MB mysql ? ? ? ? ? ? ? ? ? ? ? ? ? ? 5.7 ? ? ? ? 5107333e08a8 ? 20 months ago ? ? ? 501MB [root@bogon ~]# docker push 192.168.58.171:80/private/alpine:v1 The push refers to repository [192.168.58.171:80/private/alpine] 418dccb7d85a: Pushed v1: digest: sha256:7b9b6a044d921dfcaea2a843ff19d725948590352198f93cb878fd2c19d7ba3c size: 527
網站訪問可以看到倉庫里上傳了一個鏡像
private——private/alpine
模擬下載鏡像
[root@bogon ~]# docker rmi 192.168.58.171:80/private/alpine:v1 Untagged: 192.168.58.171:80/private/alpine:v1 Untagged: 192.168.58.171:80/private/alpine@sha256:7b9b6a044d921dfcaea2a843ff19d725948590352198f93cb878fd2c19d7ba3c [root@bogon ~]# docker images REPOSITORY ? ? ? ? TAG ? ? ? ? IMAGE ID ? ? ? CREATED ? ? ? ? SIZE alpine ? ? ? ? ? ? php ? ? ? ? 865c7c6fdd6d ? 2 hours ago ? ? 31.3MB alpine ? ? ? ? ? ? nginx ? ? ? 45e852400cec ? 2 hours ago ? ? 12.9MB dockerfile1_nginx ? latest ? ? ? 0f4e5963a308 ? 21 hours ago ? 192MB dockerfile1_php ? ? latest ? ? ? 38b23698b2d9 ? 21 hours ago ? 470MB alpine ? ? ? ? ? ? latest ? ? ? 9234e8fb04c4 ? 3 weeks ago ? ? 8.31MB nginx ? ? ? ? ? ? ? latest ? ? ? 2cd1d97f893f ? 3 weeks ago ? ? 192MB redis ? ? ? ? ? ? ? 7.2-alpine ? 30db5eb24b65 ? 4 weeks ago ? ? 40.9MB mysql ? ? ? ? ? ? ? 5.7 ? ? ? ? 5107333e08a8 ? 20 months ago ? 501MB [root@bogon ~]# docker pull 192.168.58.171:80/private/alpine:v1 v1: Pulling from private/alpine Digest: sha256:7b9b6a044d921dfcaea2a843ff19d725948590352198f93cb878fd2c19d7ba3c Status: Downloaded newer image for 192.168.58.171:80/private/alpine:v1 192.168.58.171:80/private/alpine:v1 [root@bogon ~]# docker images REPOSITORY ? ? ? ? ? ? ? ? ? ? ? ? TAG ? ? ? ? IMAGE ID ? ? ? CREATED ? ? ? ? SIZE alpine ? ? ? ? ? ? ? ? ? ? ? ? ? ? php ? ? ? ? 865c7c6fdd6d ? 2 hours ago ? ? 31.3MB alpine ? ? ? ? ? ? ? ? ? ? ? ? ? ? nginx ? ? ? 45e852400cec ? 2 hours ago ? ? 12.9MB dockerfile1_nginx ? ? ? ? ? ? ? ? latest ? ? ? 0f4e5963a308 ? 21 hours ago ? 192MB dockerfile1_php ? ? ? ? ? ? ? ? ? latest ? ? ? 38b23698b2d9 ? 21 hours ago ? 470MB 192.168.58.171:80/private/alpine ? v1 ? ? ? ? ? 9234e8fb04c4 ? 3 weeks ago ? ? 8.31MB alpine ? ? ? ? ? ? ? ? ? ? ? ? ? ? latest ? ? ? 9234e8fb04c4 ? 3 weeks ago ? ? 8.31MB nginx ? ? ? ? ? ? ? ? ? ? ? ? ? ? latest ? ? ? 2cd1d97f893f ? 3 weeks ago ? ? 192MB redis ? ? ? ? ? ? ? ? ? ? ? ? ? ? 7.2-alpine ? 30db5eb24b65 ? 4 weeks ago ? ? 40.9MB mysql ? ? ? ? ? ? ? ? ? ? ? ? ? ? 5.7 ? ? ? ? 5107333e08a8 ? 20 months ago ? 501MB
harbor啟動命令:docker-compose up -d
二、Docky存儲與網絡配置
192.168.58.170
1、存儲與網絡
掛載主機目錄
默認會自動創建目錄
[root@bogon ~]# docker pull nginx ? [root@bogon ~]# docker run -itd -v /data:/usr/share/nginx/html nginx:latest 1eeab805c8de45098404eafb4a8bb2c314ed4342a78f1a13cb7a443197ac119a ? [root@bogon ~]# cd /data/ [root@bogon data]# ls [root@bogon data]# echo nginx > index.html [root@bogon data]# docker inspect 1e ##查看鏡像的ip,用于下面訪問 ? [root@bogon data]# curl 172.17.0.2 nginx
創建數據卷容器
docker run -itd --volumes--form hopeful_euler nginx:latest中hopeful_euler是關聯鏡像容器的names
[root@bogon data]# docker ps CONTAINER ID ? IMAGE ? ? ? ? ? ? ? COMMAND ? ? ? ? ? ? ? ? ? CREATED ? ? ? ? STATUS ? ? ? ? PORTS ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? NAMES 1eeab805c8de ? nginx:latest ? ? ? "/docker-entrypoint.…" ? 4 minutes ago ? Up 4 minutes ? 80/tcp ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? hopeful_euler a63420226829 ? dockerfile1_nginx ? "/docker-entrypoint.…" ? 22 hours ago ? Up 48 minutes ? 0.0.0.0:80->80/tcp, [::]:80->80/tcp ? dockerfile1_nginx_1 2f7cdb42f221 ? dockerfile1_php ? ? "docker-php-entrypoi…" ? 22 hours ago ? Up 48 minutes ? 9000/tcp ? ? ? ? ? ? ? ? ? ? ? ? ? ? dockerfile1_php_1 3050662d2d77 ? mysql:5.7 ? ? ? ? ? "docker-entrypoint.s…" ? 22 hours ago ? Up 48 minutes ? 3306/tcp, 33060/tcp ? ? ? ? ? ? ? ? ? dockerfile1_mysql_1 [root@bogon data]# docker run -itd --volumes-from hopeful_euler nginx:latest 83d994977bf9dfc0880f15f4ddf2e6aad4d9192b43b84cb71e255cb4a23d4593 ? [root@bogon data]# docker ps CONTAINER ID ? IMAGE ? ? ? ? ? ? ? COMMAND ? ? ? ? ? ? ? ? ? CREATED ? ? ? ? STATUS ? ? ? ? PORTS ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? NAMES 83d994977bf9 ? nginx:latest ? ? ? "/docker-entrypoint.…" ? 29 seconds ago ? Up 28 seconds ? 80/tcp ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? mystifying_sanderson 1eeab805c8de ? nginx:latest ? ? ? "/docker-entrypoint.…" ? 6 minutes ago ? Up 6 minutes ? 80/tcp ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? hopeful_euler a63420226829 ? dockerfile1_nginx ? "/docker-entrypoint.…" ? 22 hours ago ? ? Up 50 minutes ? 0.0.0.0:80->80/tcp, [::]:80->80/tcp ? dockerfile1_nginx_1 2f7cdb42f221 ? dockerfile1_php ? ? "docker-php-entrypoi…" ? 22 hours ago ? ? Up 50 minutes ? 9000/tcp ? ? ? ? ? ? ? ? ? ? ? ? ? ? dockerfile1_php_1 3050662d2d77 ? mysql:5.7 ? ? ? ? ? "docker-entrypoint.s…" ? 22 hours ago ? ? Up 50 minutes ? 3306/tcp, 33060/tcp ? ? ? ? ? ? ? ? ? dockerfile1_mysql_1 [root@bogon data]# curl 172.17.0.3 nginx ##可以看到,通過訪問關聯的ip也能訪問到172.17.0.2的掛載文件
實現負載均衡
設計思路:通過提前配置好代理的容器的配置文件,里面配好負載均衡,在啟動proxy容器時通過本地掛載的形式,使用配置好的配置文件實現負載均衡功能
[root@bogon data]# docker cp 83:/etc/nginx/conf.d/default.conf ./ Successfully copied 3.07kB to /data/./ [root@bogon data]# ls default.conf index.html [root@bogon data]# vim default.conf
更改成代理
[root@bogon data]# docker run -itd --name=proxy -v /data/default.conf:/etc/nginx/conf.d/default.conf nginx:latest 3f0998ef3be0d03bbcc4a8e56e7986e9d5b46d9dd96d8202604a9f1455d49aeb [root@bogon data]# curl 172.17.0.4 nginx
2、Docker網絡
查看現有docker 網絡
[root@bogon data]# docker network ls NETWORK ID ? ? NAME ? ? ? ? ? ? ? ? ? ? ? ? ? ? DRIVER ? SCOPE 69bf9d36028d ? bridge ? ? ? ? ? ? ? ? ? ? ? ? ? bridge ? local 3190c092bcfb ? dockerfile1_discuz-net ? ? ? ? ? bridge ? local 058843202af0 ? host ? ? ? ? ? ? ? ? ? ? ? ? ? ? host ? ? local f9bd13151aaa ? none ? ? ? ? ? ? ? ? ? ? ? ? ? ? null ? ? local e491e22154a6 ? redis-cluster_redis-cluster-net ? bridge ? local
創建網絡
[root@bogon data]# docker network create mynic --driver bridge a951bbcb7501ac8232c4ca23337cb6eac877a7231a7a80751b327c70a0a2964c [root@bogon data]# docker network ls NETWORK ID ? ? NAME ? ? ? ? ? ? ? ? ? ? ? ? ? ? DRIVER ? SCOPE 69bf9d36028d ? bridge ? ? ? ? ? ? ? ? ? ? ? ? ? bridge ? local 3190c092bcfb ? dockerfile1_discuz-net ? ? ? ? ? bridge ? local 058843202af0 ? host ? ? ? ? ? ? ? ? ? ? ? ? ? ? host ? ? local a951bbcb7501 ? mynic ? ? ? ? ? ? ? ? ? ? ? ? ? ? bridge ? local f9bd13151aaa ? none ? ? ? ? ? ? ? ? ? ? ? ? ? ? null ? ? local e491e22154a6 ? redis-cluster_redis-cluster-net ? bridge ? local [root@bogon data]# docker network inspect mynic [{"Name": "mynic","Id": "a951bbcb7501ac8232c4ca23337cb6eac877a7231a7a80751b327c70a0a2964c","Created": "2025-08-07T22:06:30.318365618+08:00","Scope": "local","Driver": "bridge","EnableIPv4": true,"EnableIPv6": false,"IPAM": {"Driver": "default","Options": {},"Config": [{"Subnet": "172.19.0.0/16","Gateway": "172.19.0.1"}]},"Internal": false,"Attachable": false,"Ingress": false,"ConfigFrom": {"Network": ""},"ConfigOnly": false,"Containers": {},"Options": {},"Labels": {}} ] ? ?