目录
一、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": {}} ]