目录
[什么是Docker Registry](#什么是Docker Registry)
[1. 镜像仓库使用流程](#1. 镜像仓库使用流程)
[2. 实际研发中镜像仓库如何使用](#2. 实际研发中镜像仓库如何使用)
[3. 镜像仓库的拉取机制](#3. 镜像仓库的拉取机制)
[1. DockerHub](#1. DockerHub)
[• Docker Hub是什么](#• Docker Hub是什么)
[• Docker Hub功能浏览](#• Docker Hub功能浏览)
[2. 国内镜像源](#2. 国内镜像源)
[3. 私有仓库](#3. 私有仓库)
[1. 命令清单](#1. 命令清单)
[2. docker login](#2. docker login)
[3. docker pull](#3. docker pull)
[4. docker push](#4. docker push)
[5. docker search](#5. docker search)
[6. docker logout](#6. docker logout)
[1. docker images](#1. docker images)
[2. docker image inspect](#2. docker image inspect)
[3. docker tag](#3. docker tag)
[1. docker run](#1. docker run)
[docker run 参数-d](#docker run 参数-d)
[docker run 参数-i、-t](#docker run 参数-i、-t)
[docker run 参数-p、-P](#docker run 参数-p、-P)
[docker run 参数--name -h](#docker run 参数--name -h)
[docker run 参数--cpuset-cpus-m](#docker run 参数--cpuset-cpus-m)
[docker run 参数--link](#docker run 参数--link)
[docker run 参数--rm](#docker run 参数--rm)
[2. docker ps](#2. docker ps)
[• Web服务器](#• Web服务器)
[综合实战二:Docker hub上创建自己私有仓库](#综合实战二:Docker hub上创建自己私有仓库)
什么是Docker Registry
镜像仓库(Docker Registry) 负责存储、管理和分发镜像,并且提供了登录认证能力,建立了仓库的索引。
镜像仓库管理多个Repository, Repository 通过命名来区分。每个Repository 包含一个或多个镜像,镜像通过镜像名称和标签(Tag)来区分。
镜像仓库架构图如下:

•镜像仓库(Registry):要从哪一个镜像仓库拉取镜像,通常通过DNS或IP地址来确定一个镜像仓库如hub.docker.com;一个Registry中可以存在多个Repository·Repository可分为"顶层仓库"和"用户仓库";·用户仓库名称格式为"用户名/仓库名"·每个仓库可以包含多个Tag(标签),每个标签对应一个镜像
•Repository : ·由某特定的docker镜像的所有迭代版本组成的镜像仓库
这一个一个的就是所谓的 Repository
•镜像名称(name)+标签(tag):如nginx:latest

•认证能力:提供用户注册,登录、登出能力
注册即认证能力
•索引:提供镜像的索引信息,方便检索
一个容器镜像包含了两个部分,一个是元数据 ,其实就是由dockerfile构建出来的描述文件 ,这个描述文件会说这个容器镜像有多少层,每一层里面有什么内容,它的checksum这些信息都会记录下来,而实际镜像的数据就在存储数据里面,就是在一个一个的blob里面,真正占有空间的就是这些blob。
用于描述镜像各种信息,即元数据
镜像仓库生活案例
大家可以类比超市,一个Repository就是一个货架,白象就是组织者,货架上放的产品打的不同标签就是对应的tag

镜像仓库分类
按是否对外开放划分,也是研发人员常说的
(1)公有仓库:像阿里云、dockerhub等放到公有网络上,不用登录就可以下载镜像,供大家访问使用
(2)私有仓库 :不对外开放,往往位于私有网络,只有公司内部人员可以使用。
按供应商和面向群体划分
(1)sponsor(赞助) registry:第三方的registry,供客户和docker社区版使用
(2)mirror(镜像) registry:第三方的registry,只让客户使用,例如阿里云必须注册才能使用
(3)vendor(供应商) registry:由发布docker镜像的供应商提供的registry,例如像Google和Redhat提供了镜像仓库服务
(4)private registry:通过没有防火墙和额外的安全层的私有实体提供的registry,仅供内部使用
镜像仓库工作机制
1. 镜像仓库使用流程
•通过docker login登录仓库
• Docker pull 拉取需要的镜像
•通过dockerfile或者commit等方式制作完镜像通过docker push上传到仓库
2. 实际研发中镜像仓库如何使用
Docker Registry中的镜像通常由开发人员制作,而后推送至"公共"或"私有"Registry上保存,供其他人员使用,例如"部署"到生产环境;
实际开发我们从公共仓库中拉取需要的镜像加上我们自己的程序,制作不同的镜像,上传到公司的私有仓库,之后各个环境需要时,直接从私有仓库拉取对应的版本。

名词解释
开发环境:开发人员使用的一套环境
测试环境:需求开发完成后,发布到供测试人员进行测试的环境
预发布环境:版本测试完成后,发布到和生产类似的环境,提前模拟生产发布
生产环境:真正面向客户的环境
3. 镜像仓库的拉取机制
启动容器时,docker daemon会试图从本地获取相关的镜像;本地镜像不存在时,其将从Registry中下载该镜像并保存到本地;
常用的镜像仓库
1. DockerHub
• Docker Hub是什么
Docker Hub 是Docker 提供的托管存储库服务,用于查找容器映像并与您的团队共享。
具有以下功能:
(1)个人可以注册私有仓库,能够发布自己的镜像
(2)提供镜像检索能力
(3)提供海量官方和认证组织的镜像
(4)从GitHub 和Bitbucket 自动构建容器镜像并将它们推送到Docker Hub
(5)支持webhook(webhook 是一种基于HTTP 的回调函数,发生指定的事件时,服务器会自动将相关的有效负载发送到客户端的webhook URL。)
• Docker Hub功能浏览
○镜像搜索

○镜像tag查找

○镜像的大小,id,cpu架构查看

○镜像的大小,id,cpu架构查看

2. 国内镜像源
国内从Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。国内很多云服务商都提供了国内镜像加速器服务,例如:
阿里云加速器(点击管理控制台-> 登录账号(淘宝账号) -> 右侧镜像工具-> 镜像加速器-> 复制加速器地址)
网易云加速器地址https://hub-mirror.c.163.com
百度云加速器地址"https://mirror.baidubce.com"
可以在/etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件)
cpp
Shell {
# 注意如果最外层以及你给有了配置,不要直接覆盖,而是将下面的内容添加,然后确保json的格式正确 "registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
添加完成后需要重新加载配置,重启Docker:
cpp
Shell
# 加载配置
sudo systemctl daemon-reload
# 重启docker
sudo systemctl restart docker
#查看docker状态
sudo systemctl status docker
3. 私有仓库
私有镜像仓库则是指部署在公司或组织内部,用于自身应用Docker镜像存储、分发的镜像仓库。在构建公司内部使用的自动化发布系统的过程中,从安全的角度出发,应用的打包镜像一般情况下只会被存储在私有镜像仓库中,CI/CD流程的衔接点也是通过向私有镜像仓库上传镜像和拉取镜像的操作来完成的。
常见的私有仓库工具:
• Harbor:Harbor是VMware公司最近开源的企业级Docker Registry项目, 其目标是帮助用户迅速搭建一个企业级的Docker registry服务。它以Docker公司开源的registry为基础,提供了管理UI, 基于角色的访问控制(Role Based Access Control),AD/LDAP集成、以及审计日志(Audit logging) 等企业用户需求的功能,同时还原生支持中文。Harbor的每个组件都是以Docker容器的形式构建的,使用Docker Compose来对它进行部署。
• Nexus:Nexus 是Sonatype 公司发布的一款仓库(Repository)管理软件,目前常被用来作为Maven私服、Docker私服。
• Docker registry:由docker官方提供的私服,类似于docker hub。用于保存公司内部上传的Docker镜像。
镜像仓库命令
1. 命令清单
命令 | 别名 | 功能 | 备注 |
---|---|---|---|
docker login | 登录仓库 | 必须掌握 | |
docker pull | docker image pull | 拉取镜像 | 必须掌握 |
docker push | docker image push | 推送镜像 | 必须掌握 |
docker search | 查找镜像 | ||
docker logout | 登出仓库 | 必须掌握 |
学习命令方式
1.可以命令 --help 查看说明

2.官网查看对应文档说明

2. docker login
•功能
登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库Docker Hub,登录之前需要现在对应仓库网站注册一个账户,之后docker login 登录输入的用户名和密码就是该账户的注册名和密码
因docker 网站在外网不方便访问,该命令可以用阿里云或者腾讯云的练习,参考后面实战部分。
•语法
Shell
docker login [OPTIONS] [SERVER]
• 关键参数
○-u :登陆的用户名
○-p :登陆的密码
•样例
bash
Shell
docker login -u 用户名 -p 密码


不推荐指定密码登录,不然容易泄漏密码
3. docker pull
•功能 从镜像仓库中拉取或者更新指定镜像
•语法
Shell
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
TAG和DIGEST
•别名
Shell
docker image pull
•关键参数
○-a :拉取所有tagged 镜像
○--disable-content-trust :忽略镜像的校验,默认开启
•样例
bash
Shell
docker pull nginx:1.23.3

以上就是分别通过TAG和DIGEST进行下载演示,实际开发中TAG会用的多一点,TAG就对应版本,方便选择和沟通。
4. docker push
•功能
将本地的镜像上传到镜像仓库,要先登陆到镜像仓库
•语法
Shell
docker push [OPTIONS] NAME[:TAG]
•别名
Shell
docker image push
•
关键参数
○-a :推送所有tagged 镜像
○--disable-content-trust :忽略镜像的校验,默认开启
•
样例



docker push我们不能够像pull,我们直接按照NAME[:TAG]是无法push的,我们需要在镜像网站创建对应仓库,按照提示,给我们要push的镜像打上镜像仓库TAG,然后才可以将镜像push到对应的仓库中。
5. docker search
•功能
从Docker Hub查找镜像,因docker 网站被封,该命令暂时国内无法实操,需要国外网络联系。
•语法
Shell
docker search [OPTIONS] TERM
•关键参数
○--no-trunc :显示完整的镜像描述;
○-f <过滤条件>:列出收藏数不小于指定值的镜像。
•样例
bash
Shell
#从 Docker Hub 查找所有镜像名包含 nginx,并且star数大于 10 的镜像
docker search -f stars=10 nginx


与官网的GUI界面查找相比,docker search查找信息并不全,实际使用还是直接在官网中查找方便。
6. docker logout
•功能
登出一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库Docker Hub,因docker 网站被封,该命令可以用阿里云或者腾讯云的镜像仓库练习,参考后面实战部分。
•语法
Shell
docker logout [SERVER]
•样例
bash
Shell
docker logout

镜像命令[部分]
学习仓库前我们需要提前了解一部分的镜像命令,为后续的实战做准备。
1. docker images
•功能
列出本地镜像。
•语法
Shell
docker images [OPTIONS] [REPOSITORY[:TAG]]
•别名
Shell
docker image ls, docker image list
•关键参数
○-a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
○--digests :显示镜像的摘要信息;
○-f :显示满足条件的镜像;
查看-f支持哪些条件
○--format :指定返回值的模板文件;
查看format支持的格式
○--no-trunc :显示完整的镜像信息;

○-q :只显示镜像ID。

docker命令也可以和shell指令配合使用
•样例
bash
Shell
#列出本地全部镜像
docker images
#列出本地镜像中REPOSITORY为ubuntu的镜像列表。
docker images ubuntu
2. docker image inspect
•功能
查看镜像详细信息
•语法
Shell
docker image inspect [OPTIONS] IMAGE [IMAGE...]
选项主要就是上面的--format选项,可以根据名字TAG或者ID查找
•样例


3. docker tag
•功能
标记本地镜像,将其归入某一仓库,方便之后将本地镜像push对应仓库。
•语法
Shell
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
•别名
Shell
docker image tag
•样例
也可以通过ID打TAG

容器命令[部分]
学习仓库前我们需要提前了解一部分的容器命令,为后续的实战做准备。
1. docker run
•功能
创建一个新的容器并运行一个命令
•语法
Shell
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

docker run可以让我们在宿主机上运行其他系统的镜像。如上图,虽然我们可以运行其他系统,但是由于我们并没有指定参数,这里进行没有收到长时运行的命令,所以很快就停止了,我们可以通过docker ps 查看对应的镜像。
•别名
Shell
docker container run
•关键参数○-d: 后台运行容器,并返回容器ID;
○-i: 以交互模式运行容器,通常与-t 同时使用;
○-P: 随机端口映射,容器内部端口随机映射到主机的端口
○-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
○-t: 为容器重新分配一个伪输入终端,通常与-i 同时使用;
○--name="nginx-lb": 为容器指定一个名称;
○-h "mars": 指定容器的hostname;
○-e username="ritchie": 设置环境变量;
○--cpuset-cpus="0-2" or --cpuset-cpus="0,1,2": 绑定容器到指定CPU运行;
○-m :设置容器使用内存最大值;
○--network="bridge": 指定容器的网络连接类型;
○--link=[]: 添加链接到另一个容器;
○--volume , -v: 绑定一个卷
○--rm :shell退出的时候自动删除容器
•样例
bash
Shell #使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx。
docker run --name mynginx -d nginx:latest
#使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 #/data 映射到容器的 /data。
docker run -p 80:80 -v /data:/data -d nginx:latest
docker run 参数-d


当我们的镜像是前台运行时,外部宿主机ctrl+c或者shell因为网络等原因都会让镜像的系统停止,而使用-d将就可以后台运行,避免这些影响。

docker run 参数-i、-t
-i和-t指令常常组合在一起使用给镜像提供一个可以交互的终端,如上图我们给镜像bash参数运行后,搭配-it就可以正常输入指令操作了。

只使用-i,我们虽然可以输入指令交互,但是没有终端。

而只使用-t,我们可以看到存在终端,但是终端无法与我们输入的指令交互。
docker run 参数-p、-P

镜像的端口是在容器内部的,因为隔离了,所以外部的服务器只能访问到宿主机的端口,无法访问容器内端口调用对应服务,所以我们需要将容器和宿主机的端口进行映射,打通之后,外部服务器才可以根据宿主机的端口访问容器内镜像。

将宿主机端口8081与容器端口80指定映射

-P系统随机指定宿主机端口与容器端口映射。
docker run 参数--name -h

--name="nginx-lb": 为容器指定一个名称,方便我们后续对容器进行各种操作

-h "mars": 指定容器的hostname

-e username="ritchie": 设置环境变量;
docker run 参数--cpuset-cpus-m

--cpuset-cpus="0-2" or --cpuset-cpus="0,1,2": 绑定容器到指定CPU运行;

-m :设置容器使用内存最大值
docker run 参数--link


--link=[]: 添加链接到另一个容器。上图中mycentos2可以ping通mycentos1(mywebsite1只是起的别名),但是反过来mycentos1不会自动link mycentos2.
docker run 参数--rm
--rm :shell退出的时候自动删除容器

2. docker ps
•功能
列出容器
•语法
Shell
docker ps [OPTIONS]

•别名
Shell
docker container ls, docker container list, docker container ps
•关键参数
○-a :显示所有的容器,包括未运行的。

○-f :根据条件过滤显示的内容。

○--format :指定返回值的模板文件。如json或者table

○-l :显示latest的容器。

○-n :列出最近创建的n个容器。

○--no-trunc :不截断输出。

○-q :静默模式,只显示容器编号。

○-s :显示总的文件大小。
•样例
bash
Shell
docker ps -a
docker镜像仓库实战
综合实战一:搭建一个nginx服务
基础知识
Web服务器
Web服务器,一般是指"网站服务器",是指驻留于互联网上某种类型计算机的程序。Web服务器可以向Web浏览器等客户端提供文档,也可以放置网站文件,让全世界浏览,更可以放置数据文件,让全世界下载 。
Web服务器,也称为"WWW服务器"( 英文全写:World Wide Web,翻译成中文:万维网或环球信息网),主要功能是"提供网上信息浏览服务"。WWW 是Internet(互联网)的多媒体信息查询工具,是Internet(互联网)上发展起来的服务,也是发展最快和目前使用最广泛的服务。正是因为有了WWW工具,才使得近十几年来互联网迅速繁荣发展,用户数量飞速飙升。据最新数据显示,目前全球人口数量达到76.76亿人,其中全球"网民"(互联网用户)达到惊人的43.88亿。
例如百度就是一个web服务器,提供搜索服务

Nginx
Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。
可以理解Nginx是web服务器的一种实现。
• Web服务器

Nginx 作为Web服务器可以向各种浏览器等客户端提供浏览服务,比如我们通过手机、电脑、平板可以访问百度来实现对web 服务器的访问。
•正向代理

由于防火墙的原因,我们并不能直接访问谷歌,那么我们可以借助VPN来实现,这就是一个简单的正向代理的例子,客户端的请求经过VPN服务到达服务端,这样服务端/运营商看到的IP就是VPN的IP可以绕过相关管制,也能起到保护客户端IP的作用。这里你能够发现,正向代理"代理"的是客户端,而且客户端是知道目标的,而目标是不知道客户端是通过VPN访问的。
•反向代理

当我们在外网访问百度的时候,其实会进行一个转发,代理到内网去,这就是所谓的反向代理,即反向代理"代理"的是服务器端,而且这一个过程对于客户端而言是透明的。在这个过程中客户端的请求只知道一个服务器的IP,所有的请求会被这个服务器通过反向代理派发给其他不同的服务器请求对应不同的资源,通过这种方式我们也就能进行流量控制、处理忙闲不均问题,对于一些微服务我们也能进行解耦,部署到不同的服务器上。
•安装
bash
# ubuntu 安装nginx
apt install nginx -y
# centos
# centos配置nginx源
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum install -y nginx
•启动nginx作为一个网站
- 查看nginx是否启动
bash
Bash
root@ubuntu1:/data# ps -ef |grep nginx
root 12920 1 0 12:29 ? 00:00:00 nginx: master
process nginx
www-data 12921 12920 0 12:29 ? 00:00:00 nginx: worker
process
www-data 12922 12920 0 12:29 ? 00:00:00 nginx: worker process
root 12951 2672 0 12:30 pts/0 00:00:00 grep --color=auto nginx
root@ubuntu1:/data#
- 如果没有启动,手动启动nginx
bash
#查看版本
nginx -v
#手动启动
nginx
- 访问nginx首页

- nginx调整配置
bash
#ubuntu安装后首页的信息可能被调整了,需要确认下修改,注意centos 7.9默认的位置就
#是/usr/share/nginx/html无需修改,大家针对自己的系统可以检查后看是否需要调整配置
vi /etc/nginx/sites-available/default
erver {
listen 80 default_server;
listen [::]:80 default_server;
# SSL configuration
#
# listen 443 ssl default_server;
# listen [::]:443 ssl default_server;
#
# Note: You should disable gzip for SSL traffic.
# See: https://bugs.debian.org/773332
#
# Read up on ssl_ciphers to ensure a secure configuration.
# See: https://bugs.debian.org/765782
#
# Self signed certs generated by the ssl-cert package
# Don't use them in a production server!
#
# include snippets/snakeoil.conf;
#调整nginx的默认页面
root /usr/share/nginx/html;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html;
server_name _;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
- 首页内容
bash
TypeScript
root@ubuntu1:/data# cat /usr/share/nginx/html/index.html
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and working. Further configuration is required.</p>
<p>For online documentation and support please refer to <a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at <a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
- 停止nginx,kill master进程来杀死进程
bash
Bash root@ubuntu1:/data# ps -ef |grep nginx
root 12920 1 0 12:29 ? 00:00:00 nginx: master
process nginx
www-data 12921 12920 0 12:29 ? 00:00:00 nginx: worker
process
www-data 12922 12920 0 12:29 ? 00:00:00 nginx:
worker process root 13047 2672 0 12:33 pts/0 00:00:00 grep --color=auto nginx root@ubuntu1:/data# kill 12920
nginx镜像获取及查看镜像详情
Docker search可以查找,但是nginx的详细的tag我们看不见


所以一般我们还是从网站上寻找认证无安全漏洞的镜像下载

启动Nginx站点,并修改首页
- 启动nginx镜像,此时我们前台启动,一但ctrl + 或者shell连接断掉,就无法提供服务了


2.前台启动下,修改首页


综合实战二:Docker hub上创建自己私有仓库
基础知识
Busybox
BusyBox 是一个集成了三百多个最常用Linux命令和工具的软件。BusyBox 包含了一些简单的工具,例如ls、cat和echo等等,还包含了一些更大、更复杂的工具,例grep、find、mount以及telnet。有些人将BusyBox 称为Linux 工具里的瑞士军刀。简单的说BusyBox就好像是个大工具箱,它集成压缩了Linux 的许多工具和命令,也包含了Linux 系统的自带的shell。busybox是一个集成了一百多个最常用linux命令和工具的软件,他甚至还集成了一个http服务器和一个telnet服务器,而所有这一切功能却只有区区1M左右的大小.因海外带宽较小,我们拉取该镜像推送到自己的仓库。
•安装
bash
Shell
#Ubuntu 安装
apt install -y busybox
#CentOS 安装
wget https://busybox.net/downloads/binaries/1.28.1-defconfig-multiarch/busybox-x86_64 --no-check-certificate
mv busybox-x86_64 busybox
chmod +x busybox
./busybox
•执行命令
bash
Shell
busybox
ls busybox ifconfig
busybox ifconfig |busybox grep lo
•如果不使用后面可以卸载
bash
Shell
#ubuntu 卸载
apt --purge autoremove busybox
#centos卸载
#清理对应目录就好
创建账号
进入https://hub.docker.com/,点击注册按钮,输入注册信息

创建仓库
登录后点击仓库,我们创建一个个人仓库

如果提示需要进入,进入自己的邮箱完成激活

我们输入仓库信息,可见信息,点击创建完成

推送镜像到仓库
•拉取busybox镜像

•给镜像打标签
bash
Shell
docker tag busybox:latest maxhou/mybusybox:v0.1
此时查看我们多了个镜像

•推送镜像到仓库,报错,因为没有登录

•登录docker hub

•推送镜像成功

•在我们的docker hub仓库里面查看

退出
bash
Shell
docker logout
综合实战三、腾讯云创建自己的私有仓库
创建账号
进入https://cloud.tencent.com/,完成注册,可以使用微信快速注册

登录后进入容器镜像服务

点击立即选购

点击左侧的镜像仓库

创建仓库
点击新建,我们创建个人的私有仓库,配置对应的参数

可以看到我们的仓库已经创建成功了

推送镜像到仓库
点击快捷指令,可以看到登录和推送的指令,我们首先登录

打标签,推送

在腾讯云上查看我们的仓库

登出
bash
Shell
docker logout ccr.ccs.tencentyun.com
综合实战四、阿里云创建自己的私有仓库
创建账号
进入阿里云https://www.aliyun.com/,点击右上角完成注册,可以使用支付宝快速注册

创建仓库
在产品上搜索容器镜像服务

点击管理控制台

点击创建个人实例

创建后,提示设置登录密码

完成登录密码的设置,这个密码就是我们的docker login的密码

点击创建镜像仓库,提示创建命名空间


配置仓库参数

设置仓库为本地仓库,完成创建

推送镜像到仓库
可以看到阿里云也提供了快捷指令

登录

给镜像打标签,推送到仓库

查看服务器镜像

退出
bash
Shell
docker logout registry.cn-hangzhou.aliyuncs.com
实战经验
• Q:我入职了一个公司,开发一个镜像,我怎么选择用哪个作为基础镜像啊?
A:一般大型公司有自己专门的镜像制作组织,他们会选取对应的系统版本作为基础镜像,例如华为某部门选取欧拉来制作基础镜像,腾讯选择自己的TLinux制作基础镜像,不会因为出现CentOS不维护了无法使用的情况,而且这些镜像一般都会经过严格的安全扫描,然后作为基础组件提供给各个部门。一般的公司往往也会同意镜像的基础版本,所以这个选择个人一般不用太多纠结。