CentOS Linux release 7.2.1511

Docker version 17.03.1-ce

安装registry镜像

同时安装一个比较小的镜像alpine待会作测试用:

# docker pull daocloud.io/registry
# docker pull daocloud.io/alpine

来个简单的测试下:

# docker run -d -p : --restart=always daocloud.io/registry
# docker tag daocloud.io/alpine localhost:/alpine
# docker push localhost:/alpine
# docker rmi localhost:/alpine
# docker pull localhost:/alpine
# docker images

这个仓库服务问题主要有两个,一是仓库的数据保存在容器而不是持久化到本地,二是不能在其他机器pull或push;

保存仓库数据

保存到宿主机的/data/docker/registry/:

# mkdir -p /data/docker/registry
# docker run -d -p : \
-v /data/docker/registry/:/var/lib/registry \
daocloud.io/registry
# docker push localhost:5000/alpine
# tree /data/docker/registry/ -L 5
  /data/docker/registry/
  └── docker
      └── registry
          └── v2
              ├── blobs
              │   └── sha256
              └── repositories
                  └── alpine

增加https认证

域名已经有证书的直接用,没有的生成一个自己的证书(红色那行必须填自己的域名):

# mkdir -p /data/docker/certs
# cd /data/docker/certs
# openssl req -newkey rsa:4096 -nodes -sha256 -keyout domain.key -x509 -days 365 -out domain.crt
    Country Name (2 letter code) [XX]:CN
    State or Province Name (full name) []:GD
    Locality Name (eg, city) [Default City]:SZ
    Organization Name (eg, company) [Default Company Ltd]:YYYY
    Organizational Unit Name (eg, section) []:MMMM
    Common Name (eg, your name or your server's hostname) []:my.cn
    Email Address []:my@mail.cn

启动一个支持https的镜像,端口用默认的443就不需要在域名后面带端口了,顺便给容器起个名字myreg方便管理:

# docker run -d -p : --restart=always --name myreg \
-v /data/docker/registry/:/var/lib/registry \
-v /data/docker/certs:/certs \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
daocloud.io/registry

现在去到另一台机器上测试下,配置下域名映射,然后把证书文件拷贝过来:

# sed -i '$a\[your ip] my.cn' /etc/hosts
# mkdir -p /etc/docker/certs.d/my.cn/
# cd /etc/docker/certs.d/my.cn/
# scp my.cn:/data/docker/certs/domain.crt .
# docker pull daocloud.io/alpine
# docker tag daocloud.io/alpine my.cn/alpine
# docker push my.cn/alpine
# docker pull my.cn/alpine

over

创建docker镜像的私有仓库的更多相关文章

  1. docker 创建新的镜像到私有仓库

    docker:/data# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES bd6db4127a9e centos &q ...

  2. [python](Docker SDK)上传镜像到私有仓库(tls、身份认证)

    (Docker SDK)上传镜像到私有仓库(tls.身份认证) API:https://docker-py.readthedocs.io/en/stable/ 环境:python:3.7.3 配置参数 ...

  3. docker registry (私有仓库)

    首先要导入registry的镜像文件 1.普通的registry 一条命令创建一个仓库 docker run -d -p 5000:5000 --restart=always --name regis ...

  4. Docker笔记--镜像&基于GO项目创建Docker镜像

    Docker笔记--镜像&基于GO项目创建Docker镜像 核心概念 Doker镜像--包含一个基本的操作系统运行环境和应用程序,镜像是创建Docker容器的基础. Docker容器--如果把 ...

  5. Spring Boot 创建 Docker 镜像

    随着越来越多的组织转向容器和虚拟服务器,Docker正成为软件开发工作流程中一个更重要的部分.为此,Spring Boot 2.3中最新的功能之中,提供了为Spring Boot应用程序创建 Dock ...

  6. win10 下安装docker,创建镜像,push镜像到私有仓库,创建私有仓库,修改镜像仓库地址

    通过连接下载window docker安装文件,https://download.docker.com/win/stable/Docker%20for%20Windows%20Installer.ex ...

  7. Docker创建镜像以及私有仓库

    Docker的安装及镜像.容器的基本操作详见博客https://blog.51cto.com/11134648/2160257下面介绍Docker创建镜像和创建私有仓库的方法,详细如下: 创建镜像 创 ...

  8. docker部署mysql,nginx,php,并上传镜像到私有仓库

    前言 最近公司准备把现有环境全部搞成容器化,所以笔者就先了解了一下docker,并搞了一搞,并把自己搞的过程记录下来.话不多说直接开干 环境说明 Centos7 Docker version 18.0 ...

  9. docker推送镜像到私有仓库

    配置私有仓库源 私有仓库地址:registry.supos.ai 修改/etc/docker/daemon.json文件,增加insecure-registries,如下所示: { "ins ...

随机推荐

  1. nodejs+mysql入门实例(删)

    //连接数据库 var mysql = require('mysql'); var connection = mysql.createConnection({ host: 'bdm253137448. ...

  2. np.percentile()

    np.percentile(a, q, axis=None, out=None, overwrite_input=False, interpolation='linear', keepdims=Fal ...

  3. iOS 崩溃分析

    崩溃统计分析,在APP中是非常常见一种优化APP,发现APP的BUG的方式. 1.异常处理 可通过try catch 方式处理,如果发生异常,会走catch ,最终走fianlly.对一些我们不想他崩 ...

  4. 前端获取的数据是undefined

    var id = $("id1").val(); var username = $("username1").val(); var password = $(& ...

  5. MySQL主从同步问题

    1,The replication receiver thread cannot start because the master has GTID_MODE = OFF and this serve ...

  6. uvm设计分析——callback

    uvm_callback,设计者在进行class的function设计时,有意留下的一些hook,总是遍历某个pool中的对象: 使用者在使用时,将实现添加到某个pool中: callback中,最重 ...

  7. DX9 顶点缓存案例

    // @time 2012.3.5 // @author jadeshu //包含头文件 #include <Windows.h> #include <d3d9.h> #pra ...

  8. html5-常用的3个基本标签

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  9. sql server 将两列的值合并到另一列

    select top 100 t2.FullName, * from Subject,(select id, isnull(first_name,'') +isnull(middle_name,'') ...

  10. Python并发编程之线程池/进程池--concurrent.futures模块

    一.关于concurrent.futures模块 Python标准库为我们提供了threading和multiprocessing模块编写相应的多线程/多进程代码,但是当项目达到一定的规模,频繁创建/ ...