1.安装以及使用:

 

# 安装  (添加用户名密码,见下面)
sudo mkdir /opt/docker/registry
sudo docker run -itd  --privileged=true --restart=always  -e REGISTRY_STORAGE_DELETE_ENABLED=true \
  --name sea_docker_registry  -p 5000:5000 -v /opt/docker/registry:/var/lib/registry  registry


用 curl 查看仓库中的镜像。
$ curl 127.0.0.1:5000/v2/_catalog
{"repositories":["tomcat"]}



使用 docker tag 将 tomcat:latest 这个镜像标记为 127.0.0.1:5000/tomcat:latest。
格式为:docker tag IMAGE[:TAG] [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG]
sudo docker tag tomcat:latest 127.0.0.1:5000/tomcat:latest


使用 docker push 上传标记的镜像。
sudo docker push 127.0.0.1:5000/tomcat:latest

 

 

 

 

2.注意事项

如果你不想使用 127.0.0.1:5000 作为仓库地址,比如想让本网段的其他主机也能把镜像推送到私有仓库。你就得把例如 192.168.199.100:5000 这样的内网地址作为私有仓库地址,这时你会发现无法成功推送镜像。

这是因为 Docker 默认不允许非 HTTPS 方式推送镜像。我们可以通过 Docker 的配置选项来取消这个限制,或者查看下一节配置能够通过 HTTPS 访问的私有仓库。

3. 仓库配置   完成后需要重启docker(   sudo systemctl daemon-reload      sudo  systemctl restart docker )
对于使用 systemd 的系统,请在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件)
{
  "registry-mirrors": ["https://registry.docker-cn.com"],
  "insecure-registries": ["192.168.18.69:5000"]
}

如果需要代理:

 可以先执行

export http_proxy=http://your_proxy_address:your_proxy_port
export https_proxy=http://your_proxy_address:your_proxy_port

all_proxy="socks5://username:password@your-proxy-server:port"

 

或者在这配置(推荐上面,如果冲突了,看看是不是这配置了,去掉 --insecure-registry=192.160.3.240:5000) 

sudo vim /lib/systemd/system/docker.service
add --insecure-registry=192.160.3.240:5000 to ExecStart like below
ExecStart=/usr/bin/dockerd --insecure-registry=192.160.3.240:5000 -H fd://
sudo systemctl daemon-reload
sudo service docker restart

 

解决必须sudo 问题

sudo groupadd docker
sudo usermod -aG docker $USER        #此处的USER是系统变量,直接使用该语句即可
newgrp docker

 

4.安装 Docker Registry WebUI

私服安装成功后就可以使用 docker 命令行工具对 registry 做各种操作了。然而不太方便的地方是不能直观的查看 registry 中的资源情况。下面我们安装 Docker Registry WebUI 工具。

镜像1:hyper/docker-registry-web

sudo docker run -it -p 8280:8080 --name sea_registry-web --link sea_docker_registry \
           -e REGISTRY_URL=http://sea_docker_registry:5000/v2  \
           -e REGISTRY_TRUST_ANY_SSL=true \
           -e REGISTRY_NAME=localhost:5000 hyper/docker-registry-web

 

镜像1:konradkleine/docker-registry-frontend:v2

私服安装成功后就可以使用 docker 命令行工具对 registry 做各种操作了。然而不太方便的地方是不能直观的查看 registry 中的资源情况。下面我们安装 Docker Registry WebUI 工具。

--env ENV_DOCKER_REGISTRY_HOST=192.168.110.158(docker register 安装地址)
--env ENV_DOCKER_REGISTRY_PORT=5000(docker register 安装地址端口)
sudo docker run -itd  --restart=always   --name=sea_docker_redistry_ui  -p 8080:80 --env ENV_DOCKER_REGISTRY_HOST=192.168.18.69 --env ENV_DOCKER_REGISTRY_PORT=5000 konradkleine/docker-registry-frontend:v2

运行成功后在浏览器访问:

http://192.168.110.158:8080

 

 

 

docker - 如何使用带有登录名/密码的 docker-registry?

docker pull registry
创建几个目录与容器内的目录映射:将容器内的文件映射到本地,以此来达到持久化的效果
mkdir  /opt/auth
mkdir  /opt/registry
yum install -y httpd-tools (可以把密码加密)
htpasswd  -Bbn   test  123456   > /opt/auth/htpasswd     加密密码
[root@mayi-2 auth]# cat htpasswd
test:$2y$05$SNE8IfyVZ5tq6Nw9Q2Sb5OfxhSAT6RaMsSCAgjleynhLivYv0sGXm
docker run -itd  --restart=always  -p 5000:5000 \
     -v /opt/auth/:/auth/  \
     -v /opt/registry/:/var/lib/registry  \
     -e "REGISTRY_AUTH=htpasswd" \
     -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
     -e  "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
     registry

解释:
 docker run -itd  --restart=always -p 5000:5000 \
     -v /opt/auth/(本地目录):/auth/(容器目录)  \
     -v /opt/registry/(本地目录):/var/lib/registry  \      (容器目录)
     -e "REGISTRY_AUTH=htpasswd" \                          (以 htpasswd 的方式认证)
     -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \     (注册认证)
     -e  "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \     (认证的用户密码)
     registry

测试成果:

[root@mayi-2 auth]# docker login 127.0.0.1:5000
Username: test
Password:
Login Succeeded
或者:
[root@mayi-2 opt]#  curl -XGET --user test:123456  http://127.0.0.1:5000/v2/_catalog
{"repositories":["registry"]}