资讯专栏INFORMATION COLUMN

Docker: 上传镜像至私有仓库

whatsns / 571人阅读

摘要:在上一篇构建出镜像后,我们可以部署一个私有镜像仓库用来存放我们的镜像。执行命令成功后使用能看到服务已经启动上传镜像要上传镜像到私有仓库,需要在镜像的上加入仓库地址为了不与其他镜像冲突,可以加入命名空间如,另外最好给镜像打上如。

镜像可以很方便直接 push 到 docker 的公共仓库,就好像 github 一样,但是我们在开发中很多时候都不想公开镜像文件,这时就需要搭建 docker 的私有仓库,就好像 gitlab 一样。

在 上一篇 构建出镜像后,我们可以部署一个私有镜像仓库用来存放我们的镜像。

启动私有 Registry

启动一个私有仓库也非常简单,在服务器上执行命令

docker run -d -p 5000:5000 --name="docker-registry" --restart=always -v /root/docker/registry/:/var/lib/registry/ registry 

即后台启动 registry 镜像构建出来的容器,并命名为 docker-registry,端口号映射为 50005000

--restart=always 代表当容器因为某些原因停止时,不管退出码是什么都自动重启。除了 always 还有 on-failure 代表只有退出码不为 0 时才重启,并且接受重启次数参数:--restart=on-failture:5

-v 指定将宿主机的 /root/docker/registry/ 目录挂载到容器的 /var/lib/registry/ 目录。这样我们不用进入容器,在宿主机上就能访问到容器内我们感兴趣的目录了。

为什么是 /var/lib/registry/ 目录?
仓库默认存放镜像等信息在容器的 /var/lib/registry/docker 目录下,可以进入该目录查看已上传镜像信息。

执行 run 命令成功后使用 docker ps 能看到 registry 服务已经启动:

上传镜像

要上传镜像到私有仓库,需要在镜像的 tag 上加入仓库地址:

docker tag express-app 111.111.111.111:5000/sunhengzhe/express-app:v1

为了不与其他镜像冲突,可以加入命名空间如 sunhengzhe,另外最好给镜像打上 tag 如 v1

注意仓库地址没有加协议部分,docker 默认的安全策略需要仓库是支持 https 的,如果服务器只能使用 http 传输,那么直接上传会失败,需要在 docker 客户端的配置文件中进行声明。

mac 配置

更改完需要 Apply & Restart

centos 系统

/etc/docker/daemon.json 文件中写入:

{
  "registry-mirror": [
    "https://registry.docker-cn.com"
  ],
  "insecure-registries": [
    "[私有仓库 ip:port]"
  ]
}

然后重启 docker

systemctl restart docker
推送镜像

打完 tag 后使用 push 命令推送即可:

docker push 111.111.111.111:5000/sunhengzhe/express-app:v1

推送失败

如果出现 Retrying in 5 seconds 然后上传失败的问题。可以首先在服务器上使用 logs 命令查看日志:

docker logs -f docker-registry

-f 代表持续输出文件内容。

如果出现 filesystem: mkdir /var/lib/registry/docker: permission denied,可能是 一个 selinux 问题,需要在服务器上对挂载目录进行处理:

chcon -Rt svirt_sandbox_file_t /root/docker/registry/

此示例中即 /root/docker/registry/

拉取镜像

使用 pull 命令即可

docker pull 111.111.111.111:5000/sunhengzhe/express-app:v1

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

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

相关文章

  • Jenkins + Docker 简单部署 node.js 项目

    摘要:目前官方已开始推荐使用替代之前的做为基础镜像环境。包括镜像下载速度加快,镜像安全性提高,主机之间的切换更方便,占用更少磁盘空间等。 有了前几篇的基础后,我们现在已经能 docker 篇: 构建 docker 镜像 上传私有仓库 拉取私有镜像 启动容器 jenkins 篇: 配置 pipeline 触发 pipeline 接下来就可以结合两者,用 jenkins + docker...

    princekin 评论0 收藏0
  • 私有镜像库构建攻略

    摘要:检查下是否已经被创建最后,运行我们试一下是否可以登陆接下来我们试下是否可以下载标记上传容器镜像至我们的新镜像仓库。几分钟之后,的私有镜像仓库就可以使用了。 上篇文档中,我已经详细介绍了如何快速简单的部署Rancher Server,启用Github认证以及数据保持方便后续的升级操作。在这篇文档中,我将梳理下如何创建一个有密码保护的私有Docker Registry以及如何和Ranche...

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

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

    silenceboy 评论0 收藏0
  • 使用新浪云存储搭建Docker私有仓库服务

    摘要:与业务相关的镜像可以使用私有的,提高安全性。其后端存储方案有两个。能不能使用国内存储服务如新浪云存储,做一个私有呢在进一步了解的过程中,笔者了解到实际上服务本身提供机制,可以整合更多的存储服务整合。 最近使用Docker的同学越来越多。 使用Docker的时候需要了解Registry服务 - 即镜像存储服务。 Registry是一个管理Docker镜像的服务,当使用Docker的P...

    taoszu 评论0 收藏0
  • Docker 创建私有仓库

    摘要:清除所有处于终止状态的容器访问仓库仓库是集中存放镜像的地方。仓库可以看成是一个具体的项目或目录。是注册服务器地址,是仓库名。生成认证文件编辑修改编辑启动测试私有仓库功能登录到私有仓库尝试推送拉取镜像端口若被占用请尝试用代理 docker save load 与 docker export import 利用ssh pv Linux管道 实现镜像迁移(带进度条) docker save ...

    Kylin_Mountain 评论0 收藏0

发表评论

0条评论

whatsns

|高级讲师

TA的文章

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