Docker Registry

镜像仓库 (Docker Registry) 负责存储、管理和分发镜像,并且提供了登录认证能力,建立了仓库的索引。
镜像仓库管理多个 Repository, Repository 通过命名来区分。每个 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 中下载该镜像并保存到本地;

常用的镜像仓库

DockerHub
Docker Hub 是 Docker 提供的托管存储库服务,用于查找容器映像并与您的团队共享。
具有以下功能:
(1)个人可以注册私有仓库,能够发布自己的镜像
(2)提供镜像检索能力
(3)提供海量官方和认证组织的镜像
(4)从 GitHub 和 Bitbucket 自动构建容器镜像并将它们推送到 Docker Hub
(5)支持 webhook(webhook 是一种基于 HTTP 的回调函数,发生指定的事件时,服务器会自动将相关的有效负载发送到客户端的 webhook URL。 )

docker 镜像仓库实战

常用命令

镜像仓库命令

docker login [OPTIONS] [SERVER]    //登陆到一个 Docker 镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub

docker pull [OPTIONS] NAME[:TAG|@DIGEST]     //从镜像仓库中拉取或者更新指定镜像

docker push [OPTIONS] NAME[:TAG]      //将本地的镜像上传到镜像仓库,要先登陆到镜像仓库

docker search [OPTIONS] TERM  //从 Docker Hub 查找镜像

docker logout [SERVER]  //登出一个 Docker 镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub

镜像命令

docker images [OPTIONS] [REPOSITORY[:TAG]]   //列出本地镜像。

docker image inspect [OPTIONS] IMAGE [IMAGE...]   //查看镜像详细信息

docker tag  SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]  //标记本地镜像,将其归入某一仓库

容器命令

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]   //创建一个新的容器并运行一个命令

关键参数
○ -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 退出的时候自动删除容器

docker ps [OPTIONS]   //列出容器

关键参数
○ -a :显示所有的容器,包括未运行的。
○ -f :根据条件过滤显示的内容。
○ --format :指定返回值的模板文件。如 json 或者 table
○ -l :显示 latest 的容器。
○ -n :列出最近创建的 n 个容器。
○ --no-trunc :不截断输出。
○ -q :静默模式,只显示容器编号。
○ -s :显示总的文件大小。

1. 搭建一个 nginx 服务

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

Web 服务器
Web 服务器,一般是指“网站服务器”,是指驻留于互联网上某种类型计算机的程序。

Web 服务器可以向 Web 浏览器等客户端提供文档,也可以放置网站文件,让全世界浏览,更可以放置数据文件,让全世界下载。Web 服务器,也称为“WWW 服务器”( 英文全写:World Wide Web,翻译成中文:万维网或环球信息网 ),主要功能是“提供网上信息浏览服务”。 WWW 是 Internet(互联网)的多媒体信息查询工具,是 Internet(互联网)上发展起来的服务,也是发展最快和目前使用最广泛的服务。正是因为有了 WWW 工具,才使得近十几年来互联网迅速繁荣发展,用户数量飞速飙升。据最新数据显示,目前全球人口数量达到 76.76 亿人,其中全球“网民”(互联网用户)达到惊人的 43.88 亿。
例如百度就是一个 web 服务器,提供搜索服务.

安装nginx
(centos环境)

#centos 配置 nginx 源#
rpm -Uvhhttp://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

安装服务
yum install -y nginx
  1. 查看 nginx 是否启动
 ps -ef |grep nginx
  1. 如果没有启动,手动启动 nginx
systemctl start nginx
或者
nginx
  1. 访问 nginx 首页
    nginx 的监听端口为80
    在浏览器上栏 输入 服务器公网地址:80

【Docker Registry】docker 镜像仓库实战-LMLPHP

  1. nginx 调整配置
    centos 7.9 默认的首页的信息位置就是/usr/share/nginx/html,大家针对自己的系统可以检查后看是否需要调整配置。
    查看配置
vi /etc/nginx/conf.d/default.conf 
  1. 首页内容
 cat /usr/share/nginx/html/index.html

是一个HTML页面。

<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
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时首页页面展示的内容。

  1. 停止 nginx,kill master 进程来杀死进程
 ps -ef |grep nginx

【Docker Registry】docker 镜像仓库实战-LMLPHP

kill 3983

拉取 Nginx 镜像,启动 Nginx 站点

  1. 拉取 nginx 镜像
 docker pull nginx:1.24.0
  1. 查看本地是否有该镜像
docker images
  1. 运行镜像
docker run --name nginx1 --rm -it -p 80:80 nginx:1.24.0 bash
  1. 查看我们现在是在容器的 shell 里面,执行 cat /etc/release查看操作系统不是Centos
cat /etc/*release*
  1. 启动 nginx
nginx
  1. shell 不退出打开另外一个 shell 窗口执行 curl 命令,可以看到 nginx 的欢迎信息返回
[@hcss-ecs-40e ~]$ curl 127.0.0.1
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
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>

Docker hub 上创建自己私有仓库

Busybox
BusyBox 是一个集成了三百多个最常用 Linux 命令和工具的软件。BusyBox 包含了一些简单的工具,例如 ls、cat 和 echo 等等,还包含了一些更大、更复杂的工具,例grep、find、mount 以及 telnet。有些人将 BusyBox 称为 Linux 工具里的瑞士军刀。简单的说 BusyBox 就好像是个大工具箱,它集成压缩了 Linux 的许多工具和命令,也包含了 Linux 系统的自带的 shell。busybox 是一个集成了一百多个最常用 linux 命令和工具的软件,他甚至还集成了一个 http 服务器和一个 telnet 服务器,而所有这一切功能却只有区区 1M 左右的大小.因海外带宽较小,我们拉取该镜像推送到自己的仓库。

安装

 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

• 执行命令

busybox ls
busybox ifconfig
busybox ifconfig |busybox grep lo

往hub.docker上推送我们的busybox镜像。

创建账号

进入 https://hub.docker.com/ ,创建账号。

创建仓库
登录后点击仓库,我们创建一个个人仓库
【Docker Registry】docker 镜像仓库实战-LMLPHP
【Docker Registry】docker 镜像仓库实战-LMLPHP
【Docker Registry】docker 镜像仓库实战-LMLPHP

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

 docker pull busybox

• 给镜像打标签

docker tag busybox:latest (查看创建的仓库,按照显示的名称需求对镜像打标签)

再次查看镜像

docker images

登录仓库

docker login -u (用户名)

输入密码后。显示Login Succeeded。

推送

docker push (对镜像打的标签)

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

02-02 22:37