• ubuntu-docker入门到放弃(三)images镜像管理


    docker虽然有公共的镜像管理hub,但是我们在日常的使用中,由于不同的业务场景,不同的架构,公共的镜像库不能满足需求,并且出于安全考虑,会搭建私有的docker hub镜像库来管理自己的images,今天我们主要学习的就是搭建私有的images库。

    其实搭建私有仓库很简单,只需要下载并运行一个容器就可以了:

    #docker pull registry
    #docker images

    运行这个images启动一个容器:

    #docker run -dit -p 5000:5000 -v /opt/data/registry/:/tmp/registry registry

    默认的端口是5000,需要吧端口映射到宿主机。

    默认的镜像存储容器的/tmp/registry,如果删除了容器,则上传的镜像也会删除,所以为了安全,将目录映射到宿主机。

    -v 参数:映射目录到宿主机

    #docker ps

    接下来我们就找一个images上传上去吧:

    #docker pull tomcat:7

    下载一个tomcat7

    要在本地仓库上传镜像,首先需要标记一个镜像,以下标记tomcat这个镜像:

    #docker tag tomcat:7 10.30.234.212:5000/tomcat

    然后进行上传:

    首次上传会出现以下错误:

    Get https://192.168.1.23:5000/v2/: http: server gave HTTP response

    出现上面错误的原因分析:

    因为Docker从1.3.X之后,与docker registry交互默认使用的是https,然而此处搭建的私有仓库只提供http服务,所以当与私有仓库交互时就会报上面的错误。
    为了解决这个问题需要在启动docker server时增加启动参数为默认使用http访问。
    目前很多文章都是通过修改docker的配置文件“etc/systemconfig/docker",重启docker来解决这个问题。

    但发现docker1.12.3版本并无此文件,根据网上创建此文件,并填入相应内容,重启docker无效果,仍然报此错误。

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

    { "insecure-registries":["192.168.1.23:5000"] }
    #restart docker
    #docker start 366c3c5fe1ea #registry容
    #docker push  10.30.234.212:5000/tomcat

    这样就可以上传成功了,然后我们来查看一下我们上传的images:

    查看上传images的log:

    #curl http://192.168.1.23:5000/v2/_catalog
    {"repositories":["tomcat"]

    查看tags:

    #curl http://10.30.234.212:5000/v2/tomcat/tags/list
    {"name":"tomcat","tags":["latest"]

    然后我们查看本地的images会发现有已经下载的tomcat,我们把这个都删除掉,测试一下从本地私有镜像库拉取images:

    #docker images

    我们把上面两个都删除掉:

    #docker rmi 10.30.234.212:5000/tomcat
    #docker rmi tomcat:7
    #docker image

    已经没有tomcat了,接下来我们从私有库下载一个tomcat:

    #docker pull 10.30.234.212:5000/tomcat
    #docker image

    也可以在局域网或者能访问到私有镜像地址的其他机器上来远程拉取镜像,需要注意https那个问题,如果遇到,还是需要配置/etc/docker/下面的daemon.json文件。

    私有仓库中上传的images是不支持删除的,需要使用第三方插件来删除:

    插件地址:

    插件github上的位置:
    https://github.com/burnettk/delete-docker-registry-image
    #curl https://raw.githubusercontent.com/burnettk/delete-docker-registry-image/master/delete_docker_registry_image.py | sudo tee /usr/local/bin/delete_docker_registry_image >/dev/null
    #sudo chmod a+x /usr/local/bin/delete_docker_registry_image

    设置images库的路径:

    查找路径:

    #find / -name registry
    root@iZuf606noo6islit6xfcq6Z:/usr/local/bin# find / -name registry
    /var/lib/docker/volumes/9d875af73ca50c226e8ff3c0cbb52d126ca59cf03381a7830b9d9de7335eb579/_data/docker/registry
    /var/lib/docker/volumes/a96c269acc4a365a98823fba6cf11254ecda7787567373b19b2b9b1cc6c36765/_data/docker/registry
    /var/lib/docker/overlay2/f1ecdc6224c9fce2b725b1e1dc4e9e6e234afb49e0ed29aa14e420b7a5158193/diff/var/lib/ucf/registry
    /var/lib/docker/overlay2/e2984582e55abb4c80d86225eb2ce5187de206c035d49d2c10b7dd537de445be/diff/var/lib/ucf/registry
    /var/lib/docker/overlay2/84e5da2816ddfdc7b1d2e5e25d1c516dfc468e8135b25ff2c1a60ea3eb16e0cf/diff/var/lib/ucf/registry
    /var/lib/docker/overlay2/d8559fc483ba2956dc6965589e9dbb00259cfbbdc22670428d8e1a8fd78e01d3/diff/bin/registry
    /var/lib/docker/overlay2/8185a14e7a67927ddfe51ecc7a33e79a1d162075f34fa2b2d7c238fc71d9d3ab/diff/var/lib/ucf/registry
    /var/lib/docker/overlay2/298233ae749cdbf0e7373f88b7374ff158c9e65e79b982fd863c5c60b21a2f40/diff/var/lib/ucf/registry
    /var/lib/docker/overlay2/8a6c0d5788cba5d14c85dcea54f4a21713474bf19bf8b213e7d1ac7b3ef5cd2b/diff/tmp/registry
    /var/lib/docker/overlay2/8a6c0d5788cba5d14c85dcea54f4a21713474bf19bf8b213e7d1ac7b3ef5cd2b/diff/var/lib/registry
    /var/lib/docker/overlay2/8a6c0d5788cba5d14c85dcea54f4a21713474bf19bf8b213e7d1ac7b3ef5cd2b/merged/bin/registry
    /var/lib/docker/overlay2/8a6c0d5788cba5d14c85dcea54f4a21713474bf19bf8b213e7d1ac7b3ef5cd2b/merged/tmp/registry
    /var/lib/docker/overlay2/8a6c0d5788cba5d14c85dcea54f4a21713474bf19bf8b213e7d1ac7b3ef5cd2b/merged/var/lib/registry
    /var/lib/docker/overlay2/8a6c0d5788cba5d14c85dcea54f4a21713474bf19bf8b213e7d1ac7b3ef5cd2b/merged/etc/docker/registry
    /var/lib/docker/overlay2/8cec4dd19bf9c878ac8d9a60f46140bc279815dee2a28a83d3917092a7c356ac/diff/etc/docker/registry
    /var/lib/ucf/registry
    /opt/data/registry

    使用这个路径来声明环境变量:/var/lib/docker/volumes/9d875af73ca50c226e8ff3c0cbb52d126ca59cf03381a7830b9d9de7335eb579/_data/docker/registry

    #cd /var/lib/docker/volumes/9d875af73ca50c226e8ff3c0cbb52d126ca59cf03381a7830b9d9de7335eb579/_data/docker/registry
    #export REGISTRY_DATA_DIR=/var/lib/docker/volumes/9d875af73ca50c226e8ff3c0cbb52d126ca59cf03381a7830b9d9de7335eb579/_data/docker/registry/v2

    先看一下我们的私有仓库有哪些images:

    #curl http://192.168.1.23:5000/v2/tomcat/tags/list
    {"name":"tomcat","tags":["latest"]

    只有一个,删除这个images:

    #delete_docker_registry_image --image tomcat:latest

    在看一下:

    #curl http://192.168.1.23:5000/v2/tomcat/tags/list
    {"errors":[{"code":"NAME_UNKNOWN","message":"repository name not known to registry","detail":{"name":"tomcat"}}]

    已经删除,查不到了。

    本次关于私有仓库的学习就到这里。

  • 相关阅读:
    大数据基础---Hbase搭建
    大数据基础---Hbase是什么?
    大数据基础---Hive的搭建
    hive_异常_01_ Terminal initialization failed; falling back to unsupported
    Exception in thread "main" java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
    Jupyter notebook 平台字体修改
    Git教程04——GitHub远端仓库内容同步本地仓库
    Git教程03——本地仓库内容同步到GitHub远程仓库
    Git教程02——利用Git GUI 连接 GitHub远程仓库
    Git教程01——Windows 安装 Git
  • 原文地址:https://www.cnblogs.com/slim-liu/p/9874749.html
Copyright © 2020-2023  润新知