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
export 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"]}