docker时代什么都可以镜像化,docker已经把registry服务做成一个镜像了

dist 文件docker部署_nginx


换一个节点,对应程序包在extras仓库下,程序包早期就叫docker registry
较新的是docker distribution

dist 文件docker部署_dist 文件docker部署_02

dist 文件docker部署_nginx_03


作为registry还需要一个很大的空间来存放镜像,需要连接存储,才能把镜像文件放到存储上面,可以是swift,nas,最简单还是使用本地存储、
程序名 registry
服务名,docker-distribution
配置文件yml

dist 文件docker部署_docker_04


log字段,service服务名
storage存储,把用户推过来的镜像放哪里去
可以先使用cache inmemory内存缓存,内存大可以加速用户访问
filesystem放本地文件系统,亚马逊的s3
用户账号需要有这个文件路径的存取 权限

dist 文件docker部署_docker_05


registry对自己的服务也是根据http向外输出的,默认监听所有地址的5000端口

dist 文件docker部署_私有仓库_06


现在就可以把镜像推到这个服务器上来了,需要指明服务器地址
改一下标签

dist 文件docker部署_docker_07


然后可以把镜像推送到registry,bbox-onbuild latest (tag才是镜像名)

dist 文件docker部署_dist 文件docker部署_08


客户端如果是https就需要改成http,或者让distribution+ssl改成https,
装个nginx反代可以
我们也可以修改客户端

dist 文件docker部署_nginx_09


insecure-registry非安全的镜像仓库 +参数表示标记谁可以用个http
addregistry 加上仓库

dist 文件docker部署_dist 文件docker部署_10

push一个镜像过去

dist 文件docker部署_docker_11


服务器端可以看到镜像文件,现在这个仓库任何人都可以看,用

dist 文件docker部署_docker_12


需要实行用户认证,htpasswd(以前 http这么创建用户)

dist 文件docker部署_docker_13


现在取配置nginx反代

dist 文件docker部署_私有仓库_14

dist 文件docker部署_nginx_15


Docker private Registry的Nginx反代配置方式:

client_max_body_size 0;不做限制

    location / {
        proxy_pass  http://registrysrvs;
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        proxy_redirect off;
        proxy_buffering off;
        proxy_set_header        Host            $host;
        proxy_set_header        X-Real-IP       $remote_addr;
        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

        auth_basic "Docker Registry Service";
        auth_basic_user_file "/etc/nginx/.ngxpasswd";
    }

dist 文件docker部署_私有仓库_16


自己定义配置文件

dist 文件docker部署_dist 文件docker部署_17


现在修改distribution配置文件

dist 文件docker部署_nginx_18

dist 文件docker部署_私有仓库_19

dist 文件docker部署_nginx_20


再找一个镜像文件打标签,准备推上去

dist 文件docker部署_nginx_21


推上 私有仓库路径

dist 文件docker部署_nginx_22

已经上传上来了

dist 文件docker部署_docker_23



没有在nginx反代时提供ping接口,探测服务是否ok的接口

dist 文件docker部署_nginx_24

dist 文件docker部署_docker_25

dist 文件docker部署_dist 文件docker部署_26


重载服务

dist 文件docker部署_私有仓库_27


再推一个镜像试试

dist 文件docker部署_私有仓库_28


标签需要加端口,但是出错,首部信息当中有问题

dist 文件docker部署_私有仓库_29


再去编辑nginx配置文件,认证完查看是否allow,。ngxpasswd当做账号密码文件

dist 文件docker部署_私有仓库_30

dist 文件docker部署_私有仓库_31


dist 文件docker部署_私有仓库_32

dist 文件docker部署_nginx_33


客户端推之前需要输入账号密码登录,已经推过一次了

dist 文件docker部署_docker_34


另外的再加一个新标签

dist 文件docker部署_nginx_35


tree看一下,tom的nginx已经推上来了

dist 文件docker部署_nginx_36


nginx,docker,docker-distribution重新再配置一次
重新安装docker-distrubution,nginx也重新配置一下

dist 文件docker部署_dist 文件docker部署_37

dist 文件docker部署_dist 文件docker部署_38


打个镜像新标签,推上去

dist 文件docker部署_nginx_39


安装nginx配置反代

dist 文件docker部署_nginx_40

dist 文件docker部署_docker_41


复制location内部的即可

dist 文件docker部署_私有仓库_42

location / {

proxy_pass http://registrysrvs;

proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;

proxy_redirect off;

proxy_buffering off;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

auth_basic "Docker Registry Service";
        auth_basic_user_file "/etc/nginx/.ngxpasswd";
    }

dist 文件docker部署_dist 文件docker部署_43


启动nginx

dist 文件docker部署_docker_44

dist 文件docker部署_docker_45


把两个私有仓库都当做非安全仓库去使用

dist 文件docker部署_dist 文件docker部署_46


依然有问题

dist 文件docker部署_dist 文件docker部署_47


查看日志

dist 文件docker部署_docker_48

dist 文件docker部署_docker_49

dist 文件docker部署_docker_50


dist 文件docker部署_nginx_51


现在就可以了

dist 文件docker部署_私有仓库_52


把验证功能打开

dist 文件docker部署_docker_49


dist 文件docker部署_dist 文件docker部署_54


dist 文件docker部署_docker_55


dist 文件docker部署_dist 文件docker部署_56


重新登录推一下centos

dist 文件docker部署_dist 文件docker部署_57


登录错位置了,需要登录到80

dist 文件docker部署_dist 文件docker部署_58


查看日志

dist 文件docker部署_nginx_59


不加用户名试试

dist 文件docker部署_私有仓库_60


可能之前都push过了,从官方下载一个新的试试

dist 文件docker部署_docker_61

在另外的主机上试试,安装docker

dist 文件docker部署_私有仓库_62

dist 文件docker部署_nginx_63


使用非安全仓库

dist 文件docker部署_dist 文件docker部署_64


推一下试试

dist 文件docker部署_docker_65


往5000端口推下试试,就可以推

dist 文件docker部署_dist 文件docker部署_66


新标签,用80端口试试
先把认证功能关掉

dist 文件docker部署_私有仓库_67

dist 文件docker部署_私有仓库_68

dist 文件docker部署_dist 文件docker部署_69

dist 文件docker部署_dist 文件docker部署_70


没认证没问题

dist 文件docker部署_私有仓库_67

dist 文件docker部署_dist 文件docker部署_72

dist 文件docker部署_dist 文件docker部署_69


把docker.io/redis:latest 标记位 172.16.0.72:80/redis:lates

dist 文件docker部署_docker_74


不认证推上去试试

dist 文件docker部署_私有仓库_67


dist 文件docker部署_docker_76

dist 文件docker部署_dist 文件docker部署_69


再往上推一下试试,应该是跟认证相关,就跟你某个认证首部有关系

dist 文件docker部署_docker_78


将来在企业中真正使用私有仓库的时候,也没有必要去做认证,harbor-n是vwmare开源的全功能的私有仓库服务器,支持ldap众多用户生成信息存储和认证,功能强大

docker的启动时资源限制,除了registry还有ftp和http也可以分发镜像
docker save把本地镜像文件保存为tar文件,下载下来,使用docker load即可

docker启动容器的时候,使用run或create,有很多选项,可以限制cpu使用

dist 文件docker部署_docker_79

dist 文件docker部署_nginx_80

dist 文件docker部署_nginx_81


运行这个容器用多少cpu,按比例分配

dist 文件docker部署_私有仓库_82


按配额分配

dist 文件docker部署_nginx_83


使用相对权重的方式来分配

dist 文件docker部署_dist 文件docker部署_84


限制容器使用内存空间

dist 文件docker部署_dist 文件docker部署_85


交换式分区

dist 文件docker部署_nginx_86


内存耗尽可以禁止docker运行

dist 文件docker部署_nginx_87


也可以限制磁盘IO,bps表示每秒字节

dist 文件docker部署_docker_88


网络IO

dist 文件docker部署_docker_89

dist 文件docker部署_nginx_90


容器的资源限制:

CPU:

RAM:

Device:

–device-read-bps value Limit read rate (bytes per second) from a device (default [])

–device-read-iops value Limit read rate (IO per second) from a device (default [])

–device-write-bps value Limit write rate (bytes per second) to a device (default [])

–device-write-iops value Limit write rate (IO per second) to a device (default [])