一看必会系列:部署docker镜像harbor仓库

来源:本站原创 Docker 超过471 views围观 0条评论

https://www.cnblogs.com/pangguoping/p/7650014.html

2.首先安装docker

yum install -y epel-release lrzsz wget net-tools ntp

时间来来个同步
ntpdate cn.pool.ntp.org

关闭防火墙:
systemctl stop firewalld
systemctl disable firewalld
关闭selinux:
sed -i ‘s/enforcing/disabled/’ /etc/selinux/config 
setenforce 0

wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum -y install docker-ce-18.06.1.ce-3.el7
systemctl enable docker && systemctl start docker

docker –version

3.安装docker-compose

yum install -y docker-compose

docker-compose –version

1、下载安装包

下载地址:http://harbor.orientsoft.cn/

http://harbor.orientsoft.cn/harbor-v1.5.0/harbor-offline-installer-v1.5.0.tgz

2、上传并解压安装包

将下载下来的安装包上传到服务器的/home目录,并解压。

[root@test101 home]# tar xf harbor-offline-installer-v1.5.0.tgz
[root@test101 home]# ll
总用量 843504
drwxr-xr-x. 4 root root       229 7月  30 15:48 harbor
-rw-r–r–. 1 root root 863747205 7月  30 15:39 harbor-offline-installer-v1.5.0.tgz
[root@test101 home]#
3、配置harbor和docker

3.1 编辑/home/habor/harbor.cfg,主要修改两个地方:

hostname = 10.0.0.101   #这里直接用的IP
harbor_admin_password = 123456   #登录harbor仓库的密码,默认密码是Harbor12345
5.修改配置文件

配置文件为:/usr/local/harbor/harbor.cfg
配置的内容为:

# vim /usr/local/harbor/harbor.cfg
hostname = rgs.unixfbi.com
#邮箱配置
email_server = smtp.qq.com
email_server_port = 25
email_username = unixfbi@unixfbi.com
email_password =12345678
email_from = UnixFBI <unixfbi@unixfbi.com>
email_ssl = false
#禁止用户注册
self_registration = off
#设置只有管理员可以创建项目
project_creation_restriction = adminonly
6.执行安装脚本

# /usr/local/harbor/install.sh

7.Harbor启动和停止

Harbor 的日常运维管理是通过docker-compose来完成的,Harbor本身有多个服务进程,都放在docker容器之中运行,我们可以通过docker ps命令查看。

或者docker-compose ps 来查看

Harbor的启动和停止

启动Harbor
# docker-compose start
停止Harbor
# docker-comose stop
重启Harbor
# docker-compose restart

改了data路径后,restart报错,但可以先stop,再start进行重启
[root@k8s-registry harbor]# docker-compose restart
Restarting nginx              … done
Restarting harbor-jobservice  … done
Restarting harbor-ui          … error
Restarting registry           … error
Restarting harbor-db          … done
Restarting harbor-adminserver … done
Restarting redis              … done
Restarting harbor-log         … done

[root@k8s-registry harbor]# docker-compose stop
Stopping nginx              … done
Stopping harbor-jobservice  … done
Stopping harbor-db          … done
Stopping harbor-adminserver … done
Stopping redis              … done
Stopping harbor-log         … done
[root@k8s-registry harbor]# docker-compose start
Starting log         … done
Starting mysql       … done
Starting redis       … done
Starting adminserver … done
Starting registry    … done
Starting ui          … done
Starting jobservice  … done
Starting proxy       … done
[root@k8s-registry harbor]#

8.访问测试

在浏览器输入rgs.unixfbi.com,因为我配置的域名为rgs.unixfbi.com。请大家根据自己的配置情况输入访问的域名;
默认账号密码: admin / Harbor12345 登录后修改密码

 

四、测试上传和下载镜像

在项目中标记镜像:
docker tag SOURCE_IMAGE[:TAG] reg.ccie.wang/k8s/IMAGE[:TAG]

推送镜像到当前项目:
docker push reg.ccie.wang/k8s/IMAGE[:TAG]

1,先登录 docker login ip

2,修改tag 格式,docker tag imagesID 仓库ip/harbor项目名字/imagesname:版本

3,docker push 仓库ip/harbor项目名字/imagesname:版本

[root@k8s-master 1.8+]# docker login reg.ccie.wang
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@k8s-master 1.8+]# docker push reg.ccie.wang/k8s/kubernetes-dashboard-amd64:v1.10.1
The push refers to repository [reg.ccie.wang/k8s/kubernetes-dashboard-amd64]
fbdfe08b001c: Pushed
v1.10.1: digest: sha256:0ae6b69432e78069c5ce2bcde0fe409c5c4d6f0f4d9cd50a17974fea38898747 size: 529
[root@k8s-master 1.8+]#

[root@k8s-master 1.8+]# docker tag k8s.gcr.io/metrics-server-amd64:v0.3.1 reg.ccie.wang/k8s/metrics-server-amd64:v0.3.1
[root@k8s-master 1.8+]#
[root@k8s-master 1.8+]#
[root@k8s-master 1.8+]# docker push reg.ccie.wang/k8s/metrics-server-amd64:v0.3.1
The push refers to repository [reg.ccie.wang/k8s/metrics-server-amd64]
14679ed867b8: Pushed
f9d9e4e6e2f0: Pushed
v0.3.1: digest: sha256:78938f933822856f443e6827fe5b37d6cc2f74ae888ac8b33d06fdbe5f8c658b size: 739
[root@k8s-master 1.8+]#

拉镜像
[root@k8s-node1 ~]# docker pull reg.ccie.wang/k8s/metrics-server-amd64:v0.3.1
v0.3.1: Pulling from k8s/metrics-server-amd64
Digest: sha256:78938f933822856f443e6827fe5b37d6cc2f74ae888ac8b33d06fdbe5f8c658b
Status: Downloaded newer image for reg.ccie.wang/k8s/metrics-server-amd64:v0.3.1

 

 

 

 

 

 

 

1.修改各docker client配置

# vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd –insecure-registry rgs.unixfbi.com
增加 –insecure-registry rgs.unixfbi.com 即可。
重启docker:

# systemctl daemon-reload
# systemctl  restart docker
或者

创建/etc/docker/daemon.json文件,在文件中指定仓库地址
# cat > /etc/docker/daemon.json << EOF
{ "insecure-registries":["rgs.unixfbi.com"] }
EOF
然后重启docker就可以。

# systemctl  restart docker
这样设置完成后,就不会提示我们使用https的错误了。

2.创建Dockerfile

# vim Dockerfile
FROM centos:centos7.1.1503
ENV TZ "Asia/Shanghai"
3.创建镜像

# docker build -t rgs.unixfbi.com/library/centos7.1:0.1 .
4.把镜像push到Harbor

# docker login rgs.unixfbi.com
# docker push rgs.unixfbi.com/library/centos7.1:0.1
如果不是自己创建的镜像,记得先执行 docker tags 给镜像做tag
例如:

# docker pull busybox
# docker tag busybox:latest rgs.unixfbi.com/library/busybox:latest
# docker push rgs.unixfbi.com/library/busybox:latest
5.登录web页面查看镜像

 

6.pull镜像

从别的机器上拉一下镜像

# docker rmi -f $(docker images -q -a )
# docker pull rgs.unixfbi.com/library/centos7.1:0.1
0.1: Pulling from library/centos7.1
07618ba636d9: Pull complete
Digest: sha256:7f398052ae0e93ddf96ba476185c7f436b15abd27acd848a24b88ede4bb3c322
Status: Downloaded newer image for rgs.unixfbi.com/library/centos7.1:0.1

# docker images
REPOSITORY                         TAG                 IMAGE ID            CREATED             SIZE
rgs.unixfbi.com/library/centos7.1   0.1                 6c849613a995        5 hours ago         212MB

五、Harbor配置TLS证书
因为我们上面对Harbor的配置都是使用的http协议访问,但是我们工作中一般都是配置https访问。所以我给大家演示一下怎么配置Harbor可以使用https访问,以及配置TLS证书都需要做哪些工作。

1.修改Harbor配置文件

因为Harbor默认使用http协议访问,所以我们这里在配置文件中,开启https配置;
配置harbor.cfg

hostname = rgs.unixfbi.com
ui_url_protocol = https
ssl_cert = /etc/certs/ca.crt
ssl_cert_key = /etc/certs/ca.key
2.创建自签名证书key文件

# mkdir /etc/certs
# openssl genrsa -out /etc/certs/ca.key 2048
Generating RSA private key, 2048 bit long modulus
….+++
…………………………………………..+++
e is 65537 (0x10001)
3.创建自签名证书crt文件

注意命令中/CN=rgs.unixfbi.com字段中rgs.unixfbi.com修改为你自己的仓库域名。

# openssl req -x509 -new -nodes -key /etc/certs/ca.key -subj "/CN=rgs.unixfbi.com" -days 5000 -out /etc/certs/ca.crt
4.开始安装Harbor

# ./install.sh

✔ —-Harbor has been installed and started successfully.—-

Now you should be able to visit the admin portal at https://reg.ccie.wang.
For more details, please visit https://github.com/vmware/harbor .
显示是https了。

5.客户端配置

客户端需要创建证书文件存放的位置,并且把服务端创建的证书拷贝到该目录下,然后重启客户端docker。我们这里创建目录为:/etc/docker/certs.d/rgs.unixfbi.com

# mkdir -p /etc/docker/certs.d/rgs.unixfbi.com
把服务端crt证书文件拷贝到客户端,例如我这的客户端为:192.168.199.183

# scp /etc/certs/ca.crt root@192.168.199.183:/etc/docker/certs.d/rgs.unixfbi.com/
重启客户端docker

# systemctl restart docker
6.测试是否支持https访问

# docker login rgs.unixfbi.com
Username (admin):
Password:
Login Succeeded

六、遇到问题
遇到的问题就是Harbor我配置的是http访问,但是docker客户端默认都是https访问Harbor,所以就会产生错误。下面看看我是怎么解决这个问题的吧。下面我们来访问以下Harbor

# docker pull rgs.unixfbi.com/library/centos7.1:0.1
Error response from daemon: Get https://rgs.unixfbi.com/v1/_ping: dial tcp 192.168.199.233:443: getsockopt: connection refused
问题原因:
因为docker默认访问仓库时都是使用的https协议,而我们的仓库配置的是http
解决方法:
方法一:
在docker启动的配置仓库地址添加如下内容:
–insecure-registry rgs.unixfbi.com

# vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd –insecure-registry rgs.unixfbi.com
然后

# systemctl daemon-reload
# systemctl  restart docker
方法二:
创建/etc/docker/daemon.json文件,在文件中指定仓库地址

# cat > /etc/docker/daemon.json << EOF
{ "insecure-registries":["rgs.unixfbi.com"] }
EOF
然后重启docker就可以了

# systemctl  restart docker
方法三:
就是把你的仓库也配置成https ,设置证书。好吧,这种方法其实我不说,你也知道。

有坑 启动后发现存储只有50G,但/home目录划的400G。肯定是哪配置错误

转移数据目录有两种方式:一种是将默认数据目录软链至其他路径,另外一种是修改相应配置。目前使用的是第一种

Harbor各个组件容器的启动配置在docker-compose.yml文件中,所以可以在这里修改

打开该文件后,搜索所有volumes关键字,可以在每个容器的volumes下面看到,数据在Host机器上的挂载只会在两个地方:/data和./common。将/data修改为所需目录即可,例如/home/harborData

在Harbor的安装配置文件harbor.cfg中也有部分数据路径设置,主要为ssh相关设置,也作出相应修改即可
修改地方有两处
第一处
sed -i "s/\/data\//\/home\/opt\/harbor_data\/data\//g" docker-compose.yml
这里替换会有个错误 第60行需要进行手动修改
    原  – /data/:/data/:z
   改   – /home/opt/harbor_data/data/:/data/:z
不改的话也能用,但ui会不显示容量大小。而且这个容量df -h  是看不到的
第二处
[root@k8s-registry harbor]# grep data harbor.cfg
secretkey_path =  /home/opt/harbor_data/data

1.修改前使用
docker-compose down -v停止并删除现有容器,
2.修改完成后先执行/home/opt/harbor/prepare使配置生效
3.然后使用docker-compose up -d重新创建容器并启动服务

[root@k8s-registry harbor]# docker-compose down -v
Stopping nginx              … done
Stopping harbor-jobservice  … done
Stopping harbor-ui          … done
Stopping harbor-adminserver …
Stopping redis              … done
Stopping registry           …
Stopping harbor-db          … done
Stopping harbor-log         …

文章出自:CCIE那点事 http://www.jdccie.com/ 版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。 禁止全文转载。
本文链接:http://www.jdccie.com/?p=4074转载请注明转自CCIE那点事
如果喜欢:点此订阅本站
  • 相关文章
  • 为您推荐
  • 各种观点

暂时还木有人评论,坐等沙发!
发表评论

您必须 [ 登录 ] 才能发表留言!