Docker创建本地仓库

1.在本地创建一个目录,如registry,用来当本地仓库,registry下创建一个config.yml文件,是仓库的配置信息

version: 0.1
log:
  level: debug
  formatter: text
  fields:
    service: registry
storage:
  cache:
    layerinfo: inmemory
  filesystem:
    rootdirectory: /tmp/registry
http:
  addr: :6000
  headers:
    X-Content-Type-Options: [nosniff]

2.拉docker的registry镜像

// docker pull <镜像名称>:<标签>
// 标签如果是latest可以省略
docker pull registry
// 可以查看一下镜像,看是否拉取成功
docker images

3.registry镜像启动容器

// 启动,本地仓库路径,config.yml文件路径,换成自己的
docker run -d --restart=always --name registry -v /Users/feifei/devlop/registry:/tmp/registry -v /Users/feifei/devlop/registry/config.yml:/etc/docker/registry/config.yml -p 6000:6000 registry
// 查看是否启动成功,容器status是up则说明OK
docker ps
-d:以后台模式运行
--name:指定容器的名称为registry
-v:数据卷,这里将本地仓库路径`/Users/feifei/devlop/registry`与容器`/tmp/registry`映射
`/Users/feifei/devlop/registry/config.yml`与`/etc/docker/registry/config.yml`映射
-p:本机6000与容器6000端口映射

4.往本地仓库推送镜像,以ubuntu举例

// 如果没有ubuntu镜像可以先pull
docker pull ubuntu
// 给镜像打tag,IP地址这里,如果registry只启动了一个容器,端口可以不加
// docker tag <镜像名称>:<标签> <IP地址>/<镜像名称>:<标签>
docker tag ubuntu:latest 192.168.224.88:6000/ubuntu:1.2
// 推送
// docker push <IP地址>/<镜像名称>:<标签>
docker push 192.168.224.88:6000/ubuntu:1.2
// 查看本地仓库是否有镜像,成功应该返回{"repositories":["ubuntu"]}
curl -XGET http://192.168.224.88:6000/v2/_catalog
// 也可以直接在自己本地仓库看有没有多文件

5.从本地仓库拉取镜像

// 可以把打完tag的ubuntu镜像都删除,用来测试拉取,IMAGE ID换成自己的
// docker rmi -f <IMAGE ID>
docker rmi -f 67932e906013
// 拉取
// docker pull <IP地址>/<镜像名称>:<标签>
docker pull 192.168.224.88:6000/ubuntu:1.2

6.遇到的问题

6.1 push或者pull报错
  • 现象:
    Error response from daemon: Get "https://192.168.224.88:6000/v2/": http: server gave HTTP response to HTTPS client

  • 原因:docker私有仓库用https,但是push与pull都用的http

  • 解决办法:用insecure-registries指定可以不使用 HTTPS 连接的 Docker 私有仓库地址。在docker engine中添加"insecure-registries": ["192.168.12.246:6000"],然后apply,担心不生效可以直接关闭docker再重启

    image.png

6.2 docker login 192.168.224.88:6000报错
  • 现象:
    Error response from daemon: login attempt to http://192.168.224.88:6000/v2/ failed with status: 401 Unauthorized
  • 原因与解决办法同上
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容