theboyaply

学,就硬学!

  • Home
  • Archives
  • Java
  • Maven
  • Docker
  • Kubernetes
  • JavaScript
  • ES6
  • Vue
  • 踩坑记录
  • noted

  • 搜索
element ui vue wsimport webservice npm mysql redis node nginx nfs ftp es6 开发工具 vscode 前端 javascript springboot 常见问题 tomcat oracle jenkins maven k8s Linux gitlab docker java

Docker 镜像仓库

发表于 2020-03-12 | 分类于 Docker | 0 | 阅读次数 329
  • Docker Hub
  • 私有仓库

Docker Hub

目前 Docker 官方维护了一个公共仓库 Docker Hub,其中已经包括了数量超过 2,650,000 的镜像。大部分需求都可以通过在 Docker Hub 中直接下载镜像来实现。

一般我们 pull 的镜像都是来源于官方镜像仓库,且都是直接免密 pull。如果我们有自己的镜像,也可以推送到官方仓库中,前提是需要在 docker 中登录 Docker Hub 。

注册账号可以去 https://hub.docker.com ,然后可以使用 docker login 和 docker logout 命令在 docker 中进行登入登出。

下载镜像前可以使用 docker search "关键字" 搜索相关的镜像,比如以 centos 为关键字进行搜索:

[root@localhost ~]# docker search centos
NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
centos                             The official build of CentOS.                   5874                [OK]                
ansible/centos7-ansible            Ansible on Centos7                              128                                     [OK]
jdeathe/centos-ssh                 OpenSSH / Supervisor / EPEL/IUS/SCL Repos - …   114                                     [OK]
consol/centos-xfce-vnc             Centos container with "headless" VNC session…   109                                     [OK]

可以看到返回了很多包含关键字的镜像,其中包括镜像名字、描述、收藏数(表示该镜像的受关注程度)、是否官方创建(OFFICIAL)、是否自动构建 (AUTOMATED)。

根据是否是官方提供,可将镜像分为两类。

一种是类似 centos 这样的镜像,被称为基础镜像或根镜像。这些基础镜像由 Docker 公司创建、验证、支持、提供。这样的镜像往往使用单个单词作为名字。

还有一种类型,比如 tianon/centos 镜像,它是由 Docker Hub 的注册用户创建并维护的,往往带有用户名称前缀。可以通过前缀 username/ 来指定使用某个用户提供的镜像,比如 tianon 用户。

另外,在查找的时候通过 --filter=stars=N 参数可以指定仅显示收藏数量为 N 以上的镜像。

我们以 制作镜像示例 文章中制作的镜像为例,推送到 Docker Hub 仓库,然后进行 pull。

# 查看当前镜像
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
demo-server         latest              b845f3d3f17c        8 hours ago         527MB
openjdk             8                   cdf26cc71b50        13 days ago         510MB

# 登录 docker 仓库
[root@localhost ~]# 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: your username
Password: your password
....
....
Login Succeeded

# 打tag,username 替换为自己的,不指定版本默认为 latest
docker tag demo-server:latest username/demo-server

# 推送到镜像仓库
docker push username/demo-server

# 推送成功之后,就可以 pull 我们自己的镜像了
docker pull username/demo-server

私有仓库

除了使用 Docker Hub 公共仓库,官方还提供了一个 registry 镜像,供用户搭建自己的镜像仓库。

# 拉取 registry 镜像
docker pull registry

# 运行镜像
docker run -d \
-p 5000:5000 \
--restart=always \
--name registry \
-v /dockerDir/registry:/var/lib/registry \
registry

默认情况下,仓库会被创建在容器的 /var/lib/registry 目录下,这里我们使用 -v 参数将这个目录挂载到宿主机的 /dockerDir/registry 目录下。

启动容器之后,我们还需要在 /etc/docker/daemon.json 文件(如果没有请创建)中添加仓库地址才能够推送镜像。这是因为 Docker 默认不允许非 HTTPS 方式推送镜像。

在文件中添加 insecure-registries 属性,并将仓库地址添加进去,多个使用逗号分割:

{
  "registry-mirrors": [
    "https://dockerhub.azk8s.cn",
    "https://hub-mirror.c.163.com"
  ],
  "insecure-registries": [
    "192.168.19.115:5000"
  ]
}

然后重启 Docker:

sudo systemctl daemon-reload
sudo systemctl restart docker

接下来就可以将本地的镜像推送到私有仓库中了:

查看本地镜像:

[root@localhost dockerDir]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
demo-server         latest              b845f3d3f17c        10 hours ago        527MB
openjdk             8                   cdf26cc71b50        13 days ago         510MB
registry            latest              708bc6af7e5e        6 weeks ago         25.8MB

为 demo-server 打 tag :

docker tag demo-server 192.168.19.115:5000/demo-server:v1

将 192.168.19.115:5000/demo-server:v1 推送到私有仓库:

[root@localhost dockerDir]# docker push 192.168.19.115:5000/demo-server:v1
The push refers to repository [192.168.19.115:5000/demo-server]
0401bbc59744: Pushed 
c0cf276dd7b7: Pushed 
ac3e2c206c49: Pushed 
3663b7fed4c9: Pushed 
832f129ebea4: Pushed 
6670e930ed33: Pushed 
c7f27a4eb870: Pushed 
e70dfb4c3a48: Pushed 
1c76bd0dc325: Pushed 
v1: digest: sha256:8c1ab5538df917ed4f70d1472f1083957798c513bd569b58475ec97f0de8a457 size: 2213

从仓库下载 192.168.19.115:5000/demo-server:v1 镜像:

docker pull 192.168.19.115:5000/demo-server:v1

查看仓库中所有镜像:

[root@localhost dockerDir]# curl 192.168.19.115:5000/v2/_catalog
{"repositories":["demo-server"]}

查看 demo-server 镜像所有 tag:

[root@localhost dockerDir]# curl 192.168.19.115:5000/v2/demo-server/tags/list
{"name":"demo-server","tags":["v1"]}

-- end --

# docker
Docker 网络设置
Docker 私有镜像仓库高级配置
  • 文章目录
  • 站点概览
theboyaply

theboyaply

好记性不如烂笔头

184 日志
13 分类
27 标签
Github E-mail
Creative Commons
0%
© 2019 — 2023 theboyaply
由 Halo 强力驱动
|
主题 - NexT.Gemini
湘ICP备19009291号

湘公网安备 43312402001034号