CHAPTER 4 Docker仓库

news2024/11/24 16:10:59

docker仓库

    • 4.1 Docker Hub公共镜像市场
    • 4.2 第三方镜像市场
      • 4.2.1 daocloud
      • 4.2.2 阿里云
    • 4.3 *搭建本地私有仓库

仓库(Repository)是集中存放镜像的地方,又分公共仓库和私有仓库。

有时候容易把仓库与注册服务器(Registory)混淆。实际上注册服务器是存放仓库的具体服务器,一个注册服务器上可以有多个仓库,而每个仓库下面可以有多个镜像。从这方面来说,仓库可以被认为是一个具体的项目或目录。例如对于仓库地址private-docker.com/ubuntu来说,private-docker.com是注册服务器地址,ubuntu是仓库名。

在本章中,笔者将分别介绍使用DockerHub官方仓库进行登录、下载等基本操作,以及使用国内社区提供的仓库下载镜像;最后还将介绍创建和使用私有仓库的基本操作。

4.1 Docker Hub公共镜像市场

Docker Hub公共镜像市场Docker Hub是Docker官方提供的最大的公共镜像仓库,目前包括了超过100000的镜像,地址为https://hub.docker.com。大部分对镜像的需求,都可以通过在DockerHub中直接下载镜像来实现

  1. 登录
    可以通过命令行执行docker login命令来输入用户名、密码和邮箱来完成注册和登录。注册成功后,本地用户目录下会自动创建.docker/config.json文件,保存用户的认证信息。登录成功的用户可以上传个人制作的镜像到DockerHub。

  2. 基本操作
    用户无须登录即可通过docker search命令来查找官方仓库中的镜像,并利用docker pull命令来将它下载到本地

例如,以centos为关键词进行搜索

[root@dbc-server-554 docker]# docker search centos
NAME                                         DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
centos                                       DEPRECATED; The official build of CentOS.       7461      [OK]
kasmweb/centos-7-desktop                     CentOS 7 desktop for Kasm Workspaces            30
couchbase/centos7-systemd                    centos7-systemd images with additional debug…   6                    [OK]
ansible/centos7-ansible   					 Ansible on Centos7   							 137                  [OK]
...

根据是否为官方提供,可将这些镜像资源分为两类:
一种是类似于centos这样的基础镜像,也称为根镜像。这些镜像是由Docker公司创建、验证、支持、提供,这样的镜像往往使用单个单词作为名字;
另一种类型的镜像,比如ansible/centos7-ansible镜像,是由Docker用户ansible创建并维护的,带有用户名称为前缀,表明是某用户下的某仓库。可以通过用户名称前缀“username/镜像名”来指定使用某个用户提供的镜像。

用户也可以在登录后通过docker push命令来将本地镜像推送到DockerHub

  1. 自动创建
    自动创建(AutomatedBuilds)是DockerHub提供的自动化服务,这一功能可以自动跟随项目代码的变更而重新构建镜像。

例如,用户构建了某应用镜像,如果应用发布新版本,用户需要手动更新镜像。而自动创建则允许用户通过DockerHub指定跟踪一个目标网站(目前支持GitHub或BitBucket)上的项目,一旦项目发生新的提交,则自动执行创建。

要配置自动创建,包括如下的步骤:

1 )创建并登录DockerHub,以及目标网站如Github;
2)在目标网站中允许DockerHub访问服务;
3)在DockerHub中配置一个“自动创建”类型的项目;
4)选取一个目标网站中的项目(需要含Dockerfile)和分支;
5 )指定Dockerfile的位置,并提交创建。

之后,可以在DockerHub的“自动创建”页面中跟踪每次创建的状态

4.2 第三方镜像市场

国内不少云服务商都提供了Docker镜像市场包括daocloud、腾讯云、网易云、阿里云等。

4.2.1 daocloud

daocloud

  1. 查看镜像
    访问https://hub.daocloud.io/,即可看到"迈向 Docker 生态的第一步"的搜索界面,可以进行镜像搜索。以nginx为例:
    nginx搜索界面
    镜像地址
  2. 下载镜像
    下载镜像也是使用docker pull命令,但是要在镜像名称前添加注册服务器的具体地址。格式为daocloud.io/<repository>/<IMAGE>:<tag>。也可以直接使用网页给出的"拉取镜像“命令

例如,要下载Docker官方仓库中的nginx:1.12.0-alpine镜像,可以使用如下命令:

[root@dbc-server-554 docker]# docker pull daocloud.io/library/nginx:1.12.0-alpine
1.12.0-alpine: Pulling from library/nginx
ab14e39f58e6: Pull complete
b719aad0065e: Pull complete
193bc4296e28: Pull complete
30cf39878add: Pull complete
Digest: sha256:6a88bc1398333a1a508824c13cc214119510bf7d5898557640606d5edf5da244
Status: Downloaded newer image for daocloud.io/library/nginx:1.12.0-alpine
daocloud.io/library/nginx:1.12.0-alpine

由于下载的镜像名称太长了,使用不方便,打个tag

[root@dbc-server-554 docker]# docker images
REPOSITORY                  TAG             IMAGE ID       CREATED        SIZE
daocloud.io/library/nginx   1.12.0-alpine   09b2eb12555f   5 years ago    15.5MB
[root@dbc-server-554 docker]# docker tag daocloud.io/library/nginx:1.12.0-alpine nginx:1.12.0-apline
[root@dbc-server-554 docker]# docker images
REPOSITORY                  TAG             IMAGE ID       CREATED        SIZE
daocloud.io/library/nginx   1.12.0-alpine   09b2eb12555f   5 years ago    15.5MB
nginx                       1.12.0-apline   09b2eb12555f   5 years ago    15.5MB

启动容器

[root@dbc-server-554 docker]# docker run -it nginx:1.12.0-apline /bin/sh
/ # cat /etc/nginx/nginx.conf
user  nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
events {
    worker_connections  1024;
}
http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;
    #gzip  on;
    include /etc/nginx/conf.d/*.conf;
}

4.2.2 阿里云

阿里云
首先在网站创建自己的账号,登录阿里云,创建命名空间和镜像仓库

在本地进行登录

[root@dbc-server-554 docker]# docker login --username=*** registry.cn-beijing.aliyuncs.com
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

给镜像打tag

[root@dbc-server-554 docker]# docker tag 09b registry.cn-beijing.aliyuncs.com/docker-yurq/yurq:nginx-0.1
[root@dbc-server-554 docker]# docker images |grep nginx
192.168.5.54:5000/nginx                             test            09b2eb12555f   5 years ago    15.5MB
daocloud.io/library/nginx                           1.12.0-alpine   09b2eb12555f   5 years ago    15.5MB
nginx                                               1.12.0-apline   09b2eb12555f   5 years ago    15.5MB
registry.cn-beijing.aliyuncs.com/docker-yurq/yurq   nginx-0.1       09b2eb12555f   5 years ago    15.5MB

此处需要注意:阿里云上传命令docker tag [ImageId] registry.cn-beijing.aliyuncs.com/<命名空间>/<仓库名称>:[镜像版本号]
其中命名空间和仓库都是必填的,镜像版本号字段中不能有冒号:,否则报错。我们只需要替换[imageId]和[镜像版本号]字段

上传镜像

[root@dbc-server-554 docker]# docker push registry.cn-beijing.aliyuncs.com/docker-yurq/yurq:nginx-0.1
The push refers to repository [registry.cn-beijing.aliyuncs.com/docker-yurq/yurq]
96c62e4b6ca4: Pushed
9854154a6906: Pushed
613b41d784fd: Pushed
040fd7841192: Pushed
nginx-0.1: digest: sha256:6a88bc1398333a1a508824c13cc214119510bf7d5898557640606d5edf5da244 size: 1153

可以使用镜像加速

网站截图
在这里插入图片描述

4.3 *搭建本地私有仓库

  1. 使用registry镜像创建私有仓库
    安装Docker后,可以通过官方提供的registry镜像来简单搭建一套本地私有仓库环境:
	[root@dbc-server-554 docker]# docker run -d -p 5000:5000 registry:2
Unable to find image 'registry:2' locally
2: Pulling from library/registry
ca7dd9ec2225: Pull complete
c41ae7ad2b39: Pull complete
1ed0fc8a6161: Pull complete
21df229223d2: Pull complete
626897ccab21: Pull complete
Digest: sha256:ce14a6258f37702ff3cd92232a6f5b81ace542d9f1631966999e9f7c1ee6ddba
Status: Downloaded newer image for registry:2
a26f308cf6228b1ee23f264d7f92ae8a750f1cd71a806df4c81a6788312bdcb1

这将自动下载井启动一个registry容器,创建本地的私有仓库服务。
默认情况下,仓库会被创建在容器的/var/lib/registry目录下。可以通过-v参数来将镜像文件存放在本地的指定路径。例如下面的例子将上传的镜像放到/opt/data/registry目录:

[root@dbc-server-554 docker]# docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry:2
89a7b82302637e9c67c5105b1894d69c4c6bf803b58bbd437f0d56a456887c26

此时,在本地将启动一个私有仓库服务,监听端口为5000。

  1. 管理私有仓库
    首先在本地搭建私有仓库,查看其地址为192.168.5.54:5000,然后在虚拟机系统(Centos7)里测试上传和下载镜像。
    查看本地已有镜像:
[root@dbc-server-554 docker]# docker images
REPOSITORY                  TAG             IMAGE ID       CREATED        SIZE
registry                    2               81c944c2288b   2 months ago   24.1MB
nginx                       1.12.0-apline   09b2eb12555f   5 years ago    15.5MB
daocloud.io/library/nginx   1.12.0-alpine   09b2eb12555f   5 years ago    15.5MB

使用docker tag命令将nginx这个镜像标记为192.168.5.54:5000/nginx:test

[root@dbc-server-554 docker]# docker tag nginx:1.12.0-apline 192.168.5.54:5000/nginx:test
[root@dbc-server-554 docker]# docker images |grep nginx
daocloud.io/library/nginx   1.12.0-alpine   09b2eb12555f   5 years ago    15.5MB
nginx                       1.12.0-apline   09b2eb12555f   5 years ago    15.5MB
192.168.5.54:5000/nginx     test            09b2eb12555f   5 years ago    15.5MB

由于需要连接 docker registry,且不能用 ssl 连接,需要增加 insecure-registries 配置。

[root@dbc-server-554 system]# cat /etc/docker/daemon.json
{
"insecure-registries":["192.168.5.54:5000"]
}

使用docker push上传标记的镜像:

[root@dbc-server-554 system]# docker push 192.168.5.54:5000/nginx:test
The push refers to repository [192.168.5.54:5000/nginx]
96c62e4b6ca4: Pushed
9854154a6906: Pushed
613b41d784fd: Pushed
040fd7841192: Pushed
test: digest: sha256:6a88bc1398333a1a508824c13cc214119510bf7d5898557640606d5edf5da244 size: 1153
[root@dbc-server-554 system]# curl http://192.168.5.54:5000/v2/_catalog
{"repositories":["nginx"]}
[root@dbc-server-554 system]# ll /opt/data/registry/docker/registry/v2/repositories/
total 0
drwxr-xr-x 5 root root 55 Jan 12 11:09 nginx

现在可以到任意一台能访问到192.168.5.54地址的机器去下载这个镜像了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/158063.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

逆向-还原代码之continue (Interl 64)

// source code #include <stdio.h> int main() { int i; for (i 0; i < 10; i) { if (i 5) continue; printf("%d\n", i); } }

那年我双手离桌,被《剑指offer》打的还不了手(第八天)

跟着博主一起刷题 这里使用的是题库&#xff1a; https://leetcode.cn/problem-list/xb9nqhhg/?page1 目录剑指 Offer 55 - II. 平衡二叉树剑指 Offer 56 - I. 数组中数字出现的次数剑指 Offer 56 - II. 数组中数字出现的次数 II剑指 Offer 55 - II. 平衡二叉树 剑指 Offer 55…

缓存一致性问题解决方案(超全超易懂)

文章目录1、缓存模型和思路2、缓存更新策略3、两种解决方案3.1、先删除缓存&#xff0c;再更新数据库3.1.1延时双删&#xff08;解决先删除缓存&#xff0c;再更新数据库产生的缓存不一致问题&#xff09;1、什么是延时双删2、为什么要进行延迟双删&#xff1f;3、如何实现延迟…

【 uniapp - 黑马优购 | 购物车页面(2)】如何实现收货地址区域功能、常见问题解决方案

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大二在校生&#xff0c;讨厌编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;小新爱学习. &#x1f43c;个人WeChat&#xff1a;见文末 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc;…

JVM—类加载与字节码技术

目录一、类文件结构1、魔术2、版本3、常量池二、字节码指令1、javap工具2、图解方法执行流程3、通过字节码指令来分析问题4、构造方法5、方法调用6、多态原理——HSDB7、异常处理四、类加载阶段五、类加载器六、运行期优化一、类文件结构 以一个简单的HelloWord.java程序为例 …

聊聊VMware的三种网络模式

聊聊VMware的三种网络模式1.Bridged&#xff08;桥接模式&#xff09;2.NAT&#xff08;地址转换模式&#xff09;3.Host-Only&#xff08;仅主机模式&#xff09;VMware有三种虚拟网络工作方式&#xff0c;即&#xff1a; Briged&#xff08;桥接模式&#xff09;NAT&#xf…

实现内核线程

文章目录前言前置知识实验操作实验一实验二实验三前言 博客记录《操作系统真象还原》第九章实验的操作~ 实验环境&#xff1a;ubuntu18.04VMware &#xff0c; Bochs下载安装 实验内容&#xff1a; 在内核空间实现线程。实现双向链表。实现多线程在调度器的调度下轮流执行。…

【Nginx】Nginx配置实例-反向代理

1. 反向代理实例一 实现过程 1. 启动一个 tomcat&#xff0c;浏览器地址栏输入 127.0.0.1:8080&#xff0c;出现如下界面2. 通过修改本地 host 文件&#xff0c;将 www.123.com 映射到 127.0.0.13. 在 nginx.conf 配置文件中增加如下配置 2. 反向代理实例二 实现过程 1.准备两…

唤醒手腕 Go 语言学习笔记常见包 函数用法(更新中)

1. fmt 包 fmt 包的介绍&#xff1a;fmt format&#xff0c;是一种格式化输出函数汇总包&#xff0c;用于格式化输出。 Println、Print、Printf fmt.Print 原样输出 Print formats using the default formats for its operands and writes to standard output. start : ti…

Unity中的异步编程【5】——在Unity中使用 C#原生的异步(Task,await,async) - System.Threading.Tasks

一、UniTask&#xff08;Cysharp.Threading.Tasks&#xff09;和Task&#xff08;System.Threading.Tasks&#xff09;的区别 1、System.Threading.Tasks中的Task是.Net原生的异步和多线程包。2、UniTask(Cysharp.Threading.Tasks)是仿照.Net原生的Task&#xff0c;await&…

【C++】继承

​&#x1f320; 作者&#xff1a;阿亮joy. &#x1f386;专栏&#xff1a;《吃透西嘎嘎》 &#x1f387; 座右铭&#xff1a;每个优秀的人都有一段沉默的时光&#xff0c;那段时光是付出了很多努力却得不到结果的日子&#xff0c;我们把它叫做扎根 目录&#x1f449;继承的概…

通俗易懂的java设计模式(6)-代理模式

1.什么是代理模式 为某个对象提供一个代理对象&#xff0c;通过这个代理对象&#xff0c;可以控制对原对象的访问。 通俗的解释&#xff1a;我们电脑桌面上的一个个快接方式&#xff0c;当我们点击这个快捷方式的时候&#xff0c;我们就间接地访问到了这个程序。 2.静态代理…

附录B:Standard Delay Format(SDF)(下)

文章目录B.4 映射实例(Mapping Examples)传播延迟(Propagation Delay)输入建立时间(Input Setup Time)输入保持时间(Input Hold Time)输入建立和保持时间(Input Setup and Hold Time)输入恢复时间(Input Recovery Time)输入撤销时间(Input Removal Time)周期(Period)脉宽(Pulse…

C#自动化物流仓库WMS系统源码

分享一套C#自动化仓库WMS管理系统源码 MF00426 需要源码学习可私信我获取。 WMS作为现代物流系统中的主要组成部分&#xff0c;是一种多层次存放货物的高架仓库系统&#xff0c;由自动控制与管理系统、货架、巷道式堆垛机、出入库输送机等设 备构成&#xff0c;能按指令自动完…

PHP多进程(二)

上篇文章我们说到父进程应该回收子进程结束之后产生的数据,这样才会不浪费系统资源。 一个程序启动之后&#xff0c;变成了一个进程&#xff0c;进程在以下情况会退出 1&#xff09;运行到最后一行语句 2) 运行时遇到return 时 3) 运行时遇到exit()函数的时候 4) 程序异常的时…

【Dash搭建可视化网站】项目13:销售数据可视化大屏制作步骤详解

销售数据可视化大屏制作步骤详解1 项目效果图2 项目架构3 文件介绍和功能完善3.1 assets文件夹介绍3.2 app.py和index.py文件完善3.3 header.py文件完善3.4 api.py文件和api.ipynb文件完善3.4.1 需求数据获取3.4.2 header.py文件中数据变更3.5 middle.py文件完善3.5.1 中间第一…

24.数组名字取地址变成数组指针,数组名和指针变量的区别

数组名字取地址变成数组指针 1.一维数组名字取地址&#xff0c;变成一维数组指针&#xff0c;加1跳一个一维数组。 int a[10]; a1 跳一个整型元素&#xff0c;是a[1]的地址 a和a1相差一个元素&#xff0c;4个字节 &a 就变成了一个一位数组指针&#xff0c;是int(*p)[10]…

结构体重点知识大盘点

0、结构体基础知识 1、结构体是一些值的集合&#xff0c;这些值被称为成员&#xff0c;它们的类型是可以不同的。&#xff08;与数组相似&#xff0c;但数组元素的类型都是相同的&#xff09;。用来描述由基本数据类型组成的复杂类型。 2、结构体也有全局的和局部的。 3、st…

Hello World with VS 17.4.4 DOT NET MAUI Note

Hello World with VS 17.4.4 DOT NET MAUI Note kagula2023-1-12 Prologue If you touched XAML, well here is a concise guide for you running the first MAUI project. Content System Requirement 【1】Microsoft Windows [Version 10.0.19044.2486] Chinese Language …

Ubuntu Centos Linux End Kernel panic-not syncing:Attempted to kill init!

原问题&#xff1a; 当前系统为 Ubuntu 解决问题步骤&#xff1a; 1、重启电脑&#xff0c;在进入选择版本时&#xff0c;选择 系统高级选项&#xff0c; 我选的是【Ubuntu高级选项】 2、进入一个又很多系统版本的界面&#xff0c;每个版本有三个选项&#xff1a;常规启动版…