文章目录
- 0、镜像的生成方法
- 1、本地镜像发布到阿里云仓库
- 2、本地镜像发布到私有仓库
- [3、本地镜像发布到Docker Hub仓库](#3、本地镜像发布到Docker Hub仓库)
Docker仓库是集中存放镜像的地方,分为公共仓库和私有仓库。
注册服务器是存放仓库的具体服务器,一个注册服务器上可以有多个仓库,而每个仓库下面可以有多个镜像。例如对于仓库地址private-docker.com/ubuntu来说,private-docker.com是注册服务器地址,ubuntu是仓库名。
0、镜像的生成方法
镜像的生成方法共三种,详情见3.Docker常用镜像命令和容器命令详解中创建镜像小结。
- 基于已有容器创建
- 基于本地魔板导入
- 基于Dockerfile创建
本地镜像发布流程:
1、本地镜像发布到阿里云仓库
-
在阿里云开发者平台创建镜像仓库
-
在阿里云开发者平台选择容器镜像服务
-
创建个人实例、创建命名空间、创建镜像仓库
-
进入管理界面获得脚本
-
按照脚本进行登录、添加tag、推送镜像到阿里云
bash#登录 docker login --username=命名空间 registry.cn-hangzhou.aliyuncs.com #将需要推送的镜像增加对应的标签tag docker tag cea1bb40441c registry.cn-hangzhou.aliyuncs.com/命名空间/myubuntu:1.0 #推送镜像 docker push registry.cn-hangzhou.aliyuncs.com/命名空间/myubuntu:1.0
-
查看阿里云镜像层,推送成功
-
将阿里云镜像拉取到本地
bashdocker pull registry.cn-hangzhou.aliyuncs.com/命名空间/myubuntu:1.0
2、本地镜像发布到私有仓库
本地仓库通过拉取registry镜像并运行容器,通过docker服务提供私有仓库。
-
下载镜像Docker Registry
bash[root@localhost .docker]# docker pull registry [root@localhost .docker]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE registry 2 b8604a3fe854 2 years ago 26.2MB 192.168.10.101:5000/ubuntu 0.1 ba6acccedd29 2 years ago 72.8MB ubuntu latest ba6acccedd29 2 years ago 72.8MB registry.cn-hangzhou.aliyuncs.com/***/myubuntu 1.0 ba6acccedd29 2 years ago 72.8MB
-
运行私有库Registry,相当于本地有个私有的DockerHub
bash[root@localhost .docker]# docker run -d -p 5000:5000 -v /opt/data/registry/:/tmp/registry --privileged=true registry [root@localhost .docker]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 576c26ba353b registry:2 "/entrypoint.sh /etc..." 2 days ago Up 45 minutes 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp registry
在本地启动一个私有仓库服务,监听端口为5000。
-
生成一个带ifconfig的ubuntu镜像
bash#进入ubuntu容器,docker容器内执行上述两条命令: apt-get update apt-get install net-tools #执行ifconfig命令成功 #docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名] docker commit -m="ifconfig cmd add" -a="zyn" 容器ID 要创建的目标镜像名:[标签名] #将新镜像修改为符合私服规范的Tag docker tag ubuntu:latest 192.168.10.101:5000/myubuntu:1.2 [root@localhost .docker]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE registry 2 b8604a3fe854 2 years ago 26.2MB 192.168.10.101:5000/ubuntu 0.1 ba6acccedd29 2 years ago 72.8MB ubuntu latest ba6acccedd29 2 years ago 72.8MB registry.cn-hangzhou.aliyuncs.com/***/myubuntu 1.0 ba6acccedd29 2 years ago 72.8MB
-
通过curl验证私服库上的镜像
bash[root@localhost .docker]# curl -XGET http://192.168.10.101:5000/v2/_catalog
-
修改配置文件使之支持http,docker默认不允许http方式推送镜像,通过配置选项来取消这个限制。
bash[root@localhost .docker]# cat /etc/docker/daemon.json { "registry-mirrors": ["https://***.mirror.aliyuncs.com"], "insecure-registries": ["192.168.10.101:5000"] }
-
重启docker
bashsystemctl restart docker
-
push推送至私服仓库
bashdocker push 192.168.10.101:5000/ubuntu:0.1
-
curl验证,pull到本地并运行
[root@localhost .docker]# curl -XGET http://192.168.10.101:5000/v2/_catalog {"repositories":["ubuntu"]} docker pull 192.168.10.101:5000/ubuntu:0.1 docker run -it 镜像ID /bin/bash
3、本地镜像发布到Docker Hub仓库
DockerHub是Docker官方提供的公共镜像仓库,地址为https://hub.docker.com。
-
登录
bashdocker login
输入用户名、密码完成登录。本地用户目录下自动创建
.docker/config.json
文件用于保存用户的认证信息。 -
使用
docker [image] push
命令上传镜像到仓库, 默认上传到Docker Hub 官方仓库(需要登录)。