Docker学习笔记—day006(镜像的发布-阿里云、私有)

一、将本地镜像推送到服务器(阿里云)

https://cr.console.aliyun.com/

1.1、创建个人实例

在这里插入图片描述

1.2、创建命名空间

在这里插入图片描述

1.3、创建镜像仓库

在这里插入图片描述
在这里插入图片描述
进入仓库镜像–>镜像仓库(管理)–>获取脚本
在这里插入图片描述

1.4、将本地myubuntu_addvim镜像推送至阿里云镜像仓库

# 1、登录阿里云
docker login --username=aliyun6383xxxx37 crpi-qmhc69ivyae99s.cnxxx-chengdu.personal.cr.aliyuncs.com

登录成功
在这里插入图片描述

# 2、为本地已有的 Docker 镜像创建一个新的标签(别名)
docker tag [ImageId] crpi-qmhc69xxxxyae99s.cn-chengdu.personal.cr.aliyuncs.com/radan0814/myubuntu_addvim:[镜像版本号]

别名创建成功
在这里插入图片描述

# 3、将本地镜像推送的阿里云镜像仓库中
docker push crpi-qmhc695xxxae99s.cn-chengdu.personal.cr.aliyuncs.com/radan0814/myubuntu_addvim:[镜像版本号]

推送成功
在这里插入图片描述

二、将阿里云镜像仓库里面的镜像进行拉取

2.1、使用远程镜像恢复myubuntu_addvim镜像

使用远程镜像仓库进行拉取该镜像到本地

# 使用远程镜像仓库,将远程镜像拉取到本地
docker pull crpi-qmhc6xxxvyae99s.cn-chengdu.personal.cr.aliyuncs.com/radan0814/myubuntu_addvim:[镜像版本号]
 docker run -it 431f8e2ef5d4 /bin/bash

在这里插入图片描述
在这里插入图片描述

三、将本地镜像发布到私有仓库

Docker Hub类似于 Github
Docker Hub、阿里云这样的公共镜像仓库可能不太方便,涉及机密的公司不可能提供镜像给公网,所以需要创建一个本地私人仓库供团队使用,基于公司内部项目构建镜像
Docker Registry 是官方提供的工具,可以用于构建私有仓库

3.1、 什么是Docker Registry

3.2、Docker Registry操作指南

3.2.1、下载镜像Docker Registry
docker pull registry   # 拉取docker Registry镜像

在这里插入图片描述

3.2.2、运行私有库Registry,相当于本地私有Docker Hub
# docker run命令用于启动一个 Docker Registry 私有仓库容器
# -d 后台运行模式   
# -p 5000:5000  端口映射:将宿主主机的5000端口映射到容器内部的5000端口。(这样就可以通过宿主主机IP的5000端口访问Registry服务)
# -v 数据卷挂载   将宿主机的/usr*/local/data 目录挂载到容器内的/tmp/registry目录。
# Registry仓库中存储的镜像数据会持久化在宿主机上,防止因容器删除而丢失
# --privileged=true  授予容器特权模式(容器和宿主机几乎有相同的权限)
# registry 代表所要运行的镜像名称
docker run -d -p 5000:5000 -v /usr/docker/data:/tmp/registry --privileged=true registry

在这里插入图片描述

3.2.3、案例(创建一个新镜像,ubuntu上安装ipconfig命令)
docker run -it ubuntu /bin/bash  # 跑一个ubuntu实例容器,同时进入容器
ifconfig # 发现是没有该命令的 
apt-get update # 获取软件源中所有软件包的最新版本、依赖关系等信息,更新本地数据库
apt-get install net-tools  # 安装ifonfig命令
ifconfig  

新的ubuntu实例容器中是没有
在这里插入图片描述
获取ubuntu实例容器的ID
在这里插入图片描述
使用commit具有ifconfig命令的ubuntu新镜像

docker commit -m="add ifconfig cmd" -a="radan" 32da038ebdb6 myubuntu_addifconfig:1.0

在这里插入图片描述

3.2.4、curl 验证私有服务库上有什么镜像
curl -XGET http://192.168.17.131:5000/v2/_catalog

在这里插入图片描述

3.2.5、将新镜像myubuntu_addipconfig:1.0修改为符合私服规范的TAG

规范公式:docker tag 镜像:Tag HostIp:Port/Repository:Tag
Host:Ip 是自己host主机IP地址,填写宿主机的IP

# 将myubuntu_addifconfig:1.0的镜像改名为192.168.17.131:5000/myubuntu_addifconfig:1.0  (相当于克隆了一份)
docker tag myubuntu_addifconfig:1.0 192.168.17.131:5000/myubuntu_addifconfig:1.0  

在这里插入图片描述

3.2.6、修改配置文件使之支持http

由于Docker的私服库做了安全加密,所以不支持https(需要单独配置,取消限制)

使用vi命令 修改 /etc/docker/daemon.json文件,加入以下字符:

{
    "registry-mirrors": [
        "https://docker.m.daocloud.io",
        "https://docker.imgdb.de",
        "https://docker-0.unsee.tech",
        "https://docker.hlmirror.com"
    ],
   "insecure-registries":["192.168.17.131:5000"]   # 指定允许使用 HTTP 协议(而非 HTTPS)连接的镜像仓库地址
}

注:docker默认不允许https方式推送镜像,通过配置选项来取消这个限制(修改后如果不起作用,需要重启docker)

重启docker和私服库

systemctl restart docker # 重启docker
# 重启docker私服库
docker run -d -p 5000:5000 -v /usr/docker/data:/tmp/registry --privileged=true registry
docker ps

在这里插入图片描述

3.2.7、push推送到私服库并验证私服库当中的镜像
# 往私服库当中上传镜像
docker push 192.168.17.131:5000/myubuntu_addifconfig:1.0
# 验证本地的docker registry 仓库中是否有刚刚上传的镜像
curl -XGET http://192.168.17.131:5000/v2/_catalog

在这里插入图片描述

3.2.8、将私服库的镜像pull到本地进行下载

在这里插入图片描述
在这里插入图片描述

更多推荐