资讯专栏INFORMATION COLUMN

Docker入门-Hub官方仓库使用及搭建本地私有仓库(CentOS 7)

IT那活儿 / 4331人阅读
Docker入门-Hub官方仓库使用及搭建本地私有仓库(CentOS 7)

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!

问题1:Docker Hub官方仓库使用

Docker Hub(https://hub.docker.com)是目前Docker官方维护的一个公共仓库,其中包括100000多个镜像。
docker中文社区http://www.docker.org.cn/page/resources.html
1. 注册Docker Hub账号
docker login,输入用户名、密码、邮箱来完成注册和登录。
本地用户下会自动创建.docker/config.json文件,保存用户的认证信息。
登录成功的用户可以上传个人制作的镜像到Docker Hub。
Username: xxxx
2. 仓库基本操作
  • docker pull 镜像名(如ubuntu)   //默认下载Docker Hub官方仓库中的镜像;
  • docker push 镜像名(如myubuntu) //默认把镜像上传到Docker Hub官方仓库中;
  • docker search 关键字(如mysql) //默认搜索Docker Hub官方仓库中的镜像。

搜索结果说明

  • 第一行NAME为centos的镜像,是官方(OFFICIAL)创建的;
  • 第二行NAME为ansible/centos7-ansible,这种格式的镜像是由Docker Hub用户ansible创建并维护的。
3. 自动创建(AUTOMATED)
自动创建( Automated Builds)是 Docker Hub提供的自动化服务,这一功能可以自动跟随项目代码的变更而重新构建镜像。
例如:用户构建了某应用镜像,如果应用发布新版本,用户需要手动更新镜像。而自动创建则允许用户通过 Docker Hub指定跟踪一个目标网站(目前支持 Github或 Bit Bucket)上的项目,一旦项目发生新的提交,则自动执行创建。
要配置自动创建,包括如下的步骤:
  • 创建并登录 Docker Hub,以及目标网站如 Github;
  • 在目标网站中允许 Docker Hub访问服务;
  • 在 Docker Hub中配置一个“自动创建”类型的项目;
  • 选取一个目标网站中的项目(需要含 Dockerfile)和分支;
  • 指定 Dockerfile的位置,并提交创建。
之后,可以在 Docker Hub的“自动创建”页面中跟踪每次创建的状态。
4. 第三方镜像市场
比如:时速云镜像市场(https://hub.tenxcloud.com
下载镜像时要做镜像名前面加上第三方镜像市场注册服务器的具体地址。
格式:docker pull 服务器注册地址/命名空间/REPOSITORY[:TAG]
比如:
docker pull index.tenxcloud.com/docker_library/node:latest
下载后,可以通过docker tag 给镜像添加新标签,与官方保持一致:

docker tag index.tenxcloud.com/docker_library/node:latest node:latest

问题2:Docker资源汇总,国内镜像(加速)

1. Docker资源

  • Docker 官方主页: https://www.docker.com
  • Docker 官方博客:https://blog.docker.com/
  • Docker 官方文档: https://docs.docker.com/
  • Docker Store: https://store.docker.com
  • Docker Cloud: https://cloud.docker.com
  • Docker Hub: https://hub.docker.com
  • Docker 的源代码仓库: https://github.com/moby/moby
  • Docker 发布版本历史: https://docs.docker.com/release-notes/
  • Docker 常见问题: https://docs.docker.com/engine/faq/
  • Docker 远端应用 API:https://docs.docker.com/develop/sdk/
  • Docker 菜鸟教程 https://www.runoob.com/docker/docker-run-command.html
2. Docker国内镜像
  • 阿里云的加速器:https://help.aliyun.com/document_detail/60750.html
  • 网易加速器:http://hub-mirror.c.163.com
  • 官方中国加速器:https://registry.docker-cn.com
  • ustc 的镜像:https://docker.mirrors.ustc.edu.cn
  • daocloud:https://www.daocloud.io/mirror#accelerator-doc
3. 配置官方镜像加速
国内从 DockerHub 拉取镜像有时会遇到困难,甚至下载失败,此时可以配置镜像加速器。
方式一:(未及验证)
Docker官方和国内很多云服务商都提供了国内加速器服务,例如:
Docker官方提供的中国镜像库:https://registry.docker-cn.com
七牛云加速器:https://reg-mirror.qiniu.com
Ubuntu16.04+、Debian8+、CentOS7等系统,在/etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件):
{"registry-mirrors":["https://registry.docker-cn.com"]}
重新启动服务:
sudo systemctl daemon-reload
sudo systemctl restart docker.service
Windows 10 的系统,在系统右下角托盘 Docker 图标内右键菜单选择 Settings,打开配置窗口后左侧导航菜单选择 Daemon。
在 registry-mirrors 一栏中填写加速器地址 https://registry.docker-cn.com ,之后点击 Apply 保存后 Docker 就会重启并应用配置的镜像地址了。
方式二:(已验证可以)
阿里云容器镜像服务 ACR 提供了官方的镜像站点,从而加速官方镜像的下载。
阿里云的加速器:https://help.aliyun.com/document_detail/60750.html
登录容器镜像服务控制台(需要注册账号):https://cr.console.aliyun.com/?spm=a2c4g.11186623.2.15.19e611beo3Fhq5,在左侧的镜像中心->镜像加速器页面会显示为您独立分配的加速地址:
https://z6pn1lmd.mirror.aliyuncs.com
CentOS 7系统配置方式:
1)将默认的配置文件(/lib/systemd/system/docker.service)复制到 /etc/systemd/system/docker.service:
sudo cp -n /lib/systemd/system/docker.service /etc/systemd/system/docker.service
2)再将加速器地址添加到配置文件的启动命令中:
sudo sed -i "s|ExecStart=/usr/bin/docker daemon|ExecStart=/usr/bin/docker daemon --registry-mirror=|g" /etc/systemd/system/docker.service
sudo sed -i "s|ExecStart=/usr/bin/dockerd|ExecStart=/usr/bin/dockerd --registry-mirror=|g" /etc/systemd/system/docker.service

3)重启 Docker服务:

sudo systemctl daemon-reload
sudo systemctl restart docker.servic

问题3:搭建本地私有仓库
1. 使用官方提供的regisry镜像创建私有仓库
docker run -d -p 5000:5000 -v /docker/data/registry:/var/lib/registry --restart=always --privileged=true --name registry registry:2
此时,在本地将启动一个私有仓库服务,监听端口为5000:
  • -p 5000:5000:端口映射。即本地5000端口,映射到registry容器中的5000端口。
  • –restart=always1:在容器退出时总是重启容器,主要应用在生产环境。
  • –privileged=true:在CentOS7中的安全模块selinux把权限禁掉了,参数给容器加特权,不加上传镜像会报类似权限错误。OSError: [Errno 13] Permission denied: ‘/tmp/registry/repositories/liibrary’)或者(Received unexpected HTTP status: 500 Internal Server Error).
  • –name registry:指定容器的名称。
默认情况下,仓库会被创建在容器的/var/lib/registry目录下。通过-v参数来将镜像文件存放在本地/docker/data/registry目录下。
2. 管理私有仓库
查看仓库容器IP,以及本地主机IP:
docker inspect -f "{{.NetworkSettings.IPAddress}}" registry
上传镜像:
给镜像ubuntu:latest加个新的标签192.168.44.81:5000/ubuntu:latest.
格式:
docker tag IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
docker tag ubuntu:latest 192.168.44.81:5000/ubuntu:latest


执行上传:
docker push 192.168.44.81:5000/ubuntu:latest
在PUSH的过程中可能报类似如下的错误:
则在/etc/docker下创建daemon.json,加入内容:
{"insecure-registries":["192.168.44.81:5000"]}

然后重启docker服务:

sudo systemctl daemon-reload
sudo systemctl restart docker.service
查看上传结果:curl <仓库地址>/v2/_catalog.
curl http://192.168.44.81:5000/v2/_catalog
查询镜像tag(版本):curl <仓库地址>/v2/<镜像名>/tags/list.
curl http://192.168.44.81:5000/v2/ubuntu/tags/list
也可以通过浏览器查看私有仓库的内容:
http://192.168.44.81:5000/v2/_catalog
http://192.168.44.81:5000/v2/ubuntu/tags/list
在其他主机上下载这个镜像:
docker pull 192.168.44.81:5000/ubuntu:latest
在PULL的过程中可能报类似如下的错误:
则在/etc/docker下创建daemon.json,加入内容:
{"insecure-registries":["192.168.44.81:5000"]}
然后重启docker服务:
sudo systemctl daemon-reload
sudo systemctl restart docker.service


本文作者:孙长城(上海新炬王翦团队)

本文来源:“IT那活儿”公众号

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129382.html

相关文章

  • Docker Hub 仓库使用搭建 Docker Registry

    摘要:目前官方维护了一个公共仓库,其中已经包括了数量超过的镜像。推送镜像我们先制作一个镜像先制作一个镜像创建文件内容如下生成镜像查看镜像推送制作的镜像用户也可以在登录后通过命令来将自己的镜像推送到。这将使用官方的镜像来启动私有仓库。 目前 Docker 官方维护了一个公共仓库 Docker Hub,其中已经包括了数量超过 15,000 的镜像。大部分需求都可以通过在 Docker Hub 中...

    Kosmos 评论0 收藏0
  • 30 分钟快速入门 Docker 教程

    摘要:分钟快速入门教程一欢迎来到世界与虚拟化在没有的时代,我们会使用硬件虚拟化虚拟机以提供隔离。仓库分为公开仓库和私有仓库,最大的公开仓库是官方仓库,国内的公开仓库也有很多选择,例如阿里云等。 30 分钟快速入门 Docker 教程 一、欢迎来到 Docker 世界 1. Docker 与虚拟化 在没有 Docker 的时代,我们会使用硬件虚拟化(虚拟机)以提供隔离。这里,虚拟机通过在操作系...

    LucasTwilight 评论0 收藏0
  • 30 分钟快速入门 Docker 教程

    摘要:分钟快速入门教程一欢迎来到世界与虚拟化在没有的时代,我们会使用硬件虚拟化虚拟机以提供隔离。仓库分为公开仓库和私有仓库,最大的公开仓库是官方仓库,国内的公开仓库也有很多选择,例如阿里云等。 原文地址:梁桂钊的博客博客地址:http://blog.720ui.com 欢迎关注公众号:「服务端思维」。一群同频者,一起成长,一起精进,打破认知的局限性。 30 分钟快速入门 Docker 教程...

    Binguner 评论0 收藏0
  • 30 分钟快速入门 Docker 教程

    摘要:分钟快速入门教程一欢迎来到世界与虚拟化在没有的时代,我们会使用硬件虚拟化虚拟机以提供隔离。仓库分为公开仓库和私有仓库,最大的公开仓库是官方仓库,国内的公开仓库也有很多选择,例如阿里云等。 原文地址:梁桂钊的博客博客地址:http://blog.720ui.com 欢迎关注公众号:「服务端思维」。一群同频者,一起成长,一起精进,打破认知的局限性。 30 分钟快速入门 Docker 教程...

    yexiaobai 评论0 收藏0
  • 使用nexus3.x配置docker镜像仓库仓库代理

    摘要:正好我们在使用作为的仓库,同时提供了等诸多类型的仓库功能。值得一提的是,我们可以使用这个仓库从和下载镜像,但是我们不能通过这个仓库推送镜像到远程仓库。 背景 我们一直使用 harbor 作为docker的镜像仓库,但Harbor只能作为私有仓库,当需要Docker Hub 或 Google Cloud Containers 上的镜像时,我们只能自己手动pull,重新打tag,再push...

    HollisChuang 评论0 收藏0
  • Docker零基础入门指南(五):Docker仓库使用

    摘要:原文地址零基础入门指南五仓库是集中存放镜像的地方。最常使用的公开服务是官方的,这也是默认的,并拥有大量的高质量的官方镜像。登录可以通过执行命令交互式的输入用户名及密码来完成在命令行界面登录。使用将这个镜像标记为。 原文地址:Docker零基础入门指南(五) 仓库( Repository )是集中存放镜像的地方。一个容易混淆的概念是注册服务器( Registry )。实际上注册服务器是管...

    silenceboy 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<