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,仅供内部使用
镜像仓库工作机制
-  
镜像仓库使用流程
• 通过 docker login 登录仓库
• Docker pull 拉取需要的镜像
通过 dockerfile 或者 commit 等方式制作完镜像通过 docker push 上传到仓库 -  
实际研发中镜像仓库如何使用
Docker Registry 中的镜像通常由开发人员制作,而后推送至“公共”或“私有”Registry 上保存,供其他人员使用,例如“部署”到生产环境; -  
镜像仓库的拉取机制
启动容器时,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
 
- 查看 nginx 是否启动
 
 ps -ef |grep nginx
 
- 如果没有启动,手动启动 nginx
 
systemctl start nginx
或者
nginx
 
- 访问 nginx 首页
nginx 的监听端口为80
在浏览器上栏 输入服务器公网地址:80 

- nginx 调整配置
centos 7.9 默认的首页的信息位置就是/usr/share/nginx/html,大家针对自己的系统可以检查后看是否需要调整配置。
查看配置 
vi /etc/nginx/conf.d/default.conf 
 
- 首页内容
 
 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时首页页面展示的内容。
- 停止 nginx,kill master 进程来杀死进程
 
 ps -ef |grep nginx
 

kill 3983
 
拉取 Nginx 镜像,启动 Nginx 站点
- 拉取 nginx 镜像
 
 docker pull nginx:1.24.0
 
- 查看本地是否有该镜像
 
docker images
 
- 运行镜像
 
docker run --name nginx1 --rm -it -p 80:80 nginx:1.24.0 bash
 
- 查看我们现在是在容器的 shell 里面,执行 cat /etc/release查看操作系统不是Centos
 
cat /etc/*release*
 
- 启动 nginx
 
nginx
 
- 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/ ,创建账号。
创建仓库
 登录后点击仓库,我们创建一个个人仓库
 
 
 
推送镜像到仓库
 • 拉取 busybox 镜像
 docker pull busybox
 
• 给镜像打标签
docker tag busybox:latest (查看创建的仓库,按照显示的名称需求对镜像打标签)
 
再次查看镜像
docker images
 
登录仓库
docker login -u (用户名)
 
输入密码后。显示Login Succeeded。
推送
docker push (对镜像打的标签)
 
•最后在我们的 docker hub 仓库里面查看



















