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
运行成功后在浏览器访问:
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"]}