从零开始搭建harbor私有仓库

环境

server:linux redhat7.6
网络适配器:nat(个人习惯)
IP地址:192.168.1.229

安装docker容器

这里我使用的是阿里云镜像中的docker-ce,具体安装方法
完成后在目录/etc/yum.repo.d下下载文件

[root@localhost yum.repos.d]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装docker-ce

[root@localhost yum.repos.d]# yum install docker-ce
已加载插件:langpacks, product-id, search-disabled-repos
正在解决依赖关系
--> 正在检查事务
---> 软件包 docker-ce.x86_64.3.20.10.12-3.el7 将被 安装
--> 正在处理依赖关系 container-selinux >= 2:2.74,它被软件包 3:docker-ce-20.10.12-3.el7.x86_64 需要
--> 正在处理依赖关系 containerd.io >= 1.4.1,它被软件包 3:docker-ce-20.10.12-3.el7.x86_64 需要
--> 正在处理依赖关系 docker-ce-cli,它被软件包 3:docker-ce-20.10.12-3.el7.x86_64 需要
--> 正在处理依赖关系 docker-ce-rootless-extras,它被软件包 3:docker-ce-20.10.12-3.el7.x86_64 需要
--> 正在检查事务
---> 软件包 container-selinux.noarch.2.2.119.2-1.911c772.el7_8 将被 安装
---> 软件包 containerd.io.x86_64.0.1.4.12-3.1.el7 将被 安装
---> 软件包 docker-ce-cli.x86_64.1.20.10.12-3.el7 将被 安装
--> 正在处理依赖关系 docker-scan-plugin(x86-64),它被软件包 1:docker-ce-cli-20.10.12-3.el7.x86_64 需要
---> 软件包 docker-ce-rootless-extras.x86_64.0.20.10.12-3.el7 将被 安装
--> 正在处理依赖关系 fuse-overlayfs >= 0.7,它被软件包 docker-ce-rootless-extras-20.10.12-3.el7.x86_64 需要
--> 正在处理依赖关系 slirp4netns >= 0.4,它被软件包 docker-ce-rootless-extras-20.10.12-3.el7.x86_64 需要
--> 正在检查事务
---> 软件包 docker-scan-plugin.x86_64.0.0.12.0-3.el7 将被 安装
---> 软件包 fuse-overlayfs.x86_64.0.0.7.2-6.el7_8 将被 安装
--> 正在处理依赖关系 libfuse3.so.3(FUSE_3.2)(64bit),它被软件包 fuse-overlayfs-0.7.2-6.el7_8.x86_64 需要
--> 正在处理依赖关系 libfuse3.so.3(FUSE_3.0)(64bit),它被软件包 fuse-overlayfs-0.7.2-6.el7_8.x86_64 需要
--> 正在处理依赖关系 libfuse3.so.3()(64bit),它被软件包 fuse-overlayfs-0.7.2-6.el7_8.x86_64 需要
---> 软件包 slirp4netns.x86_64.0.0.4.3-4.el7_8 将被 安装
--> 正在检查事务
---> 软件包 fuse3-libs.x86_64.0.3.6.1-4.el7 将被 安装
--> 解决依赖关系完成

依赖关系解决

=======================================================================================================
 Package                        架构        版本                           源                     大小
=======================================================================================================
正在安装:
 docker-ce                      x86_64      3:20.10.12-3.el7               docker-ce-stable       23 M
为依赖而安装:
 container-selinux              noarch      2:2.119.2-1.911c772.el7_8      extras                 40 k
 containerd.io                  x86_64      1.4.12-3.1.el7                 docker-ce-stable       28 M
 docker-ce-cli                  x86_64      1:20.10.12-3.el7               docker-ce-stable       30 M
 docker-ce-rootless-extras      x86_64      20.10.12-3.el7                 docker-ce-stable      8.0 M
 docker-scan-plugin             x86_64      0.12.0-3.el7                   docker-ce-stable      3.7 M
 fuse-overlayfs                 x86_64      0.7.2-6.el7_8                  extras                 54 k
 fuse3-libs                     x86_64      3.6.1-4.el7                    extras                 82 k
 slirp4netns                    x86_64      0.4.3-4.el7_8                  extras                 81 k

事务概要
=======================================================================================================
安装  1 软件包 (+8 依赖软件包)

总下载量:93 M
安装大小:381 M
Is this ok [y/d/N]: y
Downloading packages:
(1/9): container-selinux-2.119.2-1.911c772.el7_8.noarch.rpm                     |  40 kB  00:00:01     
warning: /var/cache/yum/x86_64/7Server/docker-ce-stable/packages/docker-ce-20.10.12-3.el7.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 621e9f35: NOKEY
docker-ce-20.10.12-3.el7.x86_64.rpm 的公钥尚未安装
(2/9): docker-ce-20.10.12-3.el7.x86_64.rpm                                      |  23 MB  00:00:09     
(3/9): containerd.io-1.4.12-3.1.el7.x86_64.rpm                                  |  28 MB  00:00:11     
(4/9): docker-ce-rootless-extras-20.10.12-3.el7.x86_64.rpm                      | 8.0 MB  00:00:02     
(5/9): docker-scan-plugin-0.12.0-3.el7.x86_64.rpm                               | 3.7 MB  00:00:01     
(6/9): fuse-overlayfs-0.7.2-6.el7_8.x86_64.rpm                                  |  54 kB  00:00:01     
(7/9): fuse3-libs-3.6.1-4.el7.x86_64.rpm                                        |  82 kB  00:00:01     
(8/9): slirp4netns-0.4.3-4.el7_8.x86_64.rpm                                     |  81 kB  00:00:00     
(9/9): docker-ce-cli-20.10.12-3.el7.x86_64.rpm                                  |  30 MB  00:00:08     
-------------------------------------------------------------------------------------------------------
总计                                                                   5.3 MB/s |  93 MB  00:00:17https://mirrors.aliyun.com/docker-ce/linux/centos/gpg 检索密钥
导入 GPG key 0x621E9F35:
 用户ID     : "Docker Release (CE rpm) "
 指纹       : 060a 61c5 1b55 8a7f 742b 77aa c52f eb6b 621e 9f35
 来自       : https://mirrors.aliyun.com/docker-ce/linux/centos/gpg
是否继续?[y/N]:y
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : docker-scan-plugin-0.12.0-3.el7.x86_64                                             1/9 
  正在安装    : 1:docker-ce-cli-20.10.12-3.el7.x86_64                                              2/9 
  正在安装    : 2:container-selinux-2.119.2-1.911c772.el7_8.noarch                                 3/9 
  正在安装    : containerd.io-1.4.12-3.1.el7.x86_64                                                4/9 
  正在安装    : slirp4netns-0.4.3-4.el7_8.x86_64                                                   5/9 
  正在安装    : fuse3-libs-3.6.1-4.el7.x86_64                                                      6/9 
  正在安装    : fuse-overlayfs-0.7.2-6.el7_8.x86_64                                                7/9 
  正在安装    : 3:docker-ce-20.10.12-3.el7.x86_64                                                  8/9 
  正在安装    : docker-ce-rootless-extras-20.10.12-3.el7.x86_64                                    9/9 
  验证中      : fuse3-libs-3.6.1-4.el7.x86_64                                                      1/9 
  验证中      : 1:docker-ce-cli-20.10.12-3.el7.x86_64                                              2/9 
  验证中      : fuse-overlayfs-0.7.2-6.el7_8.x86_64                                                3/9 
  验证中      : docker-scan-plugin-0.12.0-3.el7.x86_64                                             4/9 
  验证中      : slirp4netns-0.4.3-4.el7_8.x86_64                                                   5/9 
  验证中      : 2:container-selinux-2.119.2-1.911c772.el7_8.noarch                                 6/9 
  验证中      : docker-ce-rootless-extras-20.10.12-3.el7.x86_64                                    7/9 
  验证中      : containerd.io-1.4.12-3.1.el7.x86_64                                                8/9 
  验证中      : 3:docker-ce-20.10.12-3.el7.x86_64                                                  9/9 

已安装:
  docker-ce.x86_64 3:20.10.12-3.el7                                                                    

作为依赖被安装:
  container-selinux.noarch 2:2.119.2-1.911c772.el7_8 containerd.io.x86_64 0:1.4.12-3.1.el7            
  docker-ce-cli.x86_64 1:20.10.12-3.el7              docker-ce-rootless-extras.x86_64 0:20.10.12-3.el7
  docker-scan-plugin.x86_64 0:0.12.0-3.el7           fuse-overlayfs.x86_64 0:0.7.2-6.el7_8            
  fuse3-libs.x86_64 0:3.6.1-4.el7                    slirp4netns.x86_64 0:0.4.3-4.el7_8               

完毕!

查看拥有的仓库

[root@localhost yum.repos.d]# yum repolist
已加载插件:langpacks, product-id, search-disabled-repos
源标识                                     源名称                                                  状态
docker-ce-stable/7Server/x86_64            Docker CE Stable - x86_64                               139
extras/x86_64                              CentOS-7Server - Extras - mirrors.aliyun.com            500
repolist: 639

启动并启用docker服务

[root@localhost yum.repos.d]# cd /
[root@localhost /]# systemctl enable --now docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@localhost /]# docker info
Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Docker Buildx (Docker Inc., v0.7.1-docker)
  scan: Docker Scan (Docker Inc., v0.12.0)

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 0
 Server Version: 20.10.12
 Storage Driver: overlay2
  Backing Filesystem: xfs
  Supports d_type: true
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 7b11cfaabd73bb80907dd23182b9347b4245eb5d
 runc version: v1.0.2-0-g52b36a2
 init version: de40ad0
 Security Options:
  seccomp
   Profile: default
 Kernel Version: 3.10.0-957.el7.x86_64
 Operating System: Red Hat Enterprise Linux Server 7.6 (Maipo)
 OSType: linux
 Architecture: x86_64
 CPUs: 1
 Total Memory: 1.777GiB
 Name: localhost.localdomain
 ID: MHLI:YK4H:CZR5:OXSG:X7S2:MLR4:QG2I:IF62:B4YV:FX34:WZXX:CEBN
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

成功
查看本地镜像,发现没有东西,搜索yakexi007,看到仓库中有四个镜像,拉取game2048

[root@localhost sysctl.d]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
[root@localhost sysctl.d]# docker search yakexi007
NAME                      DESCRIPTION   STARS     OFFICIAL   AUTOMATED
yakexi007/game2048                      0                    
yakexi007/mario                         0                    
yakexi007/nginx                         0                    
yakexi007/base-debian10                 0                    
[root@localhost sysctl.d]# cd /
[root@localhost /]# docker pull yakexi007/game2048
Using default tag: latest
latest: Pulling from yakexi007/game2048
534e72e7cedc: Pull complete 
f62e2f6dfeef: Pull complete 
fe7db6293242: Pull complete 
3f120f6a2bf8: Pull complete 
4ba4e6930ea5: Pull complete 
Digest: sha256:8a34fb9cb168c420604b6e5d32ca6d412cb0d533a826b313b190535c03fe9390
Status: Downloaded newer image for yakexi007/game2048:latest
docker.io/yakexi007/game2048:latest
[root@localhost /]# docker images
REPOSITORY           TAG       IMAGE ID       CREATED       SIZE
yakexi007/game2048   latest    19299002fdbe   5 years ago   55.5MB

看到已经成功拉取game2048的镜像
给容器取名为demo,做一个端口映射,加入镜像

[root@localhost /]# docker run -d --name demo -p 80:80 yakexi007/game2048
f0b59eb0e33f6a2775d99ec0c8c4ef7786e7e4a9d718c95593cedf365cdb9477
[root@localhost /]# docker ps
CONTAINER ID   IMAGE                COMMAND                  CREATED         STATUS         PORTS                                        NAMES
f0b59eb0e33f   yakexi007/game2048   "/bin/sh -c 'sed -i …"   9 seconds ago   Up 6 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp, 443/tcp   demo

看到容器已经成功运行
连接查看
从零开始搭建harbor私有仓库_第1张图片
成功
删除,尝试拉取其他的镜像并做映射

[root@localhost /]# docker rm -f demo
demo
[root@localhost /]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@localhost /]# docker search yakexi007
NAME                      DESCRIPTION   STARS     OFFICIAL   AUTOMATED
yakexi007/game2048                      0                    
yakexi007/mario                         0                    
yakexi007/nginx                         0                    
yakexi007/base-debian10                 0                    
[root@localhost /]# docker pull yakexi007/mario
Using default tag: latest
latest: Pulling from yakexi007/mario
bbe1c4256df3: Pull complete 
911d09728ffd: Pull complete 
615765bc0d9f: Pull complete 
a3ed95caeb02: Pull complete 
d3be476df650: Pull complete 
11b25b5b7583: Pull complete 
Digest: sha256:7758988210dfc2c26d17376171ed8c8e0cb68cb44d9cda06f3382b06304788d9
Status: Downloaded newer image for yakexi007/mario:latest
docker.io/yakexi007/mario:latest
[root@localhost /]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@localhost /]# docker run -d --name demo -p 80:80 yakexi007/mario
7f29cb6e0733b38569b64690d781fef9778362946a542f856e9008fe29fc6471
[root@localhost /]# docker ps
CONTAINER ID   IMAGE             COMMAND                  CREATED         STATUS        PORTS                                         NAMES
7f29cb6e0733   yakexi007/mario   "python3 -m http.ser…"   5 seconds ago   Up 1 second   0.0.0.0:80->80/tcp, :::80->80/tcp, 8080/tcp   demo

刷新一下
从零开始搭建harbor私有仓库_第2张图片

也成功了
尝试拉取Nginx

[root@localhost docker]# docker search nginx
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
nginx                             Official build of Nginx.                        16018     [OK]       
jwilder/nginx-proxy               Automated Nginx reverse proxy for docker con…   2103                 [OK]
richarvey/nginx-php-fpm           Container running Nginx + PHP-FPM capable of…   820                  [OK]
jc21/nginx-proxy-manager          Docker container for managing Nginx proxy ho…   297                  
linuxserver/nginx                 An Nginx container, brought to you by LinuxS…   161                  
tiangolo/nginx-rtmp               Docker image with Nginx using the nginx-rtmp…   148                  [OK]
jlesage/nginx-proxy-manager       Docker container for Nginx Proxy Manager        147                  [OK]
alfg/nginx-rtmp                   NGINX, nginx-rtmp-module and FFmpeg from sou…   112                  [OK]
jasonrivers/nginx-rtmp            Docker images to host RTMP streams using NGI96                   [OK]
nginxdemos/hello                  NGINX webserver that serves a simple page co…   80                   [OK]
privatebin/nginx-fpm-alpine       PrivateBin running on an Nginx, php-fpm & Al…   61                   [OK]
nginx/nginx-ingress               NGINX and  NGINX Plus Ingress Controllers fo…   59                   
nginxinc/nginx-unprivileged       Unprivileged NGINX Dockerfiles                  56                   
nginxproxy/nginx-proxy            Automated Nginx reverse proxy for docker con…   31                   
staticfloat/nginx-certbot         Opinionated setup for automatic TLS certs lo…   25                   [OK]
nginx/nginx-prometheus-exporter   NGINX Prometheus Exporter for NGINX and NGIN22                   
schmunk42/nginx-redirect          A very simple container to redirect HTTP tra…   19                   [OK]
centos/nginx-112-centos7          Platform for running nginx 1.12 or building …   16                   
centos/nginx-18-centos7           Platform for running nginx 1.8 or building n…   13                   
bitwarden/nginx                   The Bitwarden nginx web server acting as a r…   12                   
flashspys/nginx-static            Super Lightweight Nginx Image                   11                   [OK]
mailu/nginx                       Mailu nginx frontend                            10                   [OK]
sophos/nginx-vts-exporter         Simple server that scrapes Nginx vts stats a…   7                    [OK]
ansibleplaybookbundle/nginx-apb   An APB to deploy NGINX                          3                    [OK]
wodby/nginx                       Generic nginx                                   1
[root@localhost docker]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
a2abf6c4d29d: Pull complete 
f3409a9a9e73: Pull complete 
9919a6cbae9c: Pull complete 
fc1ce43285d7: Pull complete 
1f01ab499216: Pull complete 
13cfaf79ff6d: Pull complete 
Digest: sha256:366e9f1ddebdb844044c2fafd13b75271a9f620819370f8971220c2b330a9254
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
[root@localhost docker]# docker ps
CONTAINER ID   IMAGE             COMMAND                  CREATED          STATUS         PORTS                                   NAMES
b2a7a078aa8f   yakexi007/mario   "python3 -m http.ser…"   10 minutes ago   Up 9 minutes   0.0.0.0:80->8080/tcp, :::80->8080/tcp   demo
[root@localhost docker]# docker rm -f demo
demo
[root@localhost docker]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@localhost docker]# docker run -d --name demo -p 80:80 nginx
d6cbc86f7b7964ede2d758a0ceb27618931b33b4365132ba8126379db2d88559
[root@localhost docker]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS         PORTS                               NAMES
d6cbc86f7b79   nginx     "/docker-entrypoint.…"   12 seconds ago   Up 9 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp   demo
[root@localhost docker]# curl localhost
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>
[root@localhost docker]# docker images
REPOSITORY           TAG       IMAGE ID       CREATED       SIZE
nginx                latest    f6987c8d6ed5   4 days ago    141MB
yakexi007/game2048   latest    19299002fdbe   5 years ago   55.5MB
yakexi007/mario      latest    9a35a9e43e8c   6 years ago   198MB
[root@localhost docker]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                               NAMES
d6cbc86f7b79   nginx     "/docker-entrypoint.…"   34 minutes ago   Up 34 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp   demo
[root@localhost docker]# docker rm -f demo 
demo
[root@localhost docker]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

拉取busybox

[root@localhost docker]# docker pull busybox
Using default tag: latest
latest: Pulling from library/busybox
3cb635b06aa2: Pull complete 
Digest: sha256:b5cfd4befc119a590ca1a81d6bb0fa1fb19f1fbebd0397f25fae164abe1e8a6a
Status: Downloaded newer image for busybox:latest
docker.io/library/busybox:latest

使用busybox

[root@localhost docker]# docker images
REPOSITORY           TAG       IMAGE ID       CREATED       SIZE
nginx                latest    f6987c8d6ed5   4 days ago    141MB
busybox              latest    ffe9d497c324   2 weeks ago   1.24MB
yakexi007/game2048   latest    19299002fdbe   5 years ago   55.5MB
yakexi007/mario      latest    9a35a9e43e8c   6 years ago   198MB
[root@localhost docker]# docker run -it --name demo busybox
/ # ls
bin   dev   etc   home  proc  root  sys   tmp   usr   var
/ # cd /etc/
/etc # touch file1
/etc # touch file2
/etc # touch file3
/etc # touch file4
/etc # ls
file1        file3        group        hosts        mtab         passwd       shadow
file2        file4        hostname     localtime    network      resolv.conf
新建文件成功
退出
/etc # exit
查看
[root@localhost docker]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED              STATUS                        PORTS     NAMES
fec55f2c45e8   busybox   "sh"      About a minute ago   Exited (127) 15 seconds ago             demo
[root@localhost docker]# docker start demo
demo
[root@localhost docker]# docker ps 
CONTAINER ID   IMAGE     COMMAND   CREATED         STATUS         PORTS     NAMES
fec55f2c45e8   busybox   "sh"      2 minutes ago   Up 2 seconds             demo
[root@localhost docker]# docker attach demo
/ # ls
bin   dev   etc   home  proc  root  sys   tmp   usr   var
修改内容后退出,修改无效
/ # read escape sequence
[root@localhost docker]# docker ps 
CONTAINER ID   IMAGE     COMMAND   CREATED         STATUS              PORTS     NAMES
fec55f2c45e8   busybox   "sh"      3 minutes ago   Up About a minute             demo

如果想修改有效,可以提交容器到tagv1

[root@localhost docker]# docker commit demo demo:v1
sha256:db428082afdeb0bc8e69d589b4cebb901dcf73ebe07fa55ee7ed6118dda83717
[root@localhost docker]# docker images
REPOSITORY           TAG       IMAGE ID       CREATED         SIZE
demo                 v1        db428082afde   9 seconds ago   1.24MB
nginx                latest    f6987c8d6ed5   4 days ago      141MB
busybox              latest    ffe9d497c324   2 weeks ago     1.24MB
yakexi007/game2048   latest    19299002fdbe   5 years ago     55.5MB
yakexi007/mario      latest    9a35a9e43e8c   6 years ago     198MB
[root@localhost docker]# docker history demo:v1
IMAGE          CREATED          CREATED BY                                      SIZE      COMMENT
db428082afde   34 seconds ago   sh                                              91B       
ffe9d497c324   2 weeks ago      /bin/sh -c #(nop)  CMD ["sh"]                   0B        
<missing>      2 weeks ago      /bin/sh -c #(nop) ADD file:e2d2d9591696b1478…   1.24MB    
[root@localhost docker]# docker history busybox:latest
IMAGE          CREATED       CREATED BY                                      SIZE      COMMENT
ffe9d497c324   2 weeks ago   /bin/sh -c #(nop)  CMD ["sh"]                   0B        
<missing>      2 weeks ago   /bin/sh -c #(nop) ADD file:e2d2d9591696b1478…   1.24MB    
[root@localhost docker]# docker rmi demo:v1
Untagged: demo:v1
Deleted: sha256:db428082afdeb0bc8e69d589b4cebb901dcf73ebe07fa55ee7ed6118dda83717
Deleted: sha256:346c4e52d157376dc257d40f347cf01543b2c543b3e133fed355ab2934c3ffdd
[root@localhost docker]# docker images
REPOSITORY           TAG       IMAGE ID       CREATED       SIZE
nginx                latest    f6987c8d6ed5   4 days ago    141MB
busybox              latest    ffe9d497c324   2 weeks ago   1.24MB
yakexi007/game2048   latest    19299002fdbe   5 years ago   55.5MB
yakexi007/mario      latest    9a35a9e43e8c   6 years ago   198MB
[root@localhost docker]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED         STATUS                     PORTS     NAMES
320be8aac198   busybox   "sh"      5 minutes ago   Exited (0) 3 minutes ago             demo
[root@localhost docker]# docker rm -f demo
demo
[root@localhost docker]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

创建harbor仓库

在github中下载harbor
个人建议首选离线,在线会比较慢
harbor-offline-installer-v2.4.1.tgz
下载后进行解压

[root@localhost ~]# tar zxf harbor-offline-installer-v2.4.1.tgz
[root@localhost ~]# ls
anaconda-ks.cfg                      initial-setup-ks.cfg     openssl11              公共  图片  音乐
harbor                               keepalived-1.2.5         openssl-1.1.1m         模板  文档  桌面
harbor-offline-installer-v2.4.1.tgz  keepalived-1.2.5.tar.gz  openssl-1.1.1m.tar.gz  视频  下载
[root@localhost ~]# cd harbor/
[root@localhost harbor]# ls
common.sh  harbor.v2.4.1.tar.gz  harbor.yml.tmpl  install.sh  LICENSE  prepare
[root@localhost harbor]# mv harbor.yml.tmpl harbor.yml
[root@localhost harbor]# ls
common.sh  harbor.v2.4.1.tar.gz  harbor.yml  install.sh  LICENSE  prepare
[root@localhost harbor]# vim harbor.yml
[root@localhost harbor]# cat harbor.yml 
# Configuration file of Harbor

# The IP address or hostname to access admin UI and registry service.
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
hostname: reg.smy.org                         *修改域名

# http related config
http:
  # port for http, default is 80. If https enabled, this port will redirect to https port
  port: 80

# https related config
https:
  # https port for harbor, default is 443
  port: 443
  # The path of cert and key files for nginx
  certificate: /           *修改证书位置
  private_key: /           *修改密钥位置

# # Uncomment following will enable tls communication between all harbor components
# internal_tls:
#   # set enabled to true means internal tls is enabled
#   enabled: true
#   # put your cert and key files on dir
#   dir: /etc/harbor/tls/internal

# Uncomment external_url if you want to enable external proxy
# And when it enabled the hostname will no longer used
# external_url: https://reg.mydomain.com:8433

# The initial password of Harbor admin
# It only works in first time to install harbor
# Remember Change the admin password from UI after launching Harbor.
harbor_admin_password: smy                      *修改harbor登录密码

# Harbor DB configuration
database:
  # The password for the root user of Harbor DB. Change this before any production use.
  password: root123
  # The maximum number of connections in the idle connection pool. If it <=0, no idle connections are retained.
  max_idle_conns: 100
  # The maximum number of open connections to the database. If it <= 0, then there is no limit on the number of open connections.
  # Note: the default number of connections is 1024 for postgres of harbor.
  max_open_conns: 900

# The default data volume
data_volume: /data

# Harbor Storage settings by default is using /data dir on local filesystem
# Uncomment storage_service setting If you want to using external storage
# storage_service:
#   # ca_bundle is the path to the custom root ca certificate, which will be injected into the truststore
#   # of registry's and chart repository's containers.  This is usually needed when the user hosts a internal storage with self signed certificate.
#   ca_bundle:

#   # storage backend, default is filesystem, options include filesystem, azure, gcs, s3, swift and oss
#   # for more info about this configuration please refer https://docs.docker.com/registry/configuration/
#   filesystem:
#     maxthreads: 100
#   # set disable to true when you want to disable registry redirect
#   redirect:
#     disabled: false

# Trivy configuration
#
# Trivy DB contains vulnerability information from NVD, Red Hat, and many other upstream vulnerability databases.
# It is downloaded by Trivy from the GitHub release page https://github.com/aquasecurity/trivy-db/releases and cached
# in the local file system. In addition, the database contains the update timestamp so Trivy can detect whether it
# should download a newer version from the Internet or use the cached one. Currently, the database is updated every
# 12 hours and published as a new release to GitHub.
trivy:
  # ignoreUnfixed The flag to display only fixed vulnerabilities
  ignore_unfixed: false
  # skipUpdate The flag to enable or disable Trivy DB downloads from GitHub
  #
  # You might want to enable this flag in test or CI/CD environments to avoid GitHub rate limiting issues.
  # If the flag is enabled you have to download the `trivy-offline.tar.gz` archive manually, extract `trivy.db` and
  # `metadata.json` files and mount them in the `/home/scanner/.cache/trivy/db` path.
  skip_update: false
  #
  # insecure The flag to skip verifying registry certificate
  insecure: false
  # github_token The GitHub access token to download Trivy DB
  #
  # Anonymous downloads from GitHub are subject to the limit of 60 requests per hour. Normally such rate limit is enough
  # for production operations. If, for any reason, it's not enough, you could increase the rate limit to 5000
  # requests per hour by specifying the GitHub access token. For more details on GitHub rate limiting please consult
  # https://developer.github.com/v3/#rate-limiting
  #
  # You can create a GitHub token by following the instructions in
  # https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line
  #
  # github_token: xxx

jobservice:
  # Maximum number of job workers in job service
  max_job_workers: 10

notification:
  # Maximum retry count for webhook job
  webhook_job_max_retry: 10

chart:
  # Change the value of absolute_url to enabled can enable absolute url in chart
  absolute_url: disabled

# Log configurations
log:
  # options are debug, info, warning, error, fatal
  level: info
  # configs for logs in local storage
  local:
    # Log files are rotated log_rotate_count times before being removed. If count is 0, old versions are removed rather than rotated.
    rotate_count: 50
    # Log files are rotated only if they grow bigger than log_rotate_size bytes. If size is followed by k, the size is assumed to be in kilobytes.
    # If the M is used, the size is in megabytes, and if G is used, the size is in gigabytes. So size 100, size 100k, size 100M and size 100G
    # are all valid.
    rotate_size: 200M
    # The directory on your host that store log
    location: /var/log/harbor

  # Uncomment following lines to enable external syslog endpoint.
  # external_endpoint:
  #   # protocol used to transmit log to external endpoint, options is tcp or udp
  #   protocol: tcp
  #   # The host of external endpoint
  #   host: localhost
  #   # Port of external endpoint
  #   port: 5140

#This attribute is for migrator to detect the version of the .cfg file, DO NOT MODIFY!
_version: 2.4.0

# Uncomment external_database if using external database.
# external_database:
#   harbor:
#     host: harbor_db_host
#     port: harbor_db_port
#     db_name: harbor_db_name
#     username: harbor_db_username
#     password: harbor_db_password
#     ssl_mode: disable
#     max_idle_conns: 2
#     max_open_conns: 0
#   notary_signer:
#     host: notary_signer_db_host
#     port: notary_signer_db_port
#     db_name: notary_signer_db_name
#     username: notary_signer_db_username
#     password: notary_signer_db_password
#     ssl_mode: disable
#   notary_server:
#     host: notary_server_db_host
#     port: notary_server_db_port
#     db_name: notary_server_db_name
#     username: notary_server_db_username
#     password: notary_server_db_password
#     ssl_mode: disable

# Uncomment external_redis if using external Redis server
# external_redis:
#   # support redis, redis+sentinel
#   # host for redis: :
#   # host for redis+sentinel:
#   #  :,:,:
#   host: redis:6379
#   password:
#   # sentinel_master_set must be set to support redis+sentinel
#   #sentinel_master_set:
#   # db_index 0 is for core, it's unchangeable
#   registry_db_index: 1
#   jobservice_db_index: 2
#   chartmuseum_db_index: 3
#   trivy_db_index: 5
#   idle_timeout_seconds: 30

# Uncomment uaa for trusting the certificate of uaa instance that is hosted via self-signed cert.
# uaa:
#   ca_file: /path/to/ca

# Global proxy
# Config http proxy for components, e.g. http://my.proxy.com:3128
# Components doesn't need to connect to each others via http proxy.
# Remove component from `components` array if want disable proxy
# for it. If you want use proxy for replication, MUST enable proxy
# for core and jobservice, and set `http_proxy` and `https_proxy`.
# Add domain to the `no_proxy` field, when you want disable proxy
# for some special registry.
proxy:
  http_proxy:
  https_proxy:
  no_proxy:
  components:
    - core
    - jobservice
    - trivy

# metric:
#   enabled: false
#   port: 9090
#   path: /metrics

# Trace related config
# only can enable one trace provider(jaeger or otel) at the same time,
# and when using jaeger as provider, can only enable it with agent mode or collector mode.
# if using jaeger collector mode, uncomment endpoint and uncomment username, password if needed
# if using jaeger agetn mode uncomment agent_host and agent_port
# trace:
#   enabled: true
#   # set sample_rate to 1 if you wanna sampling 100% of trace data; set 0.5 if you wanna sampling 50% of trace data, and so forth
#   sample_rate: 1
#   # # namespace used to differenciate different harbor services
#   # namespace:
#   # # attributes is a key value dict contains user defined attributes used to initialize trace provider
#   # attributes:
#   #   application: harbor
#   # # jaeger should be 1.26 or newer.
#   # jaeger:
#   #   endpoint: http://hostname:14268/api/traces
#   #   username:
#   #   password:
#   #   agent_host: hostname
#   #   # export trace data by jaeger.thrift in compact mode
#   #   agent_port: 6831
#   # otel:
#   #   endpoint: hostname:4318
#   #   url_path: /v1/traces
#   #   compression: false
#   #   insecure: true
#   #   timeout: 10s

修改完成后保存退出

下载并安装openssl11

看到需要有证书和密钥,下载openssl
我下载的是openssl-1.1.1m.tar.gz
解压

[root@localhost ~]# ls
anaconda-ks.cfg  initial-setup-ks.cfg  openssl11  公共  图片  音乐  harbor  keepalived-1.2.5  模板  文档  桌面  harbor-offline-installer-v2.4.1.tgz  keepalived-1.2.5.tar.gz  openssl-1.1.1m.tar.gz  视频  下载
[root@localhost ~]# tar -xzf openssl-1.0.2f.tar.gz
[root@localhost ~]# ls
anaconda-ks.cfg   initial-setup-ks.cfg    openssl11    公共  图片  音乐
harbor    keepalived-1.2.5    openssl-1.1.1m    模板  文档  桌面
harbor-offline-installer-v2.4.1.tgz  keepalived-1.2.5.tar.gz  openssl-1.1.1m.tar.gz  视频  下载

安装

[root@localhost openssl11]# yum list openssl11
已加载插件:langpacks, product-id, search-disabled-repos
已安装的软件包
openssl11.x86_64                                  1:1.1.1k-2.el7                                  @epel
[root@localhost openssl11]# mkdir /data
[root@localhost openssl11]# ls
bin  include  lib  share  ssl
[root@localhost openssl11]# cd /data/
[root@localhost data]# ls
[root@localhost data]# mkdir certs
[root@localhost data]# ls
certs
[root@localhost data]# openssl11 req -newkey rsa:4096 -nodes -sha256 -keyout certs/smy.org.key -addext "subjectAltName = DNS:reg.smy.org" -x509 -days 365 -out certs/smy.org.crt
Can't load /root/.rnd into RNG
140587046758208:error:2406F079:random number generator:RAND_load_file:Cannot open file:crypto/rand/randfile.c:98:Filename=/root/.rnd
Generating a RSA private key
.......................................................................++++
...........................................................++++
writing new private key to 'certs/smy.org.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:cn
State or Province Name (full name) []:henan
Locality Name (eg, city) [Default City]:xinxiang                       
Organization Name (eg, company) [Default Company Ltd]:smy
Organizational Unit Name (eg, section) []:linux
Common Name (eg, your name or your server's hostname) []:reg.smy.org
Email Address []:root@smy.org
[root@localhost data]# ls certs/
smy.org.crt  smy.org.key

已经生成证书和密钥,根据生成的路径编辑harbor.yml文件刚才*的证书和密钥路径
在hosts中映射域名

[root@localhost harbor]# vim harbor.yml 
[root@localhost harbor]# ll /data/certs/smy.org.crt 
-rw-r--r--. 1 root root 2134 1226 14:14 /data/certs/smy.org.crt
[root@localhost harbor]# ll /data/certs/smy.org.key 
-rw-------. 1 root root 3272 1226 14:12 /data/certs/smy.org.key
[root@localhost harbor]# vim /etc/hosts
[root@localhost harbor]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.229      localhost  reg.smy.org
[root@localhost harbor]# ping reg.smy.org
PING localhost (192.168.1.229) 56(84) bytes of data.
64 bytes from localhost (192.168.1.229): icmp_seq=1 ttl=64 time=11.7 ms
64 bytes from localhost (192.168.1.229): icmp_seq=2 ttl=64 time=0.083 ms
^C
--- localhost ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.083/5.930/11.777/5.847 ms

看到域名可用
开始安装!

[root@localhost harbor]# ./install.sh 

[Step 0]: checking if docker is installed ...

Note: docker version: 20.10.12

[Step 1]: checking docker-compose is installed ...
✖ Need to install docker-compose(1.18.0+) by yourself first and run this script again.
安装docker-compose
[root@localhost harbor]# ls
common.sh  harbor.v2.4.1.tar.gz  harbor.yml  install.sh  LICENSE  prepare

发现报错,未安装docker-compose
下载一个docker-compose
我选择下载docker-compose-linux-x86_64
将下载的docker-compose移动到/usr/local/bin/docker-compose下,并赋予可执行权限

[root@localhost ~]# mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
[root@localhost ~]# chmod +x /usr/local/bin/docker-compose 

此时回到harbor目录进行安装

[root@localhost ~]# cd
[root@localhost ~]# cd harbor/
[root@localhost harbor]# ./install.sh 

[Step 0]: checking if docker is installed ...

Note: docker version: 20.10.12

[Step 1]: checking docker-compose is installed ...

Note: docker-compose version: 2.2.2

[Step 2]: loading Harbor images ...
1e3f0dc884e2: Loading layer  39.45MB/39.45MB
3fd9ccd5eeaa: Loading layer  5.275MB/5.275MB
c600bceee2f7: Loading layer  4.096kB/4.096kB
724cd8711815: Loading layer  3.072kB/3.072kB
d7c82a981c89: Loading layer  17.32MB/17.32MB
a814341c2c44: Loading layer  18.12MB/18.12MB
Loaded image: goharbor/registry-photon:v2.4.1
b00595b6932d: Loading layer   5.27MB/5.27MB
e34892d856ce: Loading layer  5.928MB/5.928MB
ac5a22c6047d: Loading layer  14.47MB/14.47MB
3d1ac12eb215: Loading layer  29.29MB/29.29MB
394b4b2ea0fa: Loading layer  22.02kB/22.02kB
bb0deb7416e0: Loading layer  14.47MB/14.47MB
Loaded image: goharbor/notary-signer-photon:v2.4.1
c3b02aec560c: Loading layer  8.422MB/8.422MB
4d5b3acd128e: Loading layer  3.584kB/3.584kB
7afbf44c3706: Loading layer   2.56kB/2.56kB
31f95ac6eb9a: Loading layer  75.59MB/75.59MB
8981a12f5c17: Loading layer  5.632kB/5.632kB
16eb0821dcc3: Loading layer  96.26kB/96.26kB
b19eba29a0de: Loading layer  11.78kB/11.78kB
f0785d2e9965: Loading layer  76.49MB/76.49MB
26ce29b9d7ab: Loading layer   2.56kB/2.56kB
Loaded image: goharbor/harbor-core:v2.4.1
59e3814aa5f1: Loading layer  119.8MB/119.8MB
1e99e9cd580e: Loading layer  3.072kB/3.072kB
2bab205001c7: Loading layer   59.9kB/59.9kB
c51450af480c: Loading layer  61.95kB/61.95kB
Loaded image: goharbor/redis-photon:v2.4.1
3636ff090145: Loading layer  8.421MB/8.421MB
fa3d57c372c8: Loading layer  3.584kB/3.584kB
a2c97825dcbf: Loading layer   2.56kB/2.56kB
366b1363b528: Loading layer  86.95MB/86.95MB
3d2fd6d13a0f: Loading layer  87.74MB/87.74MB
Loaded image: goharbor/harbor-jobservice:v2.4.1
8f71cf8bc1c6: Loading layer  5.275MB/5.275MB
5cb3457d8e25: Loading layer  4.096kB/4.096kB
02c18fad9dc6: Loading layer  17.32MB/17.32MB
7bbcea1ec44e: Loading layer  3.072kB/3.072kB
f2842e1ada70: Loading layer  28.69MB/28.69MB
4665575c3f9e: Loading layer  46.81MB/46.81MB
Loaded image: goharbor/harbor-registryctl:v2.4.1
439595cfbbc0: Loading layer  7.192MB/7.192MB
Loaded image: goharbor/nginx-photon:v2.4.1
a19de03ace6b: Loading layer   5.27MB/5.27MB
35bbd4cf35b6: Loading layer  5.928MB/5.928MB
88f852ebd746: Loading layer  15.88MB/15.88MB
e3c0db81a28c: Loading layer  29.29MB/29.29MB
f74e521b7a55: Loading layer  22.02kB/22.02kB
7d97a705f439: Loading layer  15.88MB/15.88MB
Loaded image: goharbor/notary-server-photon:v2.4.1
1e6473070b18: Loading layer    124MB/124MB
f05c1a477d2d: Loading layer  3.584kB/3.584kB
bcab3e00aa98: Loading layer  3.072kB/3.072kB
970d569f474a: Loading layer   2.56kB/2.56kB
c659c9812277: Loading layer  3.072kB/3.072kB
9d401ff8bf07: Loading layer  3.584kB/3.584kB
968dfed00d2e: Loading layer  19.97kB/19.97kB
Loaded image: goharbor/harbor-log:v2.4.1
b64000a1cd2c: Loading layer  1.097MB/1.097MB
e3fb7ac15701: Loading layer  5.889MB/5.889MB
d6e7f8008582: Loading layer  165.9MB/165.9MB
eff0812a8c6f: Loading layer  15.07MB/15.07MB
91a6abd7a540: Loading layer  4.096kB/4.096kB
47e875926154: Loading layer  6.144kB/6.144kB
04876e025d4a: Loading layer  3.072kB/3.072kB
b817a88114e6: Loading layer  2.048kB/2.048kB
e5fb37021dff: Loading layer   2.56kB/2.56kB
767486d5c318: Loading layer   2.56kB/2.56kB
b92f2b842b46: Loading layer   2.56kB/2.56kB
e90e3a7ea4e9: Loading layer  8.704kB/8.704kB
Loaded image: goharbor/harbor-db:v2.4.1
daf3d38cddc8: Loading layer  8.422MB/8.422MB
8013b2cbc0b9: Loading layer  18.13MB/18.13MB
4445f5ea7083: Loading layer  4.608kB/4.608kB
32e035f0af8e: Loading layer  18.93MB/18.93MB
Loaded image: goharbor/harbor-exporter:v2.4.1
0ad72e88d766: Loading layer   8.54MB/8.54MB
fe195f48d47b: Loading layer  4.096kB/4.096kB
71f2671db231: Loading layer  3.072kB/3.072kB
ddda0b4a8eae: Loading layer  39.27MB/39.27MB
c3fe76027866: Loading layer  12.37MB/12.37MB
d82a7403c39a: Loading layer  52.43MB/52.43MB
Loaded image: goharbor/trivy-adapter-photon:v2.4.1
03e449493f09: Loading layer  5.275MB/5.275MB
4f4a25c7cc0d: Loading layer   64.5MB/64.5MB
77a37df05436: Loading layer  3.072kB/3.072kB
47c58e48962d: Loading layer  4.096kB/4.096kB
5dd56c28f3fc: Loading layer  65.29MB/65.29MB-1.
Loaded image: goharbor/chartmuseum-photon:v2.4.1
8b7cbddd8918: Loading layer  165.6MB/165.6MB
b8157b6f7cb8: Loading layer   57.6MB/57.6MB
4a53b9a92b30: Loading layer   2.56kB/2.56kB
59184fc56c3c: Loading layer  1.536kB/1.536kB
99431fe2c10f: Loading layer  12.29kB/12.29kB
3735b7f4881f: Loading layer   2.62MB/2.62MB
bcff3633b236: Loading layer  325.6kB/325.6kB
Loaded image: goharbor/prepare:v2.4.1
eb57d0945b2e: Loading layer  7.192MB/7.192MB
dd9069fd53a8: Loading layer  7.355MB/7.355MB
e779dab1d180: Loading layer  1.754MB/1.754MB
Loaded image: goharbor/harbor-portal:v2.4.1


[Step 3]: preparing environment ...

[Step 4]: preparing harbor configs ...
prepare base dir is set to /root/harbor
WARNING: IPv4 forwarding is disabled. Networking will not work.
Generated configuration file: /config/portal/nginx.conf
Generated configuration file: /config/log/logrotate.conf
Generated configuration file: /config/log/rsyslog_docker.conf
Generated configuration file: /config/nginx/nginx.conf
Generated configuration file: /config/core/env
Generated configuration file: /config/core/app.conf
Generated configuration file: /config/registry/config.yml
Generated configuration file: /config/registryctl/env
Generated configuration file: /config/registryctl/config.yml
Generated configuration file: /config/db/env
Generated configuration file: /config/jobservice/env
Generated configuration file: /config/jobservice/config.yml
Generated and saved secret to file: /data/secret/keys/secretkey
Successfully called func: create_root_cert
Generated configuration file: /compose_location/docker-compose.yml
Clean up the input dir



[Step 5]: starting Harbor ...
[+] Running 10/10
 ⠿ Network harbor_harbor        Created                                                           7.8s
 ⠿ Container harbor-log         Started                                                           2.8s
 ⠿ Container registry           Started                                                          15.3s
 ⠿ Container harbor-portal      Started                                                          22.8s
 ⠿ Container redis              Started                                                          22.8s
 ⠿ Container registryctl        Started                                                          22.5s
 ⠿ Container harbor-db          Started                                                          13.9s
 ⠿ Container harbor-core        Started                                                          24.1s
 ⠿ Container harbor-jobservice  Started                                                          50.6s
 ⠿ Container nginx              Started                                                          52.2s
✔ ----Harbor has been installed and started successfully.----

成功
查看

[root@localhost harbor]# docker ps
CONTAINER ID   IMAGE                                COMMAND                  CREATED         STATUS                   PORTS                                                                            NAMES
c6750a87a689   goharbor/harbor-jobservice:v2.4.1    "/harbor/entrypoint.…"   3 minutes ago   Up 2 minutes (healthy)                                                                                    harbor-jobservice
968d2e9a245f   goharbor/nginx-photon:v2.4.1         "nginx -g 'daemon of…"   3 minutes ago   Up 2 minutes (healthy)   0.0.0.0:80->8080/tcp, :::80->8080/tcp, 0.0.0.0:443->8443/tcp, :::443->8443/tcp   nginx
afee09a11ef7   goharbor/harbor-core:v2.4.1          "/harbor/entrypoint.…"   3 minutes ago   Up 2 minutes (healthy)                                                                                    harbor-core
3c28bacb604c   goharbor/harbor-registryctl:v2.4.1   "/home/harbor/start.…"   3 minutes ago   Up 2 minutes (healthy)                                                                                    registryctl
723744c9affa   goharbor/redis-photon:v2.4.1         "redis-server /etc/r…"   3 minutes ago   Up 2 minutes (healthy)                                                                                    redis
caba75f40589   goharbor/registry-photon:v2.4.1      "/home/harbor/entryp…"   3 minutes ago   Up 3 minutes (healthy)                                                                                    registry
3a58ddb2bbdd   goharbor/harbor-portal:v2.4.1        "nginx -g 'daemon of…"   3 minutes ago   Up 2 minutes (healthy)                                                                                    harbor-portal
66d02cb675b0   goharbor/harbor-db:v2.4.1            "/docker-entrypoint.…"   3 minutes ago   Up 3 minutes (healthy)                                                                                    harbor-db
c4b2207875dd   goharbor/harbor-log:v2.4.1           "/bin/sh -c /usr/loc…"   3 minutes ago   Up 3 minutes (healthy)   127.0.0.1:1514->10514/tcp                                                        harbor-log
[root@localhost harbor]# docker-compose ps
NAME                COMMAND                  SERVICE             STATUS              PORTS
harbor-core         "/harbor/entrypoint.…"   core                running (healthy)   
harbor-db           "/docker-entrypoint.…"   postgresql          running (healthy)   
harbor-jobservice   "/harbor/entrypoint.…"   jobservice          running (healthy)   
harbor-log          "/bin/sh -c /usr/loc…"   log                 running (healthy)   127.0.0.1:1514->10514/tcp
harbor-portal       "nginx -g 'daemon of…"   portal              running (healthy)   
nginx               "nginx -g 'daemon of…"   proxy               running (healthy)   0.0.0.0:80->8080/tcp, 0.0.0.0:443->8443/tcp, :::80->8080/tcp, :::443->8443/tcp
redis               "redis-server /etc/r…"   redis               running (healthy)   
registry            "/home/harbor/entryp…"   registry            running (healthy)   
registryctl         "/home/harbor/start.…"   registryctl         running (healthy)   
[root@localhost harbor]# 
[root@localhost harbor]# ls
common  common.sh  docker-compose.yml  harbor.v2.4.1.tar.gz  harbor.yml  install.sh  LICENSE  prepare
[root@localhost harbor]# cd
[root@localhost ~]# docker images
REPOSITORY                      TAG       IMAGE ID       CREATED       SIZE
nginx                           latest    f6987c8d6ed5   5 days ago    141MB
goharbor/harbor-exporter        v2.4.1    0ee361b5454a   10 days ago   82.7MB
goharbor/chartmuseum-photon     v2.4.1    337a9d03b197   10 days ago   174MB
goharbor/redis-photon           v2.4.1    2bbe19b8cc5d   10 days ago   156MB
goharbor/trivy-adapter-photon   v2.4.1    d39fd42c93f0   10 days ago   151MB
goharbor/notary-server-photon   v2.4.1    e75c68b6638b   10 days ago   111MB
goharbor/notary-signer-photon   v2.4.1    17a627caf6dd   10 days ago   108MB
goharbor/harbor-registryctl     v2.4.1    bff3d2665456   10 days ago   137MB
goharbor/registry-photon        v2.4.1    b46e45c49d6f   10 days ago   79.2MB
goharbor/nginx-photon           v2.4.1    78aad8c8ef41   10 days ago   45.7MB
goharbor/harbor-log             v2.4.1    c86562daee64   10 days ago   160MB
goharbor/harbor-jobservice      v2.4.1    d8baceb5f1f6   10 days ago   220MB
goharbor/harbor-core            v2.4.1    80a4e3e60403   10 days ago   198MB
goharbor/harbor-portal          v2.4.1    1c9ed1cc3cb9   10 days ago   54.7MB
goharbor/harbor-db              v2.4.1    417d0a840247   10 days ago   222MB
goharbor/prepare                v2.4.1    e9158d34970b   10 days ago   257MB
busybox                         latest    ffe9d497c324   2 weeks ago   1.24MB
yakexi007/game2048              latest    19299002fdbe   5 years ago   55.5MB
yakexi007/mario                 latest    9a35a9e43e8c   6 years ago   198MB
[root@localhost ~]# docker tag nginx:latest reg.smy.org/library/nginx:latest
[root@localhost ~]# docker images
REPOSITORY                      TAG       IMAGE ID       CREATED       SIZE
nginx                           latest    f6987c8d6ed5   5 days ago    141MB
reg.smy.org/library/nginx       latest    f6987c8d6ed5   5 days ago    141MB
goharbor/harbor-exporter        v2.4.1    0ee361b5454a   10 days ago   82.7MB
goharbor/chartmuseum-photon     v2.4.1    337a9d03b197   10 days ago   174MB
goharbor/redis-photon           v2.4.1    2bbe19b8cc5d   10 days ago   156MB
goharbor/trivy-adapter-photon   v2.4.1    d39fd42c93f0   10 days ago   151MB
goharbor/notary-server-photon   v2.4.1    e75c68b6638b   10 days ago   111MB
goharbor/notary-signer-photon   v2.4.1    17a627caf6dd   10 days ago   108MB
goharbor/harbor-registryctl     v2.4.1    bff3d2665456   10 days ago   137MB
goharbor/registry-photon        v2.4.1    b46e45c49d6f   10 days ago   79.2MB
goharbor/nginx-photon           v2.4.1    78aad8c8ef41   10 days ago   45.7MB
goharbor/harbor-log             v2.4.1    c86562daee64   10 days ago   160MB
goharbor/harbor-jobservice      v2.4.1    d8baceb5f1f6   10 days ago   220MB
goharbor/harbor-core            v2.4.1    80a4e3e60403   10 days ago   198MB
goharbor/harbor-portal          v2.4.1    1c9ed1cc3cb9   10 days ago   54.7MB
goharbor/harbor-db              v2.4.1    417d0a840247   10 days ago   222MB
goharbor/prepare                v2.4.1    e9158d34970b   10 days ago   257MB
busybox                         latest    ffe9d497c324   2 weeks ago   1.24MB
yakexi007/game2048              latest    19299002fdbe   5 years ago   55.5MB
yakexi007/mario                 latest    9a35a9e43e8c   6 years ago   198MB

全部启动,非常奈斯,部署完成

使用

在目录reg.smy.org/library/下创建Nginx
[root@localhost ~]# docker tag nginx:latest reg.smy.org/library/nginx:latest
看到新增一个以reg.smy.org开头的,这就是刚才新建的Nginx
[root@localhost ~]# docker images
REPOSITORY                      TAG       IMAGE ID       CREATED       SIZE
nginx                           latest    f6987c8d6ed5   5 days ago    141MB
reg.smy.org/library/nginx       latest    f6987c8d6ed5   5 days ago    141MB
goharbor/harbor-exporter        v2.4.1    0ee361b5454a   10 days ago   82.7MB
goharbor/chartmuseum-photon     v2.4.1    337a9d03b197   10 days ago   174MB
goharbor/redis-photon           v2.4.1    2bbe19b8cc5d   10 days ago   156MB
goharbor/trivy-adapter-photon   v2.4.1    d39fd42c93f0   10 days ago   151MB
goharbor/notary-server-photon   v2.4.1    e75c68b6638b   10 days ago   111MB
goharbor/notary-signer-photon   v2.4.1    17a627caf6dd   10 days ago   108MB
goharbor/harbor-registryctl     v2.4.1    bff3d2665456   10 days ago   137MB
goharbor/registry-photon        v2.4.1    b46e45c49d6f   10 days ago   79.2MB
goharbor/nginx-photon           v2.4.1    78aad8c8ef41   10 days ago   45.7MB
goharbor/harbor-log             v2.4.1    c86562daee64   10 days ago   160MB
goharbor/harbor-jobservice      v2.4.1    d8baceb5f1f6   10 days ago   220MB
goharbor/harbor-core            v2.4.1    80a4e3e60403   10 days ago   198MB
goharbor/harbor-portal          v2.4.1    1c9ed1cc3cb9   10 days ago   54.7MB
goharbor/harbor-db              v2.4.1    417d0a840247   10 days ago   222MB
goharbor/prepare                v2.4.1    e9158d34970b   10 days ago   257MB
busybox                         latest    ffe9d497c324   2 weeks ago   1.24MB
yakexi007/game2048              latest    19299002fdbe   5 years ago   55.5MB
yakexi007/mario                 latest    9a35a9e43e8c   6 years ago   198MB
尝试拉取新建的Nginx
[root@localhost ~]# docker push reg.smy.org/library/nginx:latest 
The push refers to repository [reg.smy.org/library/nginx]
Get "https://reg.smy.org/v2/": x509: certificate signed by unknown authority
失败,并且提醒缺少证书
[root@localhost ~]# cd /data/
[root@localhost data]# cd /data/certs/
[root@localhost certs]# ls
smy.org.crt  smy.org.key
[root@localhost certs]# cd /etc/docker/
[root@localhost docker]# ls
certs.d  key.json
[root@localhost docker]# cd certs.d/
[root@localhost certs.d]# pwd
/etc/docker/certs.d
[root@localhost certs.d]# ls
access.redhat.com  cdn.redhat.com  registry.access.redhat.com  registry.redhat.io
[root@localhost certs.d]# mkdir reg.smy.org
[root@localhost certs.d]# ls
access.redhat.com  cdn.redhat.com  registry.access.redhat.com  registry.redhat.io  reg.smy.org
[root@localhost certs.d]# cd reg.smy.org/
[root@localhost reg.smy.org]# ls
将生成的证书复制过来,并改名为ca.crt
[root@localhost reg.smy.org]# cp /data/certs/smy.org.crt ca.crt
[root@localhost reg.smy.org]# ls
ca.crt
[root@localhost reg.smy.org]# pwd
/etc/docker/certs.d/reg.smy.org
继续尝试拉取Nginx
[root@localhost reg.smy.org]# docker push reg.smy.org/library/nginx:latest 
The push refers to repository [reg.smy.org/library/nginx]
51a4ac025eb4: Preparing 
4ded77d16e76: Preparing 
32359d2cd6cd: Preparing 
4270b63061e5: Preparing 
5f5f780b24de: Preparing 
2edcec3590a4: Waiting 
unauthorized: unauthorized to access repository: library/nginx, action: push: unauthorized to access repository: library/nginx, action: push
报错,提醒未授权
[root@localhost reg.smy.org]# docker login reg.smy.org
Username: admin
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
又一次尝试拉取
[root@localhost reg.smy.org]# docker push reg.smy.org/library/nginx:latest 
The push refers to repository [reg.smy.org/library/nginx]
51a4ac025eb4: Pushed 
4ded77d16e76: Pushed 
32359d2cd6cd: Pushed 
4270b63061e5: Pushed 
5f5f780b24de: Pushed 
2edcec3590a4: Pushed 
latest: digest: sha256:2e87d9ff130deb0c2d63600390c3f2370e71e71841573990d54579bc35046203 size: 1570

终于成功了!
同理,再创建一个game2048
[root@localhost reg.smy.org]# cd
[root@localhost ~]# docker tag yakexi007/game2048:latest reg.smy.org/library/game2048:latest
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest f6987c8d6ed5 5 days ago 141MB
reg.smy.org/library/nginx latest f6987c8d6ed5 5 days ago 141MB
goharbor/harbor-exporter v2.4.1 0ee361b5454a 10 days ago 82.7MB
goharbor/chartmuseum-photon v2.4.1 337a9d03b197 10 days ago 174MB
goharbor/redis-photon v2.4.1 2bbe19b8cc5d 10 days ago 156MB
goharbor/trivy-adapter-photon v2.4.1 d39fd42c93f0 10 days ago 151MB
goharbor/notary-server-photon v2.4.1 e75c68b6638b 10 days ago 111MB
goharbor/notary-signer-photon v2.4.1 17a627caf6dd 10 days ago 108MB
goharbor/harbor-registryctl v2.4.1 bff3d2665456 10 days ago 137MB
goharbor/registry-photon v2.4.1 b46e45c49d6f 10 days ago 79.2MB
goharbor/nginx-photon v2.4.1 78aad8c8ef41 10 days ago 45.7MB
goharbor/harbor-log v2.4.1 c86562daee64 10 days ago 160MB
goharbor/harbor-jobservice v2.4.1 d8baceb5f1f6 10 days ago 220MB
goharbor/harbor-core v2.4.1 80a4e3e60403 10 days ago 198MB
goharbor/harbor-portal v2.4.1 1c9ed1cc3cb9 10 days ago 54.7MB
goharbor/harbor-db v2.4.1 417d0a840247 10 days ago 222MB
goharbor/prepare v2.4.1 e9158d34970b 10 days ago 257MB
busybox latest ffe9d497c324 2 weeks ago 1.24MB
yakexi007/game2048 latest 19299002fdbe 5 years ago 55.5MB
reg.smy.org/library/game2048 latest 19299002fdbe 5 years ago 55.5MB
yakexi007/mario latest 9a35a9e43e8c 6 years ago 198MB
[root@localhost ~]# docker push reg.smy.org/library/game2048:latest
The push refers to repository [reg.smy.org/library/game2048]
88fca8ae768a: Pushed
6d7504772167: Pushed
192e9fad2abc: Pushed
36e9226e74f8: Pushed
011b303988d2: Pushed
latest: digest: sha256:8a34fb9cb168c420604b6e5d32ca6d412cb0d533a826b313b190535c03fe9390 size: 1364
拉取成功,快乐又回来啦!
顺便看一下图形界面吧
登录界面
从零开始搭建harbor私有仓库_第3张图片

主界面
从零开始搭建harbor私有仓库_第4张图片
查看我的仓库从零开始搭建harbor私有仓库_第5张图片

创建的两个都有

你可能感兴趣的:(redhat初学者的日常,docker,容器,服务器,harbor)