#!/bin/bash
echo "restart registry..."
docker stop registry && echo "停止服务成功!" || echo "停止服务失败!"
docker rm registry && echo "销毁服务成功!" || echo "销毁服务失败!"
docker run --detach \
--name registry \
--publish 5000:5000 \
--restart always \
--volume /home/docker/registry/:/var/lib/registry/ \
registry:latest
执行registry.sh 私有仓库registry即可允许起来。
upstream docker-registry {
server 192.168.0.210:5000;
}
server {
listen 443;
server_name docker.weipaiku.com;
# SSL
ssl on;
ssl_certificate /etc/nginx/conf.d/cert/registry/docker.weipaiku.com.crt;
ssl_certificate_key /etc/nginx/conf.d/cert/registry/docker.weipaiku.com.key;
# disable any limits to avoid HTTP 413 for large image uploads
client_max_body_size 0;
# required to avoid HTTP 411: see Issue #1486 (https://github.com/docker/docker/issues/1486)
chunked_transfer_encoding on;
location /v2/ {
# Do not allow connections from docker 1.5 and earlier
# docker pre-1.6.0 did not properly set the user agent on ping, catch "Go *" user agents
if ($http_user_agent ~ "^(docker\/1\.(3|4|5(?!\.[0-9]-dev))|Go ).*$" ) {
return 404;
}
# To add basic authentication to v2 use auth_basic setting plus add_header
auth_basic "registry.docker.yaok.com";
auth_basic_user_file /etc/nginx/conf.d/cert/registry/registry.htpasswd;
add_header 'Docker-Distribution-Api-Version' 'registry/latest' always;
proxy_pass http://docker-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 X-Forwarded-Proto $scheme;
proxy_read_timeout 900;
}
}
b)把虚拟主机配置放到nginx配置文件中
docker push docker.weipaiku.com/hello-world:1.0
#!/usr/bin/env python
#-- coding:utf-8 --
import requests
import json
import traceback
repo_ip = '192.168.0.210'
repo_port = 5000
def getImagesNames(repo_ip,repo_port):
docker_images = []
try:
url = "http://" + repo_ip + ":" +str(repo_port) + "/v2/_catalog"
res =requests.get(url).content.strip()
res_dic = json.loads(res)
images_type = res_dic['repositories']
for i in images_type:
url2 = "http://" + repo_ip + ":" +str(repo_port) +"/v2/" + str(i) + "/tags/list"
res2 =requests.get(url2).content.strip()
res_dic2 = json.loads(res2)
name = res_dic2['name']
tags = res_dic2['tags']
for tag in tags:
docker_name = str(repo_ip) + ":" + str(repo_port) + "/" + name + ":" + tag
docker_images.append(docker_name)
print docker_name
except:
traceback.print_exc()
return docker_images
a=getImagesNames(repo_ip, repo_port)
#print a
d) 执行命令: