第六节:docker与虚拟机对比、私有仓库的搭建、阿里云私有/公有仓库

一. docker容器和虚拟机对比

1. docker容器虚拟化

 (1). 容器就是将软件打包成标准化单元,以用于开发、交付和部署。

 (2). 容器镜像是轻量的、可执行的独立软件包 ,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置。

 (3). 容器化软件在任何环境中都能够始终如一地运行。

 (4). 容器赋予了软件独立性,使其免受外在环境差异的影响,从而有助于减少团队间在相同基础设施上运行不同软件时的冲突。

如图:

2. docker容器和传统虚拟机比较

(1). 相同点

 docker容器和虚拟机具有相同的资源隔离优势和分配优势。

(2). 不同点

 A. 容器虚拟化的是操作系统,虚拟机虚拟化的是硬件

 B. 传统虚拟机可以运行不同的操作系统,容器只能运行同一类型操作系统。

二. 自行搭建私有仓库

1. 什么是私有仓库

 Docker官方的Docker hub(https://hub.docker.com)是一个用于管理公共镜像的仓库,我们可以从上面拉取镜像 到本地,也可以把我们自己的镜像推送上去。但是,有时候我们的服务器无法访问互联网,或者你不希望将自己的镜 像放到公网当中,那么我们就需要搭建自己的私有仓库来存储和管理自己的镜像。

PS:像国内的阿里云、腾讯云等等都既提供公有仓库,也提供私有仓库。

2. 搭建自己的私有仓库  

(1). 下载私有仓库镜像

docker pull registry

(2). 启动私有仓库容器

docker run -id --name=myRegistry -p 5000:5000 registry

PS:私有仓库容器对外开放的端口为5000

(3). 打开浏览器 输入地址http://私有仓库服务器ip:5000/v2/_catalog

  看到   {"repositories":[]}    表示私有仓库 搭建成功

(4). 配置私有仓库的地址

 修改daemon.json ,【vim /etc/docker/daemon.json 】 在上述文件中添加一个key,保存退出。用于让 docker 信任私有仓库地址;

{
    "insecure-registries":["私有仓库服务器ip:5000"]
}

如图:

(5). 重启docker 服务

systemctl restart docker   #重启docker
docker start myRegistry      #启动私有仓库镜像

3. 私有仓库镜像的上传和下载

前提配置:

(1). 宿主机要先配置私有仓库的地址为目标私有仓库,必须是配置https

A. 指令:vi /etc/docker/daemon.json,  其中 https://119.45.174.249:5000 是私有仓库地址

{
  "registry-mirrors": ["https://ijmr3it2.mirror.aliyuncs.com"],
  "insecure-registries": ["https://119.45.174.249:5000"]
}

B. 重启

systemctl daemon-reload 
systemctl restart docker 

(2). 必须要登录,后进行上传和下载

docker login 119.45.174.249:5000

 如图:

1. 上传

# 1、标记镜像为私有仓库的镜像     
docker tag redis:5.0 私有仓库服务器IP:5000/redis:5.0
 
# 2、上传标记的镜像     
docker push 私有仓库服务器IP:5000/redis:5.0

注意:只写ip,不写http://

如图:

2. 下载

#拉取镜像 
docker pull 私有仓库服务器ip:5000/redis:5.0

 如图:

 

 

三. 阿里云私有仓库使用

1. 先保证配置了镜像加速服务

 centos和ubuntu系统直接复制下面代码执行。

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://ijmr3it2.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

配置完成,进行查看,如下图,说明配置成功。

 

2. 设置固定密码

 先配置一个仓库密码,此密码自己设置,用来后续docker login 登录仓库的时候使用。(还要注意所在的地区)

3 创建命名空间

  比如,创建ypf01,后续的容器仓库都是存放在这个空间下。

说明:自动创建仓库 和 默认仓库类型,无任何意义,因为现在不会自动创建了,至于后续创建的仓库类型,创建的时候临时选择即可。

  

4 创建仓库

    这里重点解析一下仓库的含义,比如我要上传redis的各个版本到阿里私有仓库上,那么此时我就需要在ypf01这个空间下,创建一个仓库,可以自行命名为ypfredis,主要这个仓库专门用来存放redis各个版本的,后续如果要我上次nginx镜像,那么就需要在新建一个ypfnginx仓库来对应。

点击仓库,里面有对应的上次和下载指令:

   

5 上传镜像

   目标:我要把本地的redis:5.0版本的镜像,上传到ypfredis仓库,对应的版本也是5.0

A. 登录, 并输入密码

 【docker login --username=xxxx367 registry.cn-beijing.aliyuncs.com

B. 给本地镜像打标签

 docker tag c5da061a611a registry.cn-beijing.aliyuncs.com/ypf01/ypfredis:5.0

   其中  c5da061a611a  是本地redis:5.0 对应的imageId

   如下图:发现多了一个 registry.cn-beijing.aliyuncs.com/ypf01/ypfredis 镜像,但是和redis:5.0 的imageId是相同的

C. 推送要远程仓库

 【docker push registry.cn-beijing.aliyuncs.com/ypf01/ypfredis:5.0

D. 去仓库查看

 

6 下载镜像

   目标:我要把远程仓库 ypfredis:5.0下载到本地

A. 先把本地打标签的仓库删掉

 

B. 登录, 并输入密码

 【docker login --username=xxxx367 registry.cn-beijing.aliyuncs.com

C. 下载

  【docker pull registry.cn-beijing.aliyuncs.com/ypf01/ypfredis:5.0

 

 

 

四. 阿里云公有仓库

 要求:上述ypf01命名空间,新建仓库ypfnginx仓库,设置为公有仓库,现在我要把本机nginx:latest上传到阿里云的ypfnginx公共仓库(要求阿里云中显示为1.0版本),不需要登录,直接先标记,后上传即可。

 

1. 上传

docker tag 605c77e624dd registry.cn-beijing.aliyuncs.com/ypf01/ypfnginx:1.0

docker push registry.cn-beijing.aliyuncs.com/ypf01/ypfnginx:1.0

 如下图:

去阿里云中查看:

 

 

2. 下载

 无需登录,直接执行下载指令

【docker pull registry.cn-beijing.aliyuncs.com/ypf01/ypfnginx:1.0】

 如下图:

 

 

 

 

 

 

 

!

  • 作       者 : Yaopengfei(姚鹏飞)
  • 博客地址 : http://www.cnblogs.com/yaopengfei/
  • 声     明1 : 如有错误,欢迎讨论,请勿谩骂^_^。
  • 声     明2 : 原创博客请在转载时保留原文链接或在文章开头加上本人博客地址,否则保留追究法律责任的权利。
 

 

posted @   Yaopengfei  阅读(706)  评论(3编辑  收藏  举报
相关博文:
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
历史上的今天:
2017-09-21 第二节:Java环境变量配置
点击右上角即可分享
微信分享提示