设为首页 收藏本站
查看: 880|回复: 0

[经验分享] Docker(四) docker本地镜像仓库学习

[复制链接]
YunVN网友  发表于 2019-2-20 09:35:08 |阅读模式
1. Docker registry

#检查端口5000是否被占用
netstat -tunlp | grep 5000
# the local host ip is 172.17.0.1
# pull registry
mkdir -p /opt/myregistry
docker run -d -p 5000:5000 --name registry --restart=always -v /opt/myregistry:/var/lib/registry registry:2.4.1
# double check the registry is ok.
curl http://172.17.0.1:5000/v2
# modify https to http
echo "{"insecure-registries:["172.17.0.1:5000"]"}"
docker pull busybox
docker tag busybox 172.17.0.1:5000/busybox01
docker rmi busybox
docker push 172.17.0.1:5000/busybox01
docker rmi 172.17.0.1:5000/busybox01
docker pull 172.17.0.1:5000/busybox01
DSC0000.png


2. Docker hub


  • docker hub

3. harbor

download harbor offline tar package

wget https://github.com/vmware/harbor/releases/download/v1.2.2/harbor-offline-installer-v1.2.2.tgz -o /home/marion/docker
tar xf /home/marion/docker/harbor-offline-installer-v1.2.2.tgz
cd /home/marion/docker/harbor
安装环境依赖

apt-get install openssl python
安装harbor

配置ssl证书

openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 3650 -out ca.crt
Generating a 4096 bit RSA private key
................................................................................................................................................................................................++
....++
writing new private key to 'ca.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) [AU]:CN
State or Province Name (full name) [Some-State]:BeiJin
Locality Name (eg, city) []:BeiJin
Organization Name (eg, company) [Internet Widgits Pty Ltd]:haha      
Organizational Unit Name (eg, section) []:haha-ops
Common Name (e.g. server FQDN or YOUR name) []:harbor.haha.link
Email Address []:admin@example.com
root@harbor:~/harbor/harborcert# openssl req -newkey rsa:4096 -nodes -sha256 -keyout haha.link.key -out haha.link.csr               
Generating a 4096 bit RSA private key
...........................................................................................................................++
...++
writing new private key to 'haha.link.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) [AU]:CN
State or Province Name (full name) [Some-State]:BeiJin   
Locality Name (eg, city) []:BeiJin
Organization Name (eg, company) [Internet Widgits Pty Ltd]:haha
Organizational Unit Name (eg, section) []:haha-ops
Common Name (e.g. server FQDN or YOUR name) []:harbor.haha.link
Email Address []:admin@example.com
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:admin123
An optional company name []:haha
root@harbor:~/harbor/harborcert# openssl x509 -req -days 3650 -in haha.link.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out haha.link.crt
Signature ok
subject=/C=CN/ST=BeiJin/L=BeiJin/O=haha/OU=haha-ops/CN=harbor.haha.link/emailAddress=admin@example.com
Getting CA Private Key
mkdir -pv /etc/docker/certs.d/harbor.haha.link
root@harbor:~/harbor/harborcert# cp ca.crt /etc/docker/certs.d/harbor.haha.link/
root@harbor:~/harbor/harborcert# cp haha.link.crt /usr/local/share/ca-certificates/harbor.haha.link.crt
root@harbor:~/harbor/harborcert# update-ca-certificates
Updating certificates in /etc/ssl/certs...
1 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d...
done.
更新harbor配置文件


  •   更新harbor.cfg配置文件

    hostname = www.proharbor.com
    ui_url_protocol = https
    ssl_cert = /home/marion/docker/harbor/newcert/proharbor.com.crt
    ssl_cert_key = /home/marion/docker/harbor/newcert/proharbor.com.key
  •   更新docker-compose.yml

    # 创建本地仓库镜像的存储目录
    cd /home/marion/docker/harbor
    mkdir /home/marion/harborregistry/
    vim docker-compose.yml
    # ------以下是docker-compose.yml修改后的内容------
    version: '2'
    services:
    log:
    image: vmware/harbor-log:v1.2.2
    container_name: harbor-log
    restart: always
    volumes:
    - /var/log/harbor/:/var/log/docker/:z
    ports:
    - 127.0.0.1:1514:514
    networks:
    - harbor
    registry:
    image: registry:2.4.1 #此处可以修改registry的版本
    container_name: registry
    restart: always
    volumes:
    - /home/marion/harborregistry:/storage:z  #此处可以按需修改到自己想存档的位置
    - ./common/config/registry/:/etc/registry/:z
    networks:
    - harbor
    environment:
    - GODEBUG=netdns=cgo
    command:
    ["serve", "/etc/registry/config.yml"]
    depends_on:
    - log
    logging:
    driver: "syslog"
    options:  
    syslog-address: "tcp://127.0.0.1:1514"
    tag: "registry"
    mysql:
    image: vmware/harbor-db:v1.2.2
    container_name: harbor-db
    restart: always
    volumes:
    - /data/database:/var/lib/mysql:z
    networks:
    - harbor
    env_file:
    - ./common/config/db/env
    depends_on:
    - log
    logging:
    driver: "syslog"
    options:  
    syslog-address: "tcp://127.0.0.1:1514"
    tag: "mysql"
    adminserver:
    image: vmware/harbor-adminserver:v1.2.2
    container_name: harbor-adminserver
    env_file:
    - ./common/config/adminserver/env
    restart: always
    volumes:
    - /data/config/:/etc/adminserver/config/:z
    - /data/secretkey:/etc/adminserver/key:z
    - /data/:/data/:z
    networks:
    - harbor
    depends_on:
    - log
    logging:
    driver: "syslog"
    options:  
    syslog-address: "tcp://127.0.0.1:1514"
    tag: "adminserver"
    ui:
    image: vmware/harbor-ui:v1.2.2
    container_name: harbor-ui
    env_file:
    - ./common/config/ui/env
    restart: always
    volumes:
    - ./common/config/ui/app.conf:/etc/ui/app.conf:z
    - ./common/config/ui/private_key.pem:/etc/ui/private_key.pem:z
    - /data/secretkey:/etc/ui/key:z
    - /data/ca_download/:/etc/ui/ca/:z
    - /data/psc/:/etc/ui/token/:z
    networks:
    - harbor
    depends_on:
    - log
    - adminserver
    - registry
    logging:
    driver: "syslog"
    options:  
    syslog-address: "tcp://127.0.0.1:1514"
    tag: "ui"
    jobservice:
    image: vmware/harbor-jobservice:v1.2.2
    container_name: harbor-jobservice
    env_file:
    - ./common/config/jobservice/env
    restart: always
    volumes:
    - /data/job_logs:/var/log/jobs:z
    - ./common/config/jobservice/app.conf:/etc/jobservice/app.conf:z
    - /data/secretkey:/etc/jobservice/key:z
    networks:
    - harbor
    depends_on:
    - ui
    - adminserver
    logging:
    driver: "syslog"
    options:  
    syslog-address: "tcp://127.0.0.1:1514"
    tag: "jobservice"
    proxy:
    image: vmware/nginx-photon:1.11.13
    container_name: nginx
    restart: always
    volumes:
    - ./common/config/nginx:/etc/nginx:z
    networks:
    - harbor
    ports:
    - 80:80
    - 443:443
    - 4443:4443
    depends_on:
    - mysql
    - registry
    - ui
    - log
    logging:
    driver: "syslog"
    options:  
    syslog-address: "tcp://127.0.0.1:1514"
    tag: "proxy"
    networks:
    harbor:
    external: false
  • 仓库根目录配置文件

version: 0.1
log:
level: debug
fields:
service: registry
storage:
cache:
layerinfo: inmemory
filesystem:
rootdirectory: /storage
maintenance:
uploadpurging:
enabled: false
delete:
enabled: true
http:
addr: :5000
secret: placeholder
debug:
addr: localhost:5001
auth:
token:
issuer: harbor-token-issuer
realm: https://www.proharbor.com/service/token
rootcertbundle: /etc/registry/root.crt
service: harbor-registry
notifications:
endpoints:
- name: harbor
disabled: false
url: http://ui/service/notifications
timeout: 3000ms
threshold: 5
backoff: 1s
安装harbor以及notary,clair

cd /home/marion/docker/harbor/
sudo ./install.sh --with-notary --with-clair
#关闭harbor所有的容器(必须在含有docker-compose.yml文件的目录下执行)
docker-compose -f ./docker-compose.yml -f ./docker-compose.notary.yml -f ./docker-compose.clair.yml down -v
#启动harbor相关的所有容器(必须在含有docker-compose.yml文件的目录下执行)
docker-compose -f ./docker-compose.yml -f ./docker-compose.notary.yml -f ./docker-compose.clair.yml up -d
DSC0001.png


验证查看
  !Harbor


  • 打开浏览器,输入https://www.proharbor.com
  • 用户名/密码:admin/Harbor12345(默认的)
  • 打开终端: docker login www.proharbor.com ,用户名为admin,密码为Harbor12345

查看日志

harbor的运行日志

#日志路径各不相同,具体路径根据docker-compose.yml或者*/harbor/common/目录下的配置文件进行确定
cd /var/log/harbor
harbor中镜像的使用日志
DSC0002.png


使用Harbor进行镜像的管理

push/pull

# push
root@dockermaster:/home/marion/docker/harbor# docker tag redis www.proharbor.com/harborssl/redis:dev
root@dockermaster:/home/marion/docker/harbor# docker push www.proharbor.com/harborssl/redis:dev
The push refers to a repository [www.proharbor.com/harborssl/redis]
d112bb627859: Pushed
265ab1ac61ec: Pushed
2341e66d779d: Pushed
9503917b6420: Pushed
aa84bbcc6553: Pushed
29d71372a492: Pushed
dev: digest: sha256:b707a0c39062f1769c8e16069015e1ba839add849deb441428fc0c1deee67c36 size: 1571
# pull
root@dockermaster:/home/marion/docker/harbor# docker pull www.proharbor.com/harborssl/redis:dev
dev: Pulling from harborssl/redis
Digest: sha256:b707a0c39062f1769c8e16069015e1ba839add849deb441428fc0c1deee67c36
Status: Downloaded newer image for www.proharbor.com/harborssl/redis:dev
镜像的扫描clair
DSC0003.png





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-674701-1-1.html 上篇帖子: docker 实践(四)dockerfile 说明 下篇帖子: Docker(五) docker日志相关学习笔记
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表