Harbor使用案例

测试上传和下载镜像

1.修改各docker client配置(各自客户端都需要更改)

# vim /usr/lib/systemd/system/docker.service

增加:

ExecStart=/usr/bin/dockerd --insecure-registry 192.18.1.8(服务器注册地址)

增加 --insecure-registry 192.18.1.8 即可。
重启docker:

# systemctl daemon-reload
# systemctl  restart docker

或者

创建/etc/docker/daemon.json文件,在文件中指定仓库地址

# cat > /etc/docker/daemon.json << EOF
{ "insecure-registries":["192.168.1.8"] }
EOF

然后重启docker就可以。

# systemctl  restart docker

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

2.创建Dockerfile

# vim Dockerfile 
	FROM centos:centos7.1.1503
	ENV TZ "Asia/Shanghai"

3.创建镜像

# docker build -t 192.168.1.8/library/centos7.1:0.1 .

4.把镜像push到Harbor

# docker login 192.168.1.8
# docker push 192.168.1.8/library/centos7.1:0.1

如果不是自己创建的镜像,记得先执行 docker tags 给镜像做tag
例如:

# docker pull busybox
# docker tag busybox:latest 192.168.1.8/library/busybox:latest
# docker push 192.168.1.8/library/busybox:latest

5.登录web页面查看镜像

Harbor使用案例_第1张图片

6.pull镜像

从别的机器上拉一下镜像

# docker rmi -f $(docker images -q -a )
# docker pull 192.168.1.8/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

7、Harbor配置TLS证书

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

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

hostname = 192.168.1.8
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=192.168.1.8字段中r192.168.1.8修改为你自己的仓库域名。

# openssl req -x509 -new -nodes -key /etc/certs/ca.key -subj "/CN=192.168.1.8" -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://192.168.1.8. 
For more details, please visit https://github.com/vmware/harbor .

显示是https了。
5.客户端配置

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

mkdir -p /etc/docker/certs.d/192.168.1.8

把服务端crt证书文件拷贝到客户端,例如我这的客户端为:192.168.199.183

# scp /etc/certs/ca.crt [email protected]:/etc/docker/certs.d/192.168.1.8/

重启客户端docker

# systemctl restart docker

6.测试是否支持https访问

# docker login 192.168.1.8
Username (admin): 
Password: 
Login Succeeded

8、遇到问题

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

# docker pull 192.168.1.8/library/centos7.1:0.1
Error response from daemon: Get https://192.168.1.8/v1/_ping: dial tcp 192.168.199.233:443: getsockopt: connection refused

问题原因:
因为docker默认访问仓库时都是使用的https协议,而我们的仓库配置的是http
解决方法:
方法一:
在docker启动的配置仓库地址添加如下内容:
–insecure-registry 192.168.1.8

# vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.1.8

然后

# systemctl daemon-reload
# systemctl  restart docker

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

# cat > /etc/docker/daemon.json << EOF
{ "insecure-registries":["192.168.1.8"] }
EOF

然后重启docker就可以了

# systemctl  restart docker

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

案例二:

1、admin登录

$ docker login 192.168.1.8
Username: admin
Password:
Login Succeeded

2、给镜像打tag【tag 修改 image 的名字. 格式为: userip/项目名/image名字:版本号】

$ docker tag nginx 192.168.126.131/docker/nginx:latest
$ docker images
REPOSITORY                         TAG                 IMAGE ID            CREATED             SIZE
nginx                              latest              958a7ae9e569        2 weeks ago         109 MB
192.168.1.8/docker/nginx         latest                958a7ae9e569        2 weeks ago         109 MB

3、我们新建一个名称为docker的项目,设置不公开。注意:当项目设为公开后,任何人都有此项目下镜像的读权限。命令行用户不需要“docker login”就可以拉取此项目下的镜像。
4、push到仓库

$ docker push 192.168.1.8/docker/nginx
The push refers to a repository [docker.bksx.com/docker/nginx]
a552ca691e49: Pushed
7487bf0353a7: Pushed
8781ec54ba04: Pushed
latest: digest: sha256:41ad9967ea448d7c2b203c699b429abe1ed5af331cd92533900c6d77490e0268 size: 948

上传完毕后,登录Web Harbor,选择项目,项目名称docker,就可以查看刚才上传的nginx image了
Harbor使用案例_第2张图片

你可能感兴趣的:(Harbor)