创建Docker Hub账户

登录和上传镜像到Hub.docker.com

docker login //登陆hub.docker.com
docker tag ubutun1404-baseimage:1.0 jwu049/ubutun1404-baseimage:1.0 //标记本地镜像,将其归入某一仓库。 docker images
-------
REPOSITORY TAG IMAGE ID CREATED SIZE
jwu049/ubutun1404-baseimage 1.0 80e9c65ef26f 47 hours ago 228MB
ubutun1404-baseimage 1.0 80e9c65ef26f 47 hours ago 228MB
------- docker push jwu049/ubutun1404-baseimage:1.0 //上传镜像
docker search centos //搜索镜像
docker pull centos //下载镜像

镜像地址修改

在国内从Docker Hub中拉取镜像,有时会超时,可以通过以下方法进行添加国内镜像:

  • 每次下载镜像时加镜像地址(一次下载有效)
$ docker pull registry.docker-cn.com/library/ubuntu:16.04
  • docker守护进程启动时加国内镜像地址(一次守护进程运行有效)
docker --registry-mirror=https://registry.docker-cn.com daemon
  • 修改 /etc/docker/daemon.json 文件并添加上 registry-mirrors 键值(永久有效)
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}

私有仓库

安装docker-registry

  • 使用镜像方式安装
docker run -p 5000:5000 registry //直接使用容器模式下载registry
docker run -e SETTING_FLAVOR=s3 -e AWS_BUCKET=mybucket -e STORAGE_PATH=/registry -e AWS_KEY=myawskey -e AWS_SECRET=myawssecret
-e SEARCH_BACKEDN=sqlalchemy -p 5000:5000 registry //设置环境变量,即使用Amazon S3存储镜像
  • centos使用rpm包方式
yum install docker-registry-y
service docker-registry start
service docker=registry status
netstat -ltnp | grep 5000
ps -ef | grep 31079

配置文件

默认情况下docker registry 使用config_sample.yml进行各项配置,配置文件使用yml格式,并提供各种不同的模板,官方提供的config_sample.yml链接地址如下:

config_sample.yml

文件里的示例模板解释如下:

  • common: 公共基础配置,其他模板可引用
  • local: 存储数据到本地文件系统
  • s3: 存储数据到AWS s3
  • ceph-s3: 通过Ceph 对象网关奖数据存储到Ceph集群
  • dev:使用local模板的基本配置
  • test:单元测试使用
  • prod:生产环境配四款(基本和s3配置类似)
  • gcs:存储数据到google的云存储
  • swift:存储数据到Openstack Swift服务
  • glance:存储数据到Openstack Glance服务,本地文件系统为后备
  • glance-swift:存储数据到OpenStack Glance服务,Swift做后备
  • elliptics:存储数据到Elliptics key/value存储

构建安全的私有仓库

Nginx的安装与配置

1) 配置配置文件registry.conf:

upstream docker-registry {
server docker.wujun.club:5000;
} server {
listen 443;
server_name docker.wujun.club; ssl on;
ssl_certificate /etc/ssl/certs/docker-registry.crt;
ssl_certificate_key /etc/ssl/private/docker-registry.key; client_max_body_size 0; #disable any limits to avoid http 413 for large image upload;
chunked_transfer_encoding on; location / {
auth_basic "Restricted";
auth_basic_user_file docker-registry.htpasswd;
include docker-registry.conf;
}
location /_ping {
auth_basic off;
include docker-registry.conf;
}
location /v1/_ping {
auth_basic off;
include docker-registry.conf;
}
location /v2/_ping {
auth_basic off;
include docker-registry.conf;
} location /v2/_catalog {
auth_basic off;
include docker-registry.conf;
}
}

2) 创建ssl支持配置问件docker-registry.conf

proxy_pass http://docker-registry;
proxy_set_header Host $host; #required for docker client's sake
proxy_set_header X-Real-IP $remote_addr; # apss on real client's IP
proxy_set_header Authorization ""; #see https://gitbu.com/dotcloud/docker-registry/issue/170
proxy_read_timeout 900;

3)通过htpasswd创建认证的用户名和密码

htpasswd -bc docker-registry.htpasswd  docker docker

SSL证书

1) 创建自签名证书CA

CA包含公钥和私钥,私钥用于给其他证书签名,公钥用别人验证证书的有效性

echo 01 > ca.srl
openssl genrsa -des3 -out ca-key.pem 2048
openssl req -new -x509 -days 365 -key ca-key.pem -out ca.pem

2)为Nginx server创建服务端证书

openssl genrsa -des3 -out server-key.pem 2048
openssl req -subj '/CN=Terry' -new -key server-key.pem -out server.csr
openssl x509 -req -days 365 -in server.csr -CA ca.pem -CAkey ca-key.pem -out server-cert.pem openssl rsa -in server-key.pem -out server-key.pem //删除server key中的passphrase cp server-cert.pem /etc/ssl/certs/docker-registry.crt
cp server-key.pem /etc/ssl/private/docker-registry.key

3) 客户端配置证书

centos:

update-ca-trust
cp ca.pem /etc/pki/ca-trust/source/anchor/ca.crt

mac:

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ca.crt

4) 上传镜像

docker tag {image_name}  dev.registry.com/dbyin/http
docker push dev.registry.com/dbyin/http

Docker系统五:Docker仓库的更多相关文章

  1. Docker(十五)-Docker的数据管理(volume/bind mount/tmpfs)

    Docker提供了三种不同的方式用于将宿主的数据挂载到容器中:volumes,bind mounts,tmpfs volumes.当你不知道该选择哪种方式时,记住,volumes总是正确的选择. vo ...

  2. Docker学习(五): 仓库与数据管理

    特别声明: 博文主要是学习过程中的知识整理,以便之后的查阅回顾.部分内容来源于网络(如有摘录未标注请指出).内容如有差错,也欢迎指正! =============系列文章============= 1 ...

  3. 用前端姿势玩docker【五】快速构建中类Unix系统与Windows系统的差异化处理

    目录 用前端姿势玩docker[一]Docker通俗理解常用功能汇总与操作埋坑 用前端姿势玩docker[二]dockerfile定制镜像初体验 用前端姿势玩docker[三]基于nvm的前端环境构建 ...

  4. BI系统打包Docker镜像及容器化部署的具体实现

    在过去的几年中,"云"作为明星热词站在了各种新潮技术之中,你可能使用过,但说不清它的原理:或者是没用过,但听过它的大名:也可能连它的名字都没听过,但你对这只蓝色鲸鱼一定十分眼熟.作 ...

  5. centos7系统下 docker 环境搭建

    运行环境: VMware Workstation Pro 在虚拟机中安装centos7系统, 选择最小安装, 网络连接方式选择的桥接(与宿主机在同一IP段)centos7一定要安装64位, docke ...

  6. docker 基础之私有仓库

    docker-registry 是官方提供的工具,可以用于构建私有的镜像仓库.安装运行 docker-registry容器 在安装了 Docker 后,可以通过获取官方 registry 镜像来运行. ...

  7. CentOS系统下docker的安装与卸载

    Docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制, ...

  8. 使用docker搭建“企业级镜像仓库”Harbor

    一.前沿 docker的官方镜像仓库registry,功能比较单一,不太好用,特别是删除镜像操作,不够友好. Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,通过添加一 ...

  9. Docker | 第五章:构建自定义镜像

    前言 上一章节,主要是介绍了下Dockerfile的一些常用命令的说明.我们知道,利用Dockerfile可以构建一个新的镜像,比如运行Java环境,就需要一个JDK环境的镜像,但直接使用公共的镜像时 ...

随机推荐

  1. scp简单使用

    从10.48.113.11获取目录/home/test    到本地/home目录下 scp  -r    root@10.48.113.11:/home/test       /home 将本地/h ...

  2. 网站静态化处理—web前端优化—上(11)

    网站静态化处理这个系列马上就要结束了,今天我要讲讲本系列最后一个重要的主题web前端优化.在开始谈论本主题之前,我想问大家一个问题,网站静态化处理技术到底是应该归属于web服务端的技术范畴还是应该归属 ...

  3. CentOS之7与6的区别

    前言 centos7与6之间最大的差别就是初始化技术的不同,7采用的初始化技术是Systemd,并行的运行方式,除了这一点之外,服务启动.开机启动文件.网络命令方面等等,都说6有所不同.让我们先来了解 ...

  4. 【转】char*,string,CString,int,char[]之间的转换

    CString 头文件#include <cstring>.CString 转char * CString cstr;  ..data(),返回没有”/“的字符串数组..c_str(),返 ...

  5. Struts2实现文件下载

    实现文件下载: 1.导包:commons-fileload-xx.jar commons-io-xx.jar 2.jsp页面: <s:iterator value="#session. ...

  6. Databricks缓存提升Spark性能--为什么NVMe固态硬盘能够提升10倍缓存性能(原创)

    我们兴奋的宣布Databricks缓存的通用可用性,作为统一分析平台一部分的 Databricks 运行时特性,它可以将Spark工作负载的扫描速度提升10倍,并且这种改变无需任何代码修改. 1.在本 ...

  7. 在Web.config中配置handler

    在Web.config中配置handler节点时发现用vs2010和用vs2015竟然不一样,经过多次测试发现了一些倪端: <configuration> <!--vs2010中需要 ...

  8. CSS的背景属性和边框属性

    CSS的背景属性: background 简写属性,作用是将背景属性设置在一个声明中 background-attachment 背景图像是否固定或者随着页面的其余部分滚动 background-co ...

  9. iOS-状态栏字体颜色【白色】【Xcode9.1】

    Xcode9之前 设置状态栏颜色首先在info.plist文件中,加入UIViewControllerBasedStatusBarAppearance = false: <key>UIVi ...

  10. python中的字符串格式化

    Python中常见的字符串格式化方式包括两种:字符串插入(str%),format函数(str.format()) 1.字符串插入 字符串插入是设置字符串格式的简单方法,与C语言.Fortran语言差 ...