四、docker 仓库(让我们的镜像有处可存)
前言
前面讲完了docker 镜像和容器,以及通过Dockerfile 定制属于我们自己的镜像,那那现在就是需要将我们自己定制的镜像存放到仓库中供他们使用。这一套流程才算是正式走完了。从获取镜像,操作镜像容器,定制镜像,上传镜像。会了这些,也算是docker 正式入门了。
上传到共有仓库
docker 官网有一个共有的仓库,大家应该都知道,和github 类似。dockehub可以管理你自己的镜像。我们需要创建一个账号用来管理。
我们创建好账号后,就可以在我们本机的电脑上登录到官网了。
docker login 用户名 网址
网址可以不填,默认的就是去登录官网,登录官网之后就可以上传我们自己的镜像了
docker push [OPTIONS] NAME[:TAG]
eg:
docker push quellanan/hello:1.0.0

我这截图是上传过一次,再上传的时候提示已经存在,说明是上传成功的。
我们可以查看一下:
docker search quellanan

私有仓库
docker 官方提供了一个私用仓库的镜像,我们可以直接使用。docker-registry.
下载
我们先下载registry 镜像
docker pull registry

容器运行
docker run -d -p 5000:5000 --restart=always --name registry registry

到现在我们私有仓库已经有了,现在我们如何将自己本地镜像上传私有仓库呢?
上传
首先我们需要使用docker tag 将镜像重命名,前缀需要和私用仓库一致,才能上传成功。
docker tag java:8 127.0.0.1:5000/java:8
docker push 127.0.0.1:5000/java:8

通过下面命令查看是否成功
docker push 127.0.0.1:5000/java:8

上面证明我们已经将镜像上传到我们的私有仓库了。
下载
那现在我们先将本地的镜像删除掉,然后从私服上下载镜像,看是否能够下载下来。
docker image rm 127.0.0.1:5000/java:8
docker pull 127.0.0.1:5000/java:8

证明我们创建的私服是可以用的,但是有没有感觉有点别扭,不能想dockerhub 那样直观的查看我们私有仓库的镜像,没有可视化界面。所以接下来我们用另一个镜像来搭建我们私有仓库。
Nexus3
Nexus 是管理maven 的jar 包工具,Nexus3 支持对镜像的管理。
下载
我们先下载nexus3的镜像
docker pull sonatype/nexus3
启动
下载成功后,我们来启动对应的容器。
docker run -d --name nexus3 --restart=always -p 8081:8081 -p 8082:8082 -p 8083:8083 --mount src=nexus-data,target=/nexus-data sonatype/nexus3
这里说明一下为什么要启动三个端口。8082是私有仓库,不启动的话,好像我们本地根本连不上去,一直报超时。8083为后面代理dockerhub 做准备。

容器启动之后我们在页面上访问
192.168.252.53:8081
可以看到我们的 nexus3的镜像已经启动成了,我们需要登录才能进行配置。网上说的用户名为admin,密码为admin123 我试了发现登录不上去。

然后看提示说密码存放在这个位置,所以我们进入到容器。查看我们的密码。
docker ps
docker exec -it /bin/bash
cat /nexus-data/admin.password

找到密码后,我们在界面登录后,会让我们修改密码。

配置
登录成功后,我们开始配置我们docker的私有仓库。选择Create Repostory

选择docker(hosted)

配置仓库名和端口

这些都配置好了,现在我们怎么使用这个私有仓库呢,我们在/etc/docker/daemon.json 文件中加上私有仓库的地址。
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"https://dockerhub.azk8s.cn"
],
"insecure-registries":["192.168.252.53:8082","192.168.252.53:8083"]
}
registry-mirrors 是配置国内镜像,不需要的可以不配置。insecure-registries 就是设置我们自己的私有仓库地址。
重启
systemctl daemon-reload
systemctl restart docker
测试
现在我们来登录上我们私有仓库(密码我改成了admin123)
docker login -u admin -p admin123 192.168.252.53:8282

一样的我们打标签。
docker tag java:8 192.168.252.53:8082/java:8
上传
docker push 192.168.252.53:8082/java:8

可以看到我们已经将镜像上传的nexus 上了,我们现在在界面上看下。整个的界面就是这样的。

说明我们用 nexus3 搭建的私有仓库是没有问题的。
Nexus3 代理仓库
上面我们只是配置了docker(host),这个相当于我们的私有仓库,但是我们现在使用docker login 我们自己的仓库,如果我们需要的镜像我们仓库没有,就会很麻烦,需要重新登录到共有仓库上下载下来,再上传到我们的私有仓库,那有没有办法可以一步到位呢?
下面我们就来操作一波。
docker(proxy)
上面我们已经配置好了私有仓库的不用动,下面我们来配置代理仓库,

选择docker(proxy),name 自定义。主要的Proxy 这里需要注意一下。
https://registry-1.docker.io

docker(group)
端口设置8083

将代理的和个人仓库加到group中

这样上面就配置好了。
番外
这篇算是马马虎虎的写完了吧,但总感觉不经如意,又不知道怎么修改,就先这样发出来吧,后续调整。
好了,就说这么多啦
后续加油♡
欢迎大家关注个人公众号 "程序员爱酸奶"
分享各种学习资料,包含java,linux,大数据等。资料包含视频文档以及源码,同时分享本人及投递的优质技术博文。
如果大家喜欢记得关注和分享哟❤

四、docker 仓库(让我们的镜像有处可存)的更多相关文章
- Docker仓库(四)
一.什么是仓库 仓库就是集中存放镜像的地方,分为公共仓库和私有仓库,一个容易混淆的概念是注册服务器,实际上注册服务器是存放仓库的具体服务器,一个注册服务器可以有多个仓库,而每个仓库下面有多个镜像 二. ...
- Docker私有仓库 Registry中的镜像管理
这里主要介绍Registry v2的版本 查看Registry仓库中现有的镜像: # curl -XGET http://10.0.30.6:5000/v2/_catalog# curl -XGET ...
- [开源夏令营][四] Docker remote API 之 镜像篇
列出镜像 列出镜像,有两个可选參数,一个是all,一个是filter,all可选值有,0/False/false,1/True/true,默觉得0:filter是一个包括一个过滤对象的json,形式如 ...
- 详解docker实战之搭建私有镜像仓库 - kurbernetes
1.实战目的 搭建企业私有的镜像仓库,满足从开发环境推送和拉取镜像.当我们使用k8s来编排和调度容器时,操作的基本单位是镜像,所以需要从仓库去拉取镜像到当前的工作节点.本来使用公共的docker hu ...
- [转]Ubuntu18.04下使用Docker Registry快速搭建私有镜像仓库
本文转自:https://blog.csdn.net/BigData_Mining/article/details/88233015 1.背景 在 Docker 中,当我们执行 docker pull ...
- 使用docker Registry快速搭建私有镜像仓库
当我们执行docker pull xxx的时候,docker默认是从registry.docker.com这个地址上去查找我们所需要的镜像文件,然后执行下载操作.这类的镜像仓库就是docker默认的公 ...
- [Docker]Docker拉取,上传镜像到Harbor仓库
需求 因为项目的需求,需要制作一个基于tomcat的镜像.那么前提就是,需要有tomcat的基础镜像. 怎么做 我的思路跑偏了,本来以为是需要将tomcat下载下来,然后通过docker命令,让它成为 ...
- Docker学习笔记之从镜像仓库获得镜像
0x00 概述 之前我们说到了,Docker 与其他虚拟化软件的一处不同就是将镜像管理纳入到了功能之中.实现虚拟化只是程序能够无缝移植的一部分,而有了镜像管理,就真正取代了我们在移植过程中的繁琐操作. ...
- 通过docker把本地AspNetCore WebAPI镜像打包到阿里云镜像仓库并在centos部署
在centos上安装docker # step 1: 安装必要的一些系统工具 sudo yum install -y yum-utils device-mapper-persistent-data l ...
随机推荐
- 命名对象继承2-验证Open*命名对象安全属性的传递
接上一篇 这次是验证Open*(本文使用OpenMutex函数)的命名对象在继承中安全属性的传递 SECURITY_ATTRIBUTES sa; //设置句柄安全性 sa.nLength = size ...
- Nginx 配置项优化详解
(1)nginx运行工作进程个数,一般设置cpu的核心或者核心数x2 如果不了解cpu的核数,可以top命令之后按1看出来,也可以查看/proc/cpuinfo文件 grep ^processor / ...
- 【ADO.NET基础】加密方法公共类
各种加密方法集锦: using System; using System.Security.Cryptography; using System.Text; using System.IO; usin ...
- wordpress访问速度慢
可能是google字体的原因 1.找到wordpress目录下wp-includes/script-loader.php这个文件 2.查找open_sans_font_url这个字段,把后面的font ...
- Hbase入门(四)——表结构设计-RowKey
Hbase的表结构设计与关系型数据库有很多不同,主要是Hbase有Rowkey和列族.timestamp这几个全新的概念,如何设计表结构就非常的重要. 创建 Hbase就是通过 表 Rowkey 列族 ...
- 挑战程序设计——迷宫的最短路径(BFS)
题目详情 Description 给定一个大小为 N * M 的迷宫.迷宫由通道和墙壁组成,每一步可以向邻接的上下左右四格的通道移动.请求出从起点到终点所需的最小步数 限制条件: N,M <= ...
- B/S 端 WebGL 3D 游戏机教程
前言 摘要:2D 的俄罗斯方块已经被人玩烂了,突发奇想就做了个 3D 的游戏机,用来玩俄罗斯方块...实现的基本想法是先在 2D 上实现俄罗斯方块小游戏,然后使用 3D 建模功能创建一个 3D 街机模 ...
- 为了给女朋友买件心怡内衣,我用Python爬虫了天猫内衣售卖数据
真爱,请置顶或星标 大家好,希望各位能怀着正直.严谨.专业的心态观看这篇文章.ヾ(๑╹◡╹)ノ" 接下来我们尝试用 Python 抓取天猫内衣销售数据,并分析得到中国女性普遍的罩杯数据.最受 ...
- java的动手动脑10月20日
(1)动手动脑 该函数没有赋初值再就是如果类提供一个自定义的构造方法,将导致系统不在提供默认的构造方法. (2) public class test { /*** @param args*/publi ...
- UVA - 12099 The Bookcase
No wonder the old bookcase caved under the massive piles of books Tom had stacked on it. He had bett ...