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页⾯查看镜像
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/library/centos7.1:0.1
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
rgs.unixfbi/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/
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)
nginx ssl证书配置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/
4.开始安装Harbor
# ./install.sh
✔ ----Harbor has been installed and started successfully.----
Now you should be able to visit the admin portal at 192.168.1.8.
For more details, please visit github/vmware/harbor .
显⽰是https了。
5.客户端配置
客户端需要创建证书⽂件存放的位置,并且把服务端创建的证书拷贝到该⽬录下,然后重启客户端docker。我们这⾥创建⽬录为:
mkdir -p /etc/docker/certs.d/192.168.1.8
把服务端crt证书⽂件拷贝到客户端,例如我这的客户端为:192.168.199.183
# scp /etc/ root@192.168.199.183:/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 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/docker/nginx]
a552ca691e49: Pushed
7487bf0353a7: Pushed
8781ec54ba04: Pushed
latest: digest: sha256:41ad9967ea448d7c2b203c699b429abe1ed5af331cd92533900c6d77490e0268 size: 948
上传完毕后,登录Web Harbor,选择项⽬,项⽬名称docker,就可以查看刚才上传的nginx image了
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论