docker学习笔记(3)
docker 搭建私有仓库
docker-registry是官方提供的工具,可以用于构建私有的镜像仓库。本文内容基于 docker-registry v2.x 版本。
安装运行 docker-registry
$ docker run -d -p 5000:5000 --restart=always --name registry registry
- # docker run -d -p 5000:5000 --restart=always --name registry registry
- Unable to find image 'registry:latest' locally
- latest: Pulling from library/registry
- 81033e7c1d6a: Pull complete
- b235084c2315: Pull complete
- c692f3a6894b: Pull complete
- ba2177f3a70e: Pull complete
- a8d793620947: Pull complete
- Digest: sha256:672d519d7fd7bbc7a448d17956ebeefe225d5eb27509d8dc5ce67ecb4a0bce54
- Status: Downloaded newer image for registry:latest
- f7f231cb61d1ab0716e60a85e69b64d19bfe099636dcc7d668f3c83f47244bf3
这将使用官方的 registry 镜像来启动私有仓库。默认情况下,仓库会被创建在容器的
/var/lib/registry 目录下。你可以通过 -v 参数来将镜像文件存放在本地的指定路径。例
如下面的例子将上传的镜像放到本地的 /opt/data/registry 目录。
- # docker run -d \
- > -p 5000:5000 \
- > -v /opt/data/registry:/var/lib/registry \
- > registry
在私有仓库上传、搜索、下载镜像
docker image ls查看已有镜像
- # docker image ls
- REPOSITORY TAG IMAGE ID CREATED SIZE
- fandf-image-base 1.0 33761c640b6f 2 days ago 762MB
- centos latest 2d194b392dd1 11 days ago 195MB
- nginx latest e548f1a579cf 3 weeks ago 109MB
- registry latest d1fd7d86a825 2 months ago 33.3MB
- mysql 5.6.38 15a5ee56ec55 2 months ago 299MB
- hello-world latest f2a91732366c 3 months ago 1.85kB
- centos 7.4.1708 3afd47092a0e 4 months ago 197MB
- java latest d23bdf5b1b1b 14 months ago 643MB
使用 docker tag 将 centos:7.4.1708 这个镜像标记为 127.0.0.1:5000/centos:7.4.1708
格式为 docker tag IMAGE[:TAG] [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG]
- # docker tag centos:7.4.1708 127.0.0.1:5000/centos:7.4.1708
- # docker images
- REPOSITORY TAG IMAGE ID CREATED SIZE
- fandf-image-base 1.0 33761c640b6f 2 days ago 762MB
- centos latest 2d194b392dd1 11 days ago 195MB
- nginx latest e548f1a579cf 3 weeks ago 109MB
- registry latest d1fd7d86a825 2 months ago 33.3MB
- mysql 5.6.38 15a5ee56ec55 2 months ago 299MB
- hello-world latest f2a91732366c 3 months ago 1.85kB
- 127.0.0.1:5000/centos 7.4.1708 3afd47092a0e 4 months ago 197MB
- centos 7.4.1708 3afd47092a0e 4 months ago 197MB
- java latest d23bdf5b1b1b 14 months ago 643MB
上传镜像
- # docker push 127.0.0.1:5000/centos:7.4.1708
- The push refers to repository [127.0.0.1:5000/centos]
- 129b697f70e9: Pushed
- 7.4.1708: digest: sha256:834aba7fdd53f4e622a8d636dcd549a83e86a22efad0246bf9438e4655b888ef size: 529
用 curl 查看仓库中的镜像
- # curl 127.0.0.1:5000/v2/_catalog
- {"repositories":["centos"]}
先删除已有镜像,再尝试从私有仓库中下载这个镜像
- # docker image rm 127.0.0.1:5000/centos:7.4.1708
- Untagged: 127.0.0.1:5000/centos:7.4.1708
- Untagged: 127.0.0.1:5000/centos@sha256:834aba7fdd53f4e622a8d636dcd549a83e86a22efad0246bf9438e4655b888ef
- [root@localhost ~]# docker pull 127.0.0.1:5000/centos:7.4.1708
- 7.4.1708: Pulling from centos
- Digest: sha256:834aba7fdd53f4e622a8d636dcd549a83e86a22efad0246bf9438e4655b888ef
- Status: Downloaded newer image for 127.0.0.1:5000/centos:7.4.1708
- [root@localhost ~]# docker image ls
- REPOSITORY TAG IMAGE ID CREATED SIZE
- fandf-image-base 1.0 33761c640b6f 2 days ago 762MB
- centos latest 2d194b392dd1 11 days ago 195MB
- nginx latest e548f1a579cf 3 weeks ago 109MB
- registry latest d1fd7d86a825 2 months ago 33.3MB
- mysql 5.6.38 15a5ee56ec55 2 months ago 299MB
- hello-world latest f2a91732366c 3 months ago 1.85kB
- 127.0.0.1:5000/centos 7.4.1708 3afd47092a0e 4 months ago 197MB
- centos 7.4.1708 3afd47092a0e 4 months ago 197MB
- java latest d23bdf5b1b1b 14 months ago 643MB
私有仓库高级设置
新建文件夹,以下操作均在该文件夹下进行
第一步:创建ca私钥
- # openssl genrsa -out "root-ca.key" 4096
- Generating RSA private key, 4096 bit long modulus
- .................................++
- ...............................................................................++
- e is 65537 (0x10001)
- [root@localhost fandf]#
第二步:利用私钥创建 CA 根证书请求文件
- # openssl req \
- > -new -key "root-ca.key" \
- > -out "root-ca.csr" -sha256 \
- > -subj '/C=CN/ST=Shanxi/L=xianyang/O=dongfeng/CN=dongfeng Docker Registry CA'
以上命令中 -subj 参数里的 /C 表示国家,如 CN ; /ST 表示省; /L 表示城市或者地区; /O 表示组织名; /CN 通用名称
第三步:配置 CA 根证书,新建 root-ca.cnf
- [root_ca]
- basicConstraints = critical,CA:TRUE,pathlen:1
- keyUsage = critical, nonRepudiation, cRLSign, keyCertSign
- subjectKeyIdentifier=hash
第四步:签发根证书
- # openssl x509 -req -days 3650 -in "root-ca.csr" \
- > -signkey "root-ca.key" -sha256 -out "root-ca.crt" \
- > -extfile "root-ca.cnf" -extensions \
- > root_ca
- Signature ok
- subject=/C=CN/ST=Shanxi/L=xianyang/O=dongfeng/CN=dongfeng Docker Registry CA
- Getting Private key
- [root@localhost fandf]#
第五步:生成站点 SSL 私钥
- # openssl genrsa -out "docker.domain.com.key" 4096
- Generating RSA private key, 4096 bit long modulus
- ...........................................................................................++
- ........................................++
- e is 65537 (0x10001)
- [root@localhost fandf]#
第六步:使用私钥生成证书请求文件
- # openssl req -new -key "docker.domain.com.key" -out "site.csr" -sha256 \
- > -subj '/C=CN/ST=Shanxi/L=Datong/O=Your Company Name/CN=docker.domain.com'
- [root@localhost fandf]#
第七步:配置证书,新建 site.cnf 文件
- [server]
- authorityKeyIdentifier=keyid,issuer
- basicConstraints = critical,CA:FALSE
- extendedKeyUsage=serverAuth
- keyUsage = critical, digitalSignature, keyEncipherment
- subjectAltName = DNS:docker.domain.com, IP:127.0.0.1
- subjectKeyIdentifier=hash
第八步:签署站点 SSL 证书
- # openssl x509 -req -days 750 -in "site.csr" -sha256 \
- > -CA "root-ca.crt" -CAkey "root-ca.key" -CAcreateserial \
- > -out "docker.domain.com.crt" -extfile "site.cnf" -extensions server
- Signature ok
- subject=/C=CN/ST=Shanxi/L=Datong/O=Your Company Name/CN=docker.domain.com
- Getting CA Private Key
- [root@localhost fandf]#
这样已经拥有了 docker.domain.com 的网站 SSL 私钥 docker.domain.com.key 和 SSL 证书 docker.domain.com.crt 。
新建 ssl 文件夹并将 docker.domain.com.key docker.domain.com.crt 这两个文件移入,删除其他文件。
私有仓库默认的配置文件位于 /etc/docker/registry/config.yml ,我们先在本地编辑
config.yml ,之后挂载到容器中。
- version: 0.1
- log:
- accesslog:
- disabled: true
- level: debug
- formatter: text
- fields:
- service: registry
- environment: staging
- storage:
- delete:
- enabled: true
- cache:
- blobdescriptor: inmemory
- filesystem:
- rootdirectory: /var/lib/registry
- auth:
- htpasswd:
- realm: basic-realm
- path: /etc/docker/registry/auth/nginx.htpasswd
- http:
- addr: :443
- host: https://docker.domain.com
- headers:
- X-Content-Type-Options: [nosniff]
- http2:
- disabled: false
- tls:
- certificate: /etc/docker/registry/ssl/docker.domain.com.crt
- key: /etc/docker/registry/ssl/docker.domain.com.key
- health:
- storagedriver:
- enabled: true
- interval: 10s
- threshold: 3
生成 http 认证文件
- mkdir auth
- $ docker run --rm \
- --entrypoint htpasswd \
- registry \
- -Bbn username password > auth/nginx.htpasswd
将上面的 username password 替换为你自己的用户名和密码
编辑 docker-compose.yml
- version: '3'
- services:
- registry:
- image: registry
- ports:
- - "443:443"
- volumes:
- - ./:/etc/docker/registry
- - registry-data:/var/lib/registry
- volumes:
- registry-data:
修改 hosts
- docker.domain.com 127.0.0.1
启动
- docker-compose up -d
docker学习笔记(3)的更多相关文章
- Docker学习笔记 — 配置国内免费registry mirror
Docker学习笔记 — 配置国内免费registry mirror Docker学习笔记 — 配置国内免费registry mirror
- docker学习笔记1 -- 安装和配置
技术资料 docker中文官网:http://www.docker.org.cn/ 中文入门课程:http://www.docker.org.cn/book/docker.html docker学习笔 ...
- Docker学习笔记之一,搭建一个JAVA Tomcat运行环境
Docker学习笔记之一,搭建一个JAVA Tomcat运行环境 前言 Docker旨在提供一种应用程序的自动化部署解决方案,在 Linux 系统上迅速创建一个容器(轻量级虚拟机)并部署和运行应用程序 ...
- docker~学习笔记索引
回到占占推荐博客索引 使用docker也有段时间了,写了不少文章与总结,下面把它整理个目录出来,方便大家去学习与检索! docker~学习笔记索引 docker~linux下的部署和基本命令(2017 ...
- Docker学习笔记 - Docker容器内部署redis
Docker学习笔记(2-4)Docker应用实验-redist server 和client的安装使用 一.获取redis容器(含客户端和服务端) 二.创建服务端容器 1.在终端A中运行redis- ...
- docker学习笔记(一)—— ubuntu16.04下安装docker
docker学习笔记(一)—— ubuntu16.04下安装docker 原创 2018年03月01日 14:53:00 标签: docker / ubuntu 1682 本文开发环境为Ubuntu ...
- Docker学习笔记总结
Docker学习笔记 https://yeasy.gitbooks.io/docker_practice/content/ 一 环境搭建 Ubuntu安装 .添加软件源的GPG密钥 curl -f ...
- docker学习笔记二:常用命令
docker学习笔记二:常用命令 查看docker常用命令 docker --help 返回结果如下: 其中常用的命令如下: 1.image相关操作 展示所有的image: 删除image: rmi ...
- docker学习笔记-1
docker学习笔记一:安装 mac安装docker docker官方文档上有这么一段话: Because the Docker daemon uses Linux-specific kernel f ...
- Docker:学习笔记(1)——基础概念
Docker:学习笔记(1)——基础概念 Docker是什么 软件开发后,我们需要在测试电脑.客户电脑.服务器安装运行,用户计算机的环境各不相同,所以需要进行各自的环境配置,耗时耗力.为了解决这个问题 ...
随机推荐
- Idea 里明明配置了Tomcat,但是右上角任然没有Tomcat显示
问题截图如下: 上图明明配置了Tomcat,但是Idea右上角任然是Add Configurations 因为这个问题,困扰了好久.解决方法: 点击Add Configurations 出现如下界 ...
- Python自学:第三章 确定列表长度
>>> cars = ["bmw", "audi", "toyota", "subaru"] > ...
- 利用scrapy-client 发布爬虫到远程服务端
远程服务端Scrapyd先要开启 远程服务器必须装有scapyd,并开启. 这里远程服务开启的端口和ip: 192.166.12.80:6800 客户端配置和上传 先修爬虫项目文件scrapy.cfg ...
- C#流程控制语句--跳转语句(break,continue,goto,return,)
跳转语句:是程序运行到某一位置时,可以跳到程序中另一个代码的语句.循环控制语句. 跳转语句:break 1.用于退出包含在最内层的循环或者退出一个switch或loop语句,程序流将继续紧接着loop ...
- FPM六:接五,跳转到明细
1.在RESULT的Feeder class里添加点击单号事件: method IF_FPM_GUIBB_LIST~GET_DEFINITION. DATA:GW_ACTION TYPE FPMGB_ ...
- 调用 CURL 使用正则抓取信息
Class MyCurl{ protected $_pdo; //构造方法 链接数据库 public function __construct(){ $this->_pdo ...
- 再次精读《javascript高级程序设计第3版》学习笔记(1)
第一次拿起这本书是2016年暑假,时隔2年,又一次开始研读这本经典书籍.每次读,都是对之前的一次沉淀和总结,每次都会有新的收获.
- html和css进阶
html和css进阶 相对地址与绝对地址 网页上引入或链接到外部文件,需要定义文件的地址,常见引入或链接外部文件包括以下几种: <!-- 引入外部图片 --> <img src=&q ...
- linux服务器上使用find查杀webshell木马方法
本文转自:http://ju.outofmemory.cn/entry/256317 只要从事互联网web开发的,都会碰上web站点被入侵的情况.这里我把查杀的一些方法采用随记的形式记录一下,一是方便 ...
- 【转载】C++对象成员与构造函数
一个类的对象可以作为另一个类的数据成员,此时把该对象称为类的对象成员. 当一个类中出现对象成员时,该类的构造函数就要为对象成员初始化,对象成员的初始化必须在构造函数的初始化表中完成. 注意: 初始化对 ...