第七节: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. 私有仓库的配置
(1). 前提
A. 先配置一个仓库密码,此密码不是案例云的登录密码。(还要注意所在的地区)
B. 创建命名空间,后续上传的镜像可以位于不同的命名空间下。
如:ypfstore为私有仓库,ypfstore2为公有仓库。
2. 上传
(1). 登录
sudo docker login --username=xxxxxx registry.cn-shenzhen.aliyuncs.com
上述指令来源于:
如图:
同一个镜像可以上传多个不同版本:
(2) 把本机的redis:5.0镜像上传到阿里云ypfstore命名空间下
A. 先做tag标记
sudo docker tag redis:5.0 registry.cn-shenzhen.aliyuncs.com/ypfstore/redis:5.0
B. push上传
sudo docker push registry.cn-shenzhen.aliyuncs.com/ypfstore/redis:5.0
如下图:
去阿里云平台查看上传的镜像,并且详情中有完善的该镜像操作指令,比如下载、修改等等。
3. 下载
(1). 登录(同上)
sudo docker login --username=xxxxxx registry.cn-shenzhen.aliyuncs.com
(2). 执行下载指令
sudo docker pull registry.cn-shenzhen.aliyuncs.com/ypfstore/redis:5.0
如下图:
3. 公共仓库的使用
要求:上述ypfstore2命名空间对应的就是公共仓库,现在我要把本机nginx:latest上传到阿里云的ypfstore2公共仓库(要求阿里云中显示为1.0版本),不需要登录,直接先标记,后上传即可。
(1). 上传
#标记 sudo docker tag nginx:latest registry.cn-shenzhen.aliyuncs.com/ypfstore2/nginx:1.0 #上传 sudo docker push registry.cn-shenzhen.aliyuncs.com/ypfstore2/nginx:1.0
如下图:
去阿里云中查看:
(2). 下载
无需登录,直接执行下载指令
sudo docker pull registry.cn-shenzhen.aliyuncs.com/ypfstore2/nginx:1.0
如下图:
!
- 作 者 : Yaopengfei(姚鹏飞)
- 博客地址 : http://www.cnblogs.com/yaopengfei/
- 声 明1 : 如有错误,欢迎讨论,请勿谩骂^_^。
- 声 明2 : 原创博客请在转载时保留原文链接或在文章开头加上本人博客地址,否则保留追究法律责任的权利。