安装 nginx

修改/etc/yum.repos.d/nginx.repo

[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

其中 releasever basearch 到 http://nginx.org/packages/centos/ 地址上去查

yum install nginx

配置ssl证书

注意CN的地址要与你的registry地址一致,可以修改/etc/hosts来绑定一个地址

修改 /etc/docker/daemon.json

增加 "insecure-registries":["xxx(CN里写的地址):port"]

正常启动registry 不需要任何ssl参数,权限交由nginx控制

docker run -d -p 6000:5000 --restart=always --name registry registry:2.5.1

配置nginx

user  root root;
worker_processes 1; error_log /var/log/nginx/error.log debug;
#pid /var/log/nginx/nginx.pid; worker_rlimit_nofile 51200; events {
use epoll;
worker_connections 512;
multi_accept on;
} http {
include /etc/nginx/mime.types;
default_type application/octet-stream; log_format main '$http_host $remote_user [$time_local] $request '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $remote_addr $request_time $upstream_response_time'; access_log /var/log/nginx/access.log main; sendfile on;
tcp_nopush on;
tcp_nodelay on; keepalive_timeout 0;
#keepalive_timeout 65; #gzip on; upstream registry {
server tf56:6000;
} server {
listen 8080;
server_name registry.lenovo.com; ssl on;
ssl_certificate /root/registry/certs/registry.lenovo.com.crt;
ssl_certificate_key /root/registry/certs/registry.lenovo.com.key;
ssl_client_certificate /root/registry/certs/registry.lenovo.com.crt; # Recommendations from https://raymii.org/s/tutorials/Strong_SSL_Security_On_nginx.html
ssl_protocols TLSv1.1 TLSv1.2;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m; client_max_body_size 0; chunked_transfer_encoding on; location / {
auth_basic "Registry realm";
auth_basic_user_file /root/registry/nginx/nginx.htpasswd;
add_header 'Docker-Distribution-Api-Version' 'registry/2.0' always; proxy_pass http://registry;
proxy_set_header Host $http_host; # required for docker client's sake
proxy_set_header X-Real-IP $remote_addr; # pass on real client's IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Authorization ""; # see https://github.com/dotcloud/docker-registry/issues/170
proxy_read_timeout 900;
# proxy_redirect off;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Protocol $scheme; # proxy_set_header X-Forwarded-Proto "https";
# proxy_set_header X-Forwarded-Protocol "https";
}
}
}

  

其中

/root/registry/nginx/nginx.htpasswd
生成方法 htpasswd -cb nginx.htpasswd tester1 123456

登陆验证

docker login xxxx:port

curl -i -k -v https://uname:password@xxx:port/v2/_ping

问题解决:

502 问题

nginx后台日志

connect() failed (111: Connection refused) while connecting to upstream

而且upstream总是80端口

修改proxy_pass,这里修改成了http://registry 是一个不存在的地址

client sent plain HTTP request to HTTPS port while reading client request headers

peer closed connection in SSL handshake (104: Connection reset by peer) while SSL handshaking,

或者registry log : registry first record does not look like a TLS handshake

关闭所有registry的ssl选项,所有SSL控制交给nginx处理

registry报错 Invalid token

需要在启动时设置REGISTRY_HTTP_SECRET,所有replica都使用相同的值即可(-e REGISTRY_HTTP_SECRET=mysk)

registry报错 blob unknown

后端数据要存放在一个数据源上,比如NFS,ceph

												

最新文章

  1. Android studio导入eclipse项目且不改变目录结构
  2. Activity和Service是否是在同一个进程中运行。
  3. [Aaronyang] 写给自己的WPF4.5 笔记20 [3d课 1/4]
  4. Apache配置多个网站的方法
  5. Effective Java 09 Always override hashCode when you override equals
  6. sql-char和varchar,nvarchar的区别
  7. Linux vmstat命令--监控CPU 性能分析
  8. css-fixed兼容写法
  9. ConcurrentLinkedQueue 源码 since java1.5
  10. 团队作业4---第一次项目冲刺(ALpha)版本 第五天
  11. Java中的集合框架(下)
  12. android获取手机机型、厂商、deviceID基本信息
  13. Android组件化开发的简单应用
  14. Linux环境下将Oracle11g数据库模式由非归档模式(Noarchivelog)修改为自动归档模式(archivelog)
  15. git操作+一个本地项目推到github上+注意
  16. 一句话的事儿,Head first 设计模式
  17. SSH框架新线程下执行数据库持久化时 No Session found for current thread
  18. linux clamav 免费查毒工具
  19. 多线程:QueueUserWorkItem引发的闭包与变量共享
  20. 【BZOJ1067】【SCOI2007】降雨量

热门文章

  1. ajax方法如何给全局变量赋值
  2. [3]java1.8线程池—ThreadPoolExecutor
  3. 提高MySQL数据库的安全性
  4. MySQL成勒索新目标,数据服务基线安全问题迫在眉睫
  5. GitLab push除发Jenkins事件
  6. pandas功能使用rename, reindex, set_index 详解
  7. python2.7环境下的flask项目导入模块失败解决办法
  8. python 写入Excel
  9. MySQL中kill掉所有表的进程
  10. 五、Java基础加强