第六节: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 : 原创博客请在转载时保留原文链接或在文章开头加上本人博客地址,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
2017-09-21 第二节:Java环境变量配置