docker 仓库

仓库是集中存放镜像的地方

docker 公有仓库地址

https://hub.docker.com

1.1 登录

可以通过docker login命令来输入用户名,密码和 邮箱来完成注册和登录,注册成功后,本地用户目录的.dockercfg中将保存用户的认证信息。

1.1.1 基本操作

用户无需登录可 通过 docker search 命令来查找官方仓库中的镜像,并利用docker pull 下载

[root@ybsrv1 ~]# docker search centos 
NAME                               DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
centos                             The official build of CentOS.                   5275      [OK]       
ansible/centos7-ansible            Ansible on Centos7                              121                  [OK]
jdeathe/centos-ssh                 CentOS-6 6.10 x86_64 / CentOS-7 7.5.1804 x...   108                  [OK]
consol/centos-xfce-vnc             Centos container with "headless" VNC sessi...   83                   [OK]
imagine10255/centos6-lnmp-php56    centos6-lnmp-php56                              52                   [OK]
...

官方镜像可以分为两类,一类是centos的基础镜像成为基础镜像或跟镜像,是有docker公司创建,验证,支持,提供。这样镜像往往使用单个单词作为名字

还有一种类型,比如ansible/centos7-ansible镜像,是由docker的用户ansible创建维护的,带有用户名称为前缀,表明是某用户的某仓库,可以通过用户名前缀user_name/来指定使用某个用户提供的镜像,比如ansible用户的镜像前缀为ansible

1.1.2 自动创建

自动创建功能对于经常升级的镜像内程序来说十分方便,有时候创建了镜像,安装了软件,如果软件发布新版本需要手动更新

而自动创建功能使得用户通过docker hub指定跟踪一个目标网站项目,一旦项目发现新的提交,则自动执行创建

配置自动创建步骤

1.创建并登录docker hub,以及目标网站,*在目标网站中链接账号到docker hub

2. 在docker hub中配置一个自动创建

3.选取一个目标网站中的项目(需要含dockerfile)和分支

4.指定dockerfile的“自动创建”页面中跟踪每次创建的状态

1.2.下载镜像

docker pull

但是要在镜像名称前添加注册服务器的具体地址

docker pull 地址/ubuntu:14.04

1.3. 创建和使用私有库

安装docker 后可以通过官方提供的registry镜像来简单搭建一套本地私有仓库环境

创建本地私有仓库默认在/tmp 下

docker run -d -p 5000:5000 --restart=always --name registry registry

-v 指定目录

docker run -d -p 5000:5000 --name=registry --privileged=true  -v /data/registry:/data/registry registry

使用docker tag 命令将这个镜像标记为192.168.2.14:5000

docker  tag test:latest 192.168.2.14:5000/test

上传报错

[root@kubernetes /etc/docker]# docker push 192.168.2.14:5000/busybox
The push refers to repository [192.168.2.14:5000/busybox]
Get https://192.168.1.53:5000/v2/: http: server gave HTTP response to HTTPS client

解决:

错误原因:

        因为Docker从1.3.X之后,与docker registry交互默认使用的是https,然而此处搭建的私有仓库只提供http服务,所以当与私有仓库交互时就会报上面的错误。

        为了解决这个问题需要在启动docker server时增加启动参数为默认使用http访问。

        目前很多文章都是通过修改docker的配置文件“etc/systemconfig/docker",重启docker来解决这个问题。

         但发现docker1.12.3版本并无此文件,根据网上创建此文件,并填入相应内容,重启docker无效果,仍然报此错误。

解决方法:
在”/etc/docker/“目录下,创建”daemon.json“文件。在文件中写入:

{ "insecure-registries":["192.168.2.14:5000"] }
#restart docker
#docker start 366c3c5fe1ea #registry容

docker push 上传标记镜像

docker push 192.168.2.14/busybox

上传成功

查看上传images的log

[root@kubernetes ~]# curl http://192.168.2.14:5000/v2/_catalog
{"repositories":["busybox","centos"]}

查看tags

[root@kubernetes ~]# curl http://192.168.2.14:5000/v2/busybox/tags/list
{"name":"busybox","tags":["latest"]}

删除上传的tags 重新下载

[root@kubernetes ~]# docker rmi 192.168.2.14:5000/busybox
Untagged: 192.168.2.14:5000/busybox:latest
Untagged: 192.168.2.14:5000/busybox@sha256:dd97a3fe6d721c5cf03abac0f50e2848dc583f7c4e41bf39102ceb42edfd1808

[root@kubernetes ~]# docker images 
REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
192.168.2.14:5000/centos   latest              0f3e07c0138f        7 weeks ago         220MB
centos                     latest              0f3e07c0138f        7 weeks ago         220MB
busybox                    latest              19485c79a9bb        2 months ago        1.22MB
registry                   latest              f32a97de94e1        8 months ago        25.8MB
registry                   latest              f32a97de94e1        8 months ago        25.8MB

[root@kubernetes ~]# docker pull 192.168.2.14:5000/busybox
Using default tag: latest
latest: Pulling from busybox
Digest: sha256:dd97a3fe6d721c5cf03abac0f50e2848dc583f7c4e41bf39102ceb42edfd1808
Status: Downloaded newer image for 192.168.2.14:5000/busybox:latest
192.168.2.14:5000/busybox:latest

[root@kubernetes ~]# docker images 
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
192.168.2.14:5000/centos    latest              0f3e07c0138f        7 weeks ago         220MB
centos                      latest              0f3e07c0138f        7 weeks ago         220MB
192.168.2.14:5000/busybox   latest              19485c79a9bb        2 months ago        1.22MB
busybox                     latest              19485c79a9bb        2 months ago        1.22MB
registry                    latest              f32a97de94e1        8 months ago        25.8MB
registry                    latest              f32a97de94e1        8 months ago        25.8MB

2. 配置私有库

2.1. 基于容器安装运行

docker run -d -p 5000:5000 --restart=always --name registry registry

指定配置文件

docker run -d -p 5000:5000 \
--restart=always \
--name registry \
-v /home/user/registry-conf/config.yml:/etc/docker/registry/config.yml \
registry:2

指定存储位置

docker run -d -p 5000:5000 \
--restart=always \
--name registry \
-v /opt/data/registry:/var/lib/registry \
registry:2

2.2 本地安装运行

安装golang环境

yum install golang

环境准备

mkdir -p /$GOPATH/src/github.com/docker/

cd /$GOPATH/src/github.com/docker/

git clone https://github.com/docker/distribution.git

 cd distribution/

mkdir /etc/docker/registry/

 cp cmd/registry/config-dev.yml /etc/docker/registry

安装启动

 make PREFIX=/go clean binaries

registry serve /etc/docker/registry/config.yml

2.3 配置TLS 证书

2.3.1. 自动生成

openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/myrepo.key -x509 -days 365 -out certs/myrepo.crt

2.3.2 启用证书

docker run -d \
  --restart=always \
  --name registry \
  -v `pwd`/certs:/certs \
  -e REGISTRY_HTTP_ADDR=0.0.0.0:443 \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/myrepo.crt \
  -p 443:443 \
  registry

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值