centos7上搭建docker私有仓库

系统管理员 2022-05-27 00:55 308阅读 0赞

私有仓库主机(centos7):10.60.34.46
客户机(centos7):client

私有仓库主机上:

  1. 下载registry镜像

    1. docker pull registry
  2. 运行registry容器,为了在容器关闭时不删除仓库目录,需要把仓库目录挂载到宿主机目录

    1. docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry

客户机上:

  1. 获取一个小的镜像busybox用于测试

    1. docker pull busybox
  2. 修改busybox的标签,用于上传到私有仓库

    1. docker tag busybox 10.60.34.46:5000/busybox
  3. 上传

    1. docker push 10.60.34.46:5000/busybox

    这里会出现错误:

    1. Error response from daemon: unable to ping registry endpoint https://10.60.34.46:5000/v0/
    2. v2 ping attempt failed with error: Get https://10.60.34.46:5000/v2/: EOF
    3. v1 ping attempt failed with error: Get https://10.60.34.46:5000/v1/_ping: EOF

    原因是与私有仓库的默认交互方式是https,而私有仓库主机只提供http服务。可以在客户端docker的启动配置文件中加入参数:-–insecure-registry=10.60.34.46:5000来规避这个问题。

    1. vi /usr/lib/systemd/system/docker.service
    2. [Service]
    3. Type=notify
    4. ExecStart=/usr/bin/docker daemon -H fd:// --insecure-registry=10.60.34.46:5000

    重启docker:

    1. systemctl daemon-reload
    2. service docker restart

    再次上传:

    1. [root@bogon ~]# docker push 10.60.34.46:5000/busybox
    2. The push refers to a repository [10.60.34.46:5000/busybox] (len: 1)
    3. Sending image list
    4. Pushing repository 10.60.34.46:5000/busybox (1 tags)
    5. Image cfa753dfea5e already pushed, skipping
    6. Image d7057cb02084 already pushed, skipping
    7. Pushing tag for rev [d7057cb02084] on {
    8. http://10.60.34.46:5000/v1/repositories/busybox/tags/latest}

    查看私有仓库:

    1. [root@bogon ~]# curl http://10.60.34.46:5000/v1/search
    2. {
    3. "num_results": 2, "query": "", "results": [{
    4. "description": "", "name": "library/centos"}, {
    5. "description": "", "name": "library/busybox"}]}

    查询镜像:

    1. [root@bogon ~]# curl http://10.60.34.46:5000/v1/search?q=busybox
    2. {
    3. "num_results": 1, "query": "busybox", "results": [{
    4. "description": "", "name": "library/busybox"}]}

    获取镜像:

    docker pull 10.60.34.46:5000/busybox

    1. 上传镜像报错
    2. \[root@registry xinetd.d\]\# docker push 10.100.50.120:5000/busybox
    3. The push refers to a repository \[10.100.50.122:5000/busybox\]
    4. Get https://10.100.50.120:5000/v1/\_ping: http: server gave HTTP response to HTTPS client
    5. \[root@registry xinetd.d\]\#
    6. 解决方案:
    7. 修改/etc/sysconfig/docker文件,并重新启动docker服务。
    8. ADD\_REGISTRY='--add-registry 10.100.50.120:5000'
    9. INSECURE\_REGISTRY='--insecure-registry 10.100.50.120:5000'

    另外解决方案:

    在”/etc/docker/“目录下,创建”daemon.json“文件。在文件中写入:

    {

    1. "insecure-registries": [
    2. "hub.docker.jiankunking.io:5000"
    3. ]

    }
    //多个私服写法,逗号分隔即可
    {

    1. "insecure-registries": [
    2. "test.docker.jiankunking.io:5000",
    3. "hub.docker.jiankunking.io:5000"
    4. ]

    }

客户端添加私有仓库地址

  1. # 添加这一行
  2. ADD_REGISTRY='--add-registry 192.168.0.179:5000'

加上后,search镜像,私有仓库和docker hub上都会显示;
不加搜索私有仓库,需要命令中指定私有仓库ip

``

使用仓库中的镜像

查询私有仓库中的所有镜像,使用docker search命令:

  1. curl -u myuser https://registry_ip:5000/v1/search
  2. curl registry_ip:5000/v1/search
  3. docker search registry_ip:5000/ #centos 7
  4. docker search registry_ip:5000/library #centos 6

查询仓库中指定账户下的镜像,则使用如下命令:

  1. docker search registry_ip:5000/account/

遇到的问题:

通过 curl 47.106.91.104:5000/v1/search 命令查询本地仓库镜像一直报404错误,通过docker search register发现register版本是2.0的。v2的查询命令是: curl 47.106.91.104:5000/v2/_catalog

``

``镜像迁移:解决不同主机环境下对镜像的使用

1. 可以通过`docker commit`命令提交image到本地,然后push到registry服务器上(私有的或者共有的docker hub),然后从registry服务器上拉取到本地就可以了。 2. 通过`docker export`或者`docker save`命令将容器或image保存下来,然后通过`docker import或者docker load`命令导入就可以了。 另外可以通过写dockerfile来移植,`docker build`就好。 `转载原博地址:https://blog.csdn.net/jiankunking/article/details/71190814` `https://blog.csdn.net/apexlj/article/details/49076677`

https://blog.csdn.net/fgf00/article/details/52040492

发表评论

表情:
评论列表 (有 0 条评论,308人围观)

还没有评论,来说两句吧...

相关阅读