Docker 系列四(自定义仓库).
一、Docker hub 交互
Docker hub 是 Docker 官方维护的一个公共仓库,大部分需求都可以通过在 Docker hub 中直接下载镜像来完成。接下来,来看一下怎么与 Docker hub 进行交互,包括登陆登出以及将本地镜像推送到 Docker hub 等...
注册:https://hub.docker.com/ 注册的时候需要翻墙~~
登陆:docker login
登出:docker logout
搜索镜像:
- docker search [name] --filter=stars=30
- --filter=stars=N (参数可以指定仅显示收藏数量为 N 以上的镜像)
拉取镜像:docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
推送镜像:
- #1、打镜像标签(username 表示Docker账号用户名)
- docker tag REPOSITORY[:tag] username/REPOSITORY[:tag]
- docker tag myenv:1.0 jmcui/myenv:1.0
- #2、推送到Docker hub
- docker push username/REPOSITORY[:tag]
- docker push jmcui/myenv:1.0
二、创建 Docker 私库(基于HTTP)
在企业中把内部的一些工具包放入 Nexus 中是比较常见的做法,最新版本 Nexus3.x 全面支持 Docker 的私有镜像。所以使用 Nexus3.x 一个软件来管理 Docker , Maven , Yum , PyPI 等是一个明智的选择。
1、使用 Docker 安装 Nexus
- 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
- ## 8081:nexus3网页端
- ## 8082:docker(hosted)私有仓库,可以pull和push
- ## 8083:docker(proxy)代理远程仓库,只能pull
2、登陆
访问 http:// ip地址:8081 默认账号:admin,默认密码:admin123
3、创建私有仓库
页面上方的齿轮按钮 —> Repository —> Repositories —> Create repository —> 选择 docker (hosted)
还可以创建一个 docker (proxy) 类型的仓库链接到 DockerHub 上。再创建一个 docker (group) 类型的仓库把刚才的 hosted 与 proxy 添加在一起。主机在访问的时候默认下载私有仓库中的镜像,如果没有将链接到 DockerHub 中下载并缓存到 Nexus 中。
4、配置支持 HTTP
Docker 默认不允许非 HTTPS
方式推送镜像。我们可以通过 Docker 的配置选项来取消这个限制,(Ubuntu 16.04+, Debian 8+, centos 7)在 /etc/docker/daemon.json 中写入如下内容:
- {
- "registry-mirrors": [
- "https://registry.docker-cn.com"
- ],
- "insecure-registries": [
- "xx.xx.xx.xx:8082"
- ]
- }
重启 Docker :
- $ sudo systemctl daemon-reload
- $ sudo systemctl restart docker
5、验证效果
- #1、登陆
- docker login xx.xx.xx.xx:8082
- #2、私库标签
- docker tag myenv:1.0 xx.xx.xx.xx:8082/myenv
- #3、推送镜像到私有仓库
- docker push xx.xx.xx.xx:8082/myenv
- #4、查看私有仓库镜像,验证是否推送成功
- curl xx.xx.xx.xx:8082/v2/_catalog
- #5、拉取私有仓库镜像
- docker pull xx.xx.xx.xx:8082/myenv
三、私有仓库高级配置(HTTPS 认证)
下面,我们将要搭建的私有仓库地址为 docker.domain.com,使用 openssl 自行签发 docker.domain.com 的站点 SSL 证书,并用 Docker Compose 搭建一个拥有权限认证、TLS 的私有仓库。
由于是在 Centos 7 下玩的 Docker ,首先要解决 Docker Compose 安装的问题。
1、安装 Docker Compose
x86_64 架构的 Linux 建议安装如下:
从 官方 GitHub Release 处选择最新版本安装,类似如下~
- #1、直接下载对应的二进制包
- curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
- chmod +x /usr/local/bin/docker-compose
- #2、添加环境变量
- export PATH=$PATH:/usr/local/bin/docker-compose
- #卸载
- sudo rm /usr/local/bin/docker-compose
ARM 架构的 Linux 建议安装如下:
- #1、检查linux有没有安装python-pip包
- pip -V
- #2、执行安装 epel-release 包
- yum -y install epel-release
- #3、执行安装 python-pip 包
- yum install python-pip
- #4、对安装好的pip进行升级
- pip install --upgrade pip
- #5、再次验证pip是否安装成功
- pip -V
- #6、安装Docker-Compose(失败的话可重复多次)
- pip --default-timeout=300 install -U docker-compose --ignore-installed requests
- #7、检查docker-compose 安装
- docker-compose -version
- #卸载
sudo pip uninstall docker-compose
yum -y remove python-pip
yum -y remove epel-release
bash 补全命令 :sudo curl -L https://raw.githubusercontent.com/docker/compose/1.22.0/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
直接用容器来执行Docker Compose:
- curl -L https://github.com/docker/compose/releases/download/1.22.0/run.sh > /usr/local/bin/docker-compose
- chmod +x /usr/local/bin/docker-compose
2、HTTPS 认证
因为对 HTTPS 的那些证书认证什么的,着实没有什么大的概念,就不在这里大夸其辞了。国内各大云服务商均提供了免费的站点证书,常见的做法是:申请个域名,绑定服务器IP,然后下载云服务提供的证书,添加认证即可。
这里的做法是使用 openssl 自行签发 docker.domain.com 的站点 SSL 证书,也是看着步骤,一步步傻瓜式操作下来的,就不献丑了。具体步骤可以参考:https://yeasy.gitbooks.io/docker_practice/content/repository/registry_auth.html
至于坑,那还是有的,比如上面的 Docker Compose 安装就折腾了好久。另外需要注意的是,最后生成的文件都要放在 /etc/docker 相关目录下,目录结构如下:
参考资料:《Docker — 从入门到实践》
Docker 系列四(自定义仓库).的更多相关文章
- docker系列四之docker镜像与容器的常用命令
docker镜像与容器的常用命令 一.概述 docker的镜像于容器是docker中两个至关重要的概念,首先给各位读者解释一下笔者对于这两个概念的理解.镜像,我们从字面意思上看,镜子里成像,我们人 ...
- Docker系列(四):Docker容器互联
基于Volume的互联 为什么需要Volume docker文件系统是分层的,下面的是全部是只读的,最上面的是可写层,容器中的进程如果修改了某个文件,比如修改了下层的某个文件,其实是在最顶层复制下层文 ...
- Docker系列(四)Dockerfile
基本语法 使用 #来注释 FROM 指令告诉Docker使用哪个镜像作为基础 接着是维护者信息 RUN 开头的指令会在创建中运行,比如安装软件包 FROM 格式: FROM<image>或 ...
- Docker系列四: 使用UI管理docker容器
一.什么是Portainer? Portainer是Docker的图形化管理工具,提供状态显示面板.应用模板快速部署.容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作).事件日志显示.容 ...
- windows下部署.netcore+docker系列四 (部署程序,重点就要来了)
前面的都是为这章做准备,加油把骚年们 PS:C# 项目可以按照流程一步步来,java 偶然其他的可以找下其他的网上资源 1.在 VS2019中 添加docker 支持 (其实也就是追加一个Docker ...
- docker 系列 - 企业级私有镜像仓库Harbor部署(转载)
本文转载自 搜云库 的文章 https://www.jianshu.com/p/7d76850de03f , 感谢作者 3.png 上一篇文章搭建了一个具有基础功能,权限认证.TLS 的私有仓库, ...
- Docker系列——Grafana+Prometheus+Node-exporter钉钉推送(四)
近期搭建的服务器监控平台,来进行一个总结.主要分为监控平台的搭建.告警中心的配置以及消息的推送.推送的话,支持多种终端.具体详细可查看之前的博文,在这里罗列下,方便查看. Docker系列--Graf ...
- AspNetCore容器化(Docker)部署(四) —— Jenkins自动化部署
一.前言 (Jenkins.Docker.Git/Svn组建一套简单的自动化发布流程) 文章中用到的相关服务器角色 角色 环境 功能 开发机 Win10.Docker(Linux OS) 编码.调试 ...
- Docker系列-(2) 镜像制作与发布
上篇文章引入了Docker的基本原理和操作,本节文章主要介绍如何制作Docker镜像和发布. 镜像文件结构 Docker镜像的本质是一系列文件的集合,这些文件依次叠加,形成了最后的镜像文件,类似于下图 ...
随机推荐
- 【webpack】-- 入门与解析
每次学新东西总感觉自己是不是变笨了,看了几个博客,试着试着就跑不下去,无奈只有去看官方文档. webpack是基于node的.先安装最新的node. 1.初始化 安装node后,新建一个目录,比如ht ...
- 《深入浅出nodejs》读书笔记(2)
概述 本来是想着学学node.js试试的,后来发现node.js才是真正的js啊,它里面用到了很多我们平时没用过的js特性,而且还非常优雅,比如它里面的异步编程思想,总之,<深入浅出node.j ...
- JavaScript 对象(上)
简述: 1.是 JavaScript 的基本类型 2.是一种复合值,可通过名字访问这些值 3.可看作属性的无序集合,每个属性都是一个名/值对(属性名是字符串或标识符) 4.可以从一个称为原型的对象继承 ...
- dedecms中arclist标签做分页以及分页点击模块样式错乱问题
in 使用织梦建站,通常会调用到一个文章列表,dedecms官网list标签没有提供typeid的属性,首页或多列表部分情况下使用分页并不方便,这就需要用arclist标签实现一个分页功能:以下还是展 ...
- 阿里妈妈前端团队出品的开源接口管理工具RAP第二代 http://rap2.taobao.org
RAP2-DELOS 开源社区版本 (后端API服务器) 项目地址:https://github.com/thx/rap2-delos RAP2是在RAP1基础上重做的新项目,它包含两个组件(对应两个 ...
- 推荐一篇关于java集合的博文,写的很nice
这也是我自己在网上看到的一篇博文,作者的博文都很棒,以后还会持续为大家推荐好的博文,只要大家不骂我只会转别人的博文,自己不会写,其实这些都是基础,前辈们已经在实践中总结的很细很全了,所以也没必要去总结 ...
- .NET Core部署中你不了解的框架依赖与独立部署
作者:依乐祝 原文地址:https://www.cnblogs.com/yilezhu/p/9703460.html NET Core项目发布的时候你有没有注意到这两个选项呢?有没有纠结过框架依赖与独 ...
- Java核心技术及面试指南 流程控制方面的面试题答案
2.2.5.1 switch语句能否作用在byte上,能否作用在long上,能否作用在String上? 1 switch里可以用char,byte,short,int这些基本类型,以及它们的封装类. ...
- Unity3D热更新之LuaFramework篇[01]--从零开始
前言 因工作关系,需要对手头的项目进行热更新支持.了解后发现,Lua的几个变种:XLua.ToLua(原uLua)和Slua都可以做Unity热更,而ToLua更是提供了一个简易的热更框架--LuaF ...
- nginx中root和alias的区别
nginx中root和alias的区别