一、本地镜像发布到阿里云
1.制作本地镜像
首先我们需要先将已经运行的容器,我们运行一个Ubuntu的镜像,并安装ifconfig工具,再commit
# docker run -it --name="u1" ubuntu bash
# apt-get update
# apt-get install net-tools
再进行commit
2.创建阿里云公有库
登录阿里云,进入容器镜像服务>实例列表,选择命名空间,点击创建命名空间
创建命名空间完成
再点到镜像仓库
选择我们刚才创建的命名空间,点击创建镜像仓库
输入仓库名称和描述,选择公开,点击下一步
选择本地仓库,点击创建镜像仓库
创建完毕后,这里有非常详细的步骤教程,非常人性化!
3.将镜像推送到阿里云公有库
接下来我们根据提示将镜像推送到阿里云仓库
在登录时,他会要求你输入密码,所以要记好你的密码
我们将whr/ubuntu推送到阿里云上
我们将原来的镜像删除,删除后重新在阿里云上拉取测试
在阿里云上拉取我们的镜像
跑一下这个镜像可以进行ifconfig命令
二、本地镜像发布到私有库
1.docker registry
官方Docker Hub地址:https://hub.docker.com/,中国大陆访问太慢了且即将被阿里云取代的趋势,不太主流。 Docker hub、阿里云这样的公共镜像仓库可能不太方便,涉及机密的公司不可能提供镜像给公网,所以需要创建一个本地私人仓库供给团队使用,基于公司内部项目构建镜像。
Docker Registry是官方提供的工具,可以用于构建私有镜像仓库。
2.本地镜像推送私有仓库
①下载镜像Docker Registry
#docker pull registry
②运行私有库
docker run -d -p 5000:5000 -v /whr/myregistry/:/tmp/registry --privileged=true registry
默认情况,仓库被创建在容器的/var/lib/registry目录下,建议自行用容器卷映射,方便于宿主机联调
③commit一个镜像
④查看私库里的镜像
curl -XGET http://本机IP:5000/v2/_catalog
显示为空,因为我们还没有推送镜像
⑤将镜像打包
将镜像打包成符合私有库规范的tag # docker tag 镜像:Tag Host:Port/Repository:Tag
⑥修改配置文件
修改docker的配置文件,使其支持http
# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://xb2s49ki.mirror.aliyuncs.com"],
"insecure-registries": ["192.168.43.184:5000"]
}
docker默认不允许http方式推送镜像,通过配置选项来取消这个限制。修改完配置文件后,重启docker,重启docker后容器就关了,重新启动即可
⑦推送到私有库
# docker push 192.168.43.184:5000/whr/ubuntu:1.0
⑧验证私有库
查看私有库上是否有镜像
# curl -XGET http://192.168.43.184:5000/v2/_catalog
可以看到,私有库上已经有了我们创建的镜像
⑨验证
将原有的镜像删除后再从私有库上下载
已经将镜像删除,我们再进行拉取
完成拉取,跑一下镜像,可以正常运行。