Docker容器实战之镜像仓库

目录
  • 一.  镜像仓库
    • 1. 账号注册
    • 2. 创建仓库
  • 二. 上传镜像

一.  镜像仓库

Registry是Docker公司的一项创新,它提供了存放镜像的仓库服务。在构建好镜像后,我们通常会将镜像上传到Registry服务器上进行保存。这样可以保证不会因本机故障而导致镜像丢失,同时,其他机器也能很方便地通过网络方式下载。

Docker Hub即为Docker官方的Registry服务器,它的访问地址为 https://hub.docker.com 。我们总是习惯将Registry称为仓库,但事实上两者并不完全等同。它们之间的关系如下图所示,在Registry中可以有多个仓库,每个仓库存储同名的镜像,而镜像之间通过Tag进行版本区分。

Docker客户端默认使用Docker Hub拉取镜像,在Docker Hub上有着数量众多的仓库,其中就有Docker官方提供的公共仓库。在官方仓库中存储了海量的应用镜像,这些镜像都是经过官方的筛选和审查,具有较高的安全性,应该作为生产使用的首选项。Docker Hub具有与GitHub相同的概念,Stars代表着镜像受欢迎程度,通常优先下载Stars数量多的镜像。

除了使用官方仓库,我们也可以在Docker Hub上面创建自己的个人仓库,用于存放定制化的镜像。

操作方法如下:

1. 账号注册

新用户需要使用自己的邮箱地址注册账号,点击Register按键后开始注册。

2. 创建仓库

使用账号登录系统后,我们就可以来创建自己的仓库。仓库分为两类,一类为公共仓库,一类为私有仓库 ,公共仓库属于开放性仓库,用户不需要任何验证即可下载镜像,而私有仓库需要具有相关权限的账号才能下载。免费用户目前在Docker Hub只能创建一个私有仓库,公共仓库则没有限制。

选择“Repositories“菜单,然后点击”Create Repository”创建用户,此处创建一个公共仓库,名称为myapp,前面部分为我们的在Dcoker Hub的专属名称空间。

点击“Create” 创建完成后,我们可以来试着上传镜像了。

二. 上传镜像

在前面构建镜像时,我们配置了镜像名称,如:myapp:1.0。如果只在本机使用的话,对于名称格式并没有特别要求。但如果要将镜像上传或从仓库下载的话,那么必须使用如下的名称格式 :

Registry Address/Namespace/Repository:Tag
  • Registry Address:指向Registry服务器的地址 ,当镜像未设置该项时,则默认使用Docker Hub的地址。
  • Namespace:Registry中唯一的空间地址,可以用于区分不同用户或项目。默认使用Docker官方的空间地址。
  • Repository:仓库名称,同一个应用的镜像仓库名相同,通过不同的tag来标记。
  • Tag:用于标记不同的镜像版本。

现在,我们按照上面的格式来修改前面创建的镜像myapp:1.0,命令格式为:docker [image] tag +<Source_image:Tag> + <Target_image:Tag>。

$ docker tag myapp:1.0 alex990/myapp:1.0

注释:由于Docker Hub地址为默认,故此处不需要增加,如果是其他第三方Registry,则需要在前面加上对应的地址。

docker tag命令并不会对原有镜像做修改,只会将新的tag 映射到该镜像。我们可以看到,新镜像的IMAGE ID与原镜像的相同,证明都是属于同一个镜像文件。

$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
alex990/myapp 1.0 6c1160b01988 20 hours ago 43.2MB
myapp 1.0 6c1160b01988 20 hours ago 43.2MB

运行docker login,并按提示输入Docker Hub注册的账号信息,完成验证。

$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: alex990
Password:
Login Succeeded

然后,我们通过docker [image] push 命令上传镜像到仓库,如下:

$ docker push alex990/myapp:1.0
The push refers to repository [docker.io/alex990/myapp]
7a965a3a67a7: Mounted from linsr2018/myapp
f604d2d04ecc: Mounted from linsr2018/myapp
9b999b9e5af8: Mounted from linsr2018/myapp
675233026df0: Mounted from linsr2018/myapp
ddb2d7cdfff3: Mounted from linsr2018/myapp
1965cfbef2ab: Mounted from linsr2018/myapp
8d3ac3489996: Mounted from linsr2018/myapp
1.0: digest: sha256:04f75f3422e55affbdf7f14f0a2e5784d09d7774d9f7f695b412b065cdb484c3 size: 1782

上传完成后,登录Docker Hub可看到镜像已存在。现在,我们可以到其他机器上进行下载使用了。

到此这篇关于Docker容器实战之镜像仓库的文章就介绍到这了,更多相关Docker 镜像仓库内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • IDEA远程管理docker镜像及容器服务的实现

    目录 一.开启docker远程访问服务 二.IDEA安装Dokcer插件 使用命令行的方式管理服务器镜像及容器是运维人员最常用的方式,但是有的时候我们不得不远程操作docker或者是面向对docker并不熟悉的技术人员提供能力(配置管理员.测试人员),这种情况下图形界面就有必要了.提供图形界面的方式来操作docker也的确是比使用命令行的方式更直接.更简单.所以很多的厂商基于docker RESTful API向用户提供了用于docker容器镜像管理的用户图形界面,Portainer.Docke

  • Docker容器实战之镜像与容器的工作原理

    目录 一. bootfs和rootfs 二. 镜像结构 三. 容器层 四. 联合文件系统​ 一. bootfs和rootfs 通常而言,Linux的操作系统由两类文件系统组成:bootfs(boot file system)和rootfs(root file system),它们分别对应着系统内核与根目录文件.bootfs层主要为系统内核文件,这层的内容是无法修改的.当我们的系统在启动时会加载bootfs,当加载完成后整个内核都会存到内存中,然后系统会将bootfs卸载掉.而rootfs层则包含

  • docker容器详细讲解如何精简镜像减小体积

    目录 一.减少镜像层数 1.指令合并 2.多阶段构建 3.启用squash特性 二.缩减容量 1. 选择小的基础镜像 2.上下文管理 3.及时清理下载 精简镜像我们可以从两个方面切入: 减少镜像层数 缩减容量 一.减少镜像层数 1.指令合并 Dockerfile 中的每条指令都将创建一个层,不过查看官方文档中最佳实践有这样一句话: In older versions of Docker, it was important that you minimized the number of laye

  • Docker配置本地镜像与容器的存储位置

    使用find命令找到大于指定大小的文件: find / -type f -size +10G 排除某个目录 find / -path "/media/xww" -type f -size +10G 修改Docker本地镜像与容器的存储位置的方法 方法一.软链接 默认情况下Docker的存放位置为:/var/lib/docker 可以通过下面命令查看具体位置: sudo docker info | grep "Docker Root Dir" 解决这个问题,最直接的方

  • Docker通过容器生成镜像提交DockerCommit详解

    目录 在本地创建一个容器后,可以依据这个容器创建本地镜像,并可把这个镜像推送到Docker hub中. 根据镜像启动容器:docker run 根据启动的容器创建新的镜像:docker commit 将由容器生成的镜像push到镜像仓库docker hub push失败之后,需要根据镜像仓库的路径打tag,然后提交到镜像仓库: 在另一台服务器下载上图push到镜像仓库的新镜像 参考文章:通过容器提交镜像DockerCommit及推送镜像DockerPush 以上就是Docker通过容器生成镜像提

  • skywalking容器化部署docker镜像构建k8s从测试到可用

    目录 前言碎语 docker镜像构建 application.yml webapp.yml setApplicationEnv.sh setWebAppEnv.sh Kubernetes中部署 文末结语 前言碎语 skywalking是个非常不错的apm产品,但是在使用过程中有个非常蛋疼的问题,在基于es的存储情况下,es的数据一有问题,就会导致整个skywalking web ui服务不可用,然后需要agent端一个服务一个服务的停用,然后服务重新部署后好,全部走一遍.这种问题同样也会存在sk

  • Docker容器实战之镜像仓库

    目录 一.  镜像仓库 1. 账号注册 2. 创建仓库 二. 上传镜像 一.  镜像仓库 Registry是Docker公司的一项创新,它提供了存放镜像的仓库服务.在构建好镜像后,我们通常会将镜像上传到Registry服务器上进行保存.这样可以保证不会因本机故障而导致镜像丢失,同时,其他机器也能很方便地通过网络方式下载. Docker Hub即为Docker官方的Registry服务器,它的访问地址为 https://hub.docker.com .我们总是习惯将Registry称为仓库,但事实

  • Docker容器搭建本地私有仓库详情

    目录 前言 一.首先下载registry镜像 二.在daemon.json文件中添加私有镜像仓库的地址并重启 三.创建registry容器并开放端口 四.给镜像打标签后上传到私有仓库 五.获取私有仓库列表查看是否上传成功 六.验证:从私有仓库下载镜像 前言 Docker 官方提供了一个搭建私有仓库的镜像 registry ,运行该镜像的容器并且对外暴露5000端口就ok了.通常我们在docker拉取的镜像都是在docker hub或quay.io等公有仓库获取,那么在实际工作中,每个公司如果使用

  • 详解Docker 容器基础系统镜像打包

    因为容器本身是共享宿主操作系统内核,所以容器基础系统镜像包本身就是一个标准的 Linux rootfs + 用户自定义的工具.根据这个思路,我们就可以构建一个自己的容器基础系统镜像. 构建标准的 Linux rootfs 的方式有很多种方法,Redhat.Debian.SUSE等主流的发行版都有提供相应的工具支持. 大概的流程如下: 构建基础的 rootfs -> 配置基础系统参数 -> 部署用户自定义软件 -> 清理系统 -> 打包为容器镜像 -> 测试镜像 -> 发

  • Docker Registry搭建私有镜像仓库的实现方法

    微服务的镜像会上传到Docker仓库保存,常用的公网Docker仓库有阿里云,网易云等,在企业局域网也可以搭建自己的Docker私有仓库,本教程使用Docker提供的私有仓库registry. 1.拉取私有仓库镜像 docker pull registry 2.创建启动私有仓库容器 docker run -dit -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name docker-registry reg

  • CentOS7.2服务器上搭建Docker私有镜像仓库操作示例

    本文实例讲述了CentOS7.2服务器上搭建Docker私有镜像仓库操作.分享给大家供大家参考,具体如下: 鉴于国内pull镜像的速度较慢,很有必要搭建docker私有或者本地镜像仓库. 安装docker # yum -y install docker # systemctl start docker && systemctl enable docker 使用自签名进行安全认证 创建存放证书和密钥的certs目录 # mkdir -p /docker/certs # chcon -Rt s

  • docker使用registry搭建本地镜像仓库实例详解

    目录 一.系统环境 二.前言 三.使用registry搭建私有镜像仓库 3.1 环境介绍 3.2 k8smaster节点配置镜像仓库 3.3 k8sworker1节点配置从私有仓库上传和拉取镜像 3.3.1 上传镜像到私有仓库 3.3.2 从私有仓库里拉取镜像 四.附录:删除私有仓库镜像的Python脚本 一.系统环境 服务器版本 docker软件版本 CPU架构 CentOS Linux release 7.4.1708 (Core) Docker version 20.10.12 x86_6

  • Docker 使用国内镜像仓库的方法

    1.问题描述 由于某些原因,导致Docker镜像在国内下载速度特别慢.所以为了沉浸式开发.最好切换为国内源.这里以163 的镜像仓库举例.首先修改/etc/docker/daemon.json配置文件. sudo vi /etc/docker/daemon.json 将该文件内容替换为阿里源.修改后的/etc/docker/daemon.json文件为: { "registry-mirrors": ["http://hub-mirror.c.163.com"] }

  • Docker之容器导出为镜像问题

    目录 Docker容器导出为镜像 Docker镜像备份与迁移 记录Docker容器转镜像 1.默认镜像中安装wget 2.导出容器再导入镜像 3.执行新的镜像 总结 Docker容器导出为镜像 Docker镜像备份与迁移 1. 容器保存为镜像 2. 镜像备份 3. 镜像恢复与迁移 1. 容器保存为镜像 我们可以通过以下命令将容器保存为镜像 docker commit pinyougou_nginx mynginx pinyougou_nginx是容器名称 mynginx是新的镜像名称 pinyo

  • docker容器的原理分析

    01 容器的本质是什么? 今天的重点问题是讲述清楚什么是容器. 要理解容器的概念,首先我们需要知道什么是进程?当我们在Linux操作系统执行一个程序,这个程序可能是一个二进制文件,它被调用的时候,变成了计算机内存中的数据.寄存器中的值.堆栈中的指令.以及各种设备状态信息的一个集合.像这样的一个计算机执行环境的综合,我们称之为进程. 容器,就是为这个进程提供一个"边界",理解成白话,就是把这个进程"包"起来,它本质上是通过约束和修改进程的一些动态表现实现的这个&quo

随机推荐