Docker 学习笔记之访问Docker仓库

in Linux with 0 comment

仓库(Repository)是集中存放镜像的地方,分为公共仓库和私有仓库,就跟我在上面笔记“上传镜像”中写的,docker pull waynesx/fzccms:v1.02 ,使用docker search命令是从Docker Repository的公共镜像区获取,

image20200329150107551.png

Docker Repository中包含非常丰富的镜像资源,有完整的生态体系比如:tomcat、centos、ubuntu、nginx、java…..

有时候容易把仓库(Repository)与注册服务器(Registry)混淆,实际上注册服务器是存放仓库的具体服务器,一个注册服务器上可以有多个仓库,而每一个仓库下面可以有多个镜像。从这方面来说,仓库可以被认为是一个具体的项目或目录。例如对于仓库地址private-docker.com/ubuntu来说,private-docker.com是注册服务器地址,ubuntu是仓库名

本章笔记是要是介绍是要Docker Hub官方仓库进行登录、下载等基本操作,以及是要国内社区提供的仓库下载镜像,最后还将介绍创建和使用是由仓库的基本操作

Docker Hub

Docker Hub 公共镜像市场

登录

$ docker login

基本操作

docker search命令类查找Docker Repository 中的镜像,并利用docker [image] pull命令来下载到本地

自动创建

自动创建(Automated Builds)是DockerHub提供的自动化服务,这一功能可以自动跟随项目代码的变更而重新构建镜像

例如,用户构建了某应用镜像,如果应用发布版本,用户需要手动更新镜像。而自动创建则允许用户通过DockerHub 指定跟踪一个目标网站(比如:GitHub)上的项目,一旦项目发生新的提交,则自动执行创建。

要配置自动创建,包括如下的步骤:

1、创建并登陆DockerHub,以及目标网站如GitHub;

2、在目标网站中允许DockerHub访问服务

3、在DockerHub中配置一个“自动创建”类型的醒目

4、选取一个目标网站中的项目(需要含Dockerfile)和分支

5、指定Dockerfile的位置,并提交创建

之后,可以在DockerHub的“自动创建”页面中跟随每次创建的状态

第三方镜像市场

国内提供Docker镜像市场包括:腾讯云。网易云、阿里云等

搭建本地私有仓库

1、使用Registry镜像创建私有仓库

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

$ docker run -d  -p 5000:5000 registry:2

这将自动下载并启动registry容器,创建本地的私有仓库服务。

默认情况下,仓库会被创建在容器的/var/lib/registry目录下。可以通过-v参数来将镜像文件存放在本地的指定路径。例如下面实例:将上传的镜像放到/opt/data/registry目录:

$ docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry --name registry registry:2

此时,在本地将启动一个私有仓库服务,监听端口为5000

image20200329154710313.png

2、管理私有仓库

首先在wayne这太服务器上搭建私有仓库,查看其地址为47.105.95.140:5000

使用docker tag 命令将这个镜像标记为47.105.95.140:5000/laowang(格式为docker tag IMAGE [:TAG] [REGISTRY.HOST/] [USERNAME/] NAME [:TAG ])

$ docker tag wayne_tom2:v1.02 47.105.95.140:5000/laowang

image20200329163906845.png

使用docker push 上传标记的镜像:

image20200329164048298.png

这里出现了问题,在pull提交镜像的时候出现错误

原因:docker私有仓库服务器,默认是基于https传输的,所以我们需要在客户端127.0.0.1做相关设置,不使用https传输

解决:

$ vi /etc/docker/daemon.json

将下面的代码放进去保存并退出

"insecure-registries":["47.105.95.140:5000"]

最终如下所示:

{
     "registry-mirrors": ["https://njrds9qc.mirror.aliyuncs.com"],
     "insecure-registries":["47.105.95.140:5000"]
}

依次执行下面两条命令,重新启动docker

$ systemctl daemon-reload
$ systemctl restart docker

当以为就结束,万事大吉时,又出错了,错误如下:

image20200329164704029.png

重启失败,最致命的是这是我的生产服务器,没在测试服务器上做:后悔!!!谨记,重要服务器谨慎操作。

使用以下命令查看Docker服务状态信息

$ systemctl status docker.service

image20200329165025859.png

结合重启错误提示,是代码错误导致的失败

这个一般是由于/etc/docker/daemon.json里面配置有误

正确配置例子

[[email protected] v2]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://njrds9qc.mirror.aliyuncs.com"],
"insecure-registries": ["47.105.95.140:5000"]
}

逗号不能漏

切记切记。。。。。每行是有一个,号作为分隔符。

****======================================end=======================================

重新使用docker push 上传标记的镜像:

image20200329170111351.png

用curl 查看仓库47.105.95.140:5000中的镜像:(为什么不使用docker search 呢?那就自己试一下 )

curl -XGET http://47.105.95.140:5000/v2/fzccms/tags/list  //用curl查看镜像的tag列表
curl -XGET http://47.105.95.140:5000/v2/_catalog  //用curl查看仓库的镜像列表

image20200329200221095.png

***生产服务器私有仓库

现在可以到任意一台能访问到工47.105.95.140 地址的机器去下载这个镜像了。

docker pull 47.105.95.140:5000/fzccms

比较新的Docker 版本对安全性要求较高,会要求仓库支持SSL/TLS 证书。对于内部使
用的私有仓库,可以自行配置证书或关闭对仓库的安全性检查。

首先,修改Docker daemon 的启动参数,添加如下参数,表示信任这个私有仓库,不进行安全证书检查:
DOCKER_OPTS;”-- insecure-registry 47.105.95.140:5000”之后重启Docker 服务,并从私有仓库中下载镜像到本地

如果要使用安全证书,用户也可以从较知名的CA 服务商(如verisign )申请公开的
SSL/TLS 证书,或者使用OpenSSL 等软件来自行生成。