搭建docker私有镜像仓库

为了更方便的部署应用到Docker容器中,可以将打包应用镜像直接通过docker push 命令推送到服务器所在地镜像仓库中,所以需要搭建私有镜像仓库。 本文使用Docker公司开发的私有镜像裤Registry。

  • 下载Register的Docker镜像
 docker pull registry
  • 设置私有仓库用户认证
#用户账户信息存储目录
mkdir  /home/data/auth

如果registry版本在2.7以下可以用以下命令创建

docker run --entrypoint htpasswd registry -Bbn admin 123456 > /home/data/auth/htpasswd

但在2.7.0以上用以上命令会报错

docker: Error response from daemon: OCI runtime create failed: container_linux.go:367: starting container process caused: exec: "htpasswd": executable file not found in $PATH: unknown.

解决参考如下:
https://github.com/docker/distribution-library-image/issues/106
https://www.coder.work/article/7351056
解决方法(用户httpd-tools创建账号信息):

yum install -y httpd-tools
htpasswd -Bbn admin 123456 > /home/data/auth/htpasswd
httpd-tools
  • 创建registry的卷 (容器数据持久化)
docker volume create registry_data
  • 启动registry
docker run --name registry2 -p 5000:5000 --restart=always \
-v registry_data:/var/lib/registry \
-v /home/data/auth:/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e  REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
-e  REGISTRY_STORAGE_DELETE_ENABLED="true" \
-d registry

REGISTRY_STORAGE_DELETE_ENABLED="true"标识可删除镜像

  • 修改客户端Docker Daemon的配置文件,文件位置为/etc/docker/daemon.json,由于Docker默认使用HTTPS推送镜像,而我们的镜像仓库没有支持,所以需要添加如下配置,改为使用HTTP推送;
{
  "registry-mirrors": ["https://fon46f0i.mirror.aliyuncs.com"],
  "insecure-registries": [
    "12.7.182.10:5000"
  ]
}

重启配置生效

systemctl daemon-reload && systemctl restart docker
  • 安装registry ui
docker pull joxit/docker-registry-ui:1.5-static
  • 使用Docker容器运行docker-registry-ui服务
docker run -p 8281:80 --name registry-ui1.5 \
--link registry2:registry2 \
-e REGISTRY_URL="http://registry2:5000" \
-e DELETE_IMAGES="true" \
-e REGISTRY_TITLE="Registry2" \
-d joxit/docker-registry-ui:1.5-static

在另外一台docker服务器docker push 向此私有仓库镜像

docker pull busybox
docker tag busybox 12.78.182.15:5000/busybox:latest
docker login --username=admin 12.78.182.15:5000
#输入密码并推送
docker push 12.78.182.15:5000/busybox:latest

docker push

docker push

浏览http://registry2:8281
docker-registry-ui:1.5-static

你可能感兴趣的:(搭建docker私有镜像仓库)