docker-ce私有仓库搭建

说明:本文中私有仓库的ip地址为10.10.172.203:5000,操作系统为CentOS7.2;

服务端:10.10.172.203/24

1、从Docker官方仓库里下载registry镜像

# docker pull registry

2、docker images命令查看本地镜像;

[[email protected] ~]# docker images  
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
registry            latest              d1fd7d86a825        2 weeks ago         33.3MB

默认情况下,会将私有仓库存放于容器内的/tmp/registry目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失。

所以一般情况下会指定本地一个目录挂载到容器内的/tmp/registry下,命令如下:

docker run -d -it --restart always --name docker-hub -p 5000:5000 -v /docker-hub/registry:/var/lib/registry registry

查看容器运行

[[email protected] ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
048805afbcf1        registry            "/entrypoint.sh /etc…"   11 seconds ago      Up 8 seconds        0.0.0.0:5000->5000/tcp   docker-hub

由上可以看到,已经启动了一个容器,地址为:10.10.172.203:5000。

3、由于仓库与客户端的https问题,需要修改/usr/lib/systemd/system/docker.service文件,添加 ExecStart=/usr/bin/dockerd --registry-mirror=http://019a7061.m.daocloud.io  --insecure-registry 10.10.172.203:5000

[[email protected] ~]# cat /usr/lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd --storage-driver=devicemapper --storage-opt=dm.thinpooldev=/dev/mapper/docker-thinpool --storage-opt dm.use_deferred_removal=true --registry-mirror=http://019a7061.m.daocloud.io  --insecure-registry 10.10.172.203:5000
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target
[[email protected] ~]# 

或者

[[email protected] ~]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["http://df98fb04.m.daocloud.io"],
"insecure-registries":["10.10.172.203:5000"] 

}
[[email protected] ~]#

重新加载docker服务
[[email protected]ocker ~]# systemctl daemon-reload
[[email protected] ~]# systemctl restart docker 

注:因为Docker从1.3.X之后,与docker registry交互默认使用的是https,然而此处搭建的私有仓库只提供http服务,所以当与私有仓库交互时就会报上面的错误。
为了解决这个问题需要在启动docker server时增加启动参数为默认使用http访问。
需要在docker的配置文件/etc/sysconfig/docker (ubuntu系统中的docker配置文件时/etc/default/docker )添加参数“--insecure-registry=10.10.172.203:5000”。

温馨提示:
这个是在客户机的docker配置文件里添加的(即上传镜像到私有仓库里或从私有仓库下载镜像的客户机)。

4、重新启动docker。(如果是在虚拟机中运行,重启一下虚拟机,要不然还是使用其他机器访问此仓库还是会有https的问题)

# systemctl restart docker

5、docker tag将镜像打tag,语法格式如下

docker tag <image_name> <registry_ip>:5000/<image_name>:<version>
# docker tag centos:latest 10.10.172.203:5000/centos7    //修改了tag后的镜像若要删除,docker rmi后面不能用镜像ID了,需要用docker rmi 10.10.172.203:5000/centos7:latest
[[email protected] ~]# docker images
REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
registry                     latest              d1fd7d86a825        3 weeks ago         33.3MB
10.10.172.203:5000/centos7   latest              ff426288ea90        3 weeks ago         207MB
centos                       latest              ff426288ea90        3 weeks ago         207MB

6、镜像的上传与下载,语法格式如下

docker push <registry_ip>:5000/<image_name>:<version>;上传镜像至私有仓库
docker pull <registry_ip>:5000/<image_name>:<version>;从私有仓库pull镜像
# docker push 10.10.172.203:5000/centos7
[[email protected] ~]# docker push 10.10.172.203:5000/centos7
The push refers to repository [10.10.172.203:5000/centos7]
e15afa4858b6: Pushed 
latest: digest: sha256:7e94d6055269edb455bcfb637292573117e4a8341e9b9abbc09b17d8aafe8fbe size: 529
[[email protected] ~]#

7、使用curl 10.10.172.203:5000/v2/_catalog 查看仓库中的镜像情况

[[email protected] ~]# curl 10.10.172.203:5000/v2/_catalog
{"repositories":["centos7"]}
[[email protected] ~]#

注意查看镜像方法(docker pull registry:2.1.1):

# curl -XGET http://registry_ip:5000/v2/_catalog
# curl -XGET http://registry_ip:5000/v2/image_name/tags/list

客户端下载私有仓库镜像:

  1. 配置docker信任私有仓库地址(http)
[[email protected] ~]# cat /etc/docker/daemon.json 
{
"registry-mirrors": ["http://df98fb04.m.daocloud.io"],
"insecure-registries":["10.10.172.203:5000"]
}


2.查看客户端本机镜像列表

[[email protected] ~]# docker images               
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              ff426288ea90        3 weeks ago         207MB

3.从私有仓库下载centos镜像

[[email protected] ~]# docker pull 10.10.172.203:5000/centos7
Using default tag: latest
latest: Pulling from centos7
Digest: sha256:7e94d6055269edb455bcfb637292573117e4a8341e9b9abbc09b17d8aafe8fbe
Status: Downloaded newer image for 10.10.172.203:5000/centos7:latest

4.再次查看客户端本机镜像列表

[[email protected] ~]# docker images
REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
10.10.172.203:5000/centos7   latest              ff426288ea90        3 weeks ago         207MB
centos                       latest              ff426288ea90        3 weeks ago         207MB
[[email protected] ~]#

总结:使用企业内部私有镜像仓库中的镜像,大大节省了镜像下载的时间。

原文地址:http://blog.51cto.com/dengaosky/2067156

时间: 2024-10-09 17:31:58

docker-ce私有仓库搭建的相关文章

Docker 之 私有仓库搭建

1  概述 本文将介绍两种方法搭建docker私有仓库:基于docker-distribution  和  基于 harbor 搭建 2  基于docker-distribution 的搭建 docker-distribution用于构建docker仓库私服,安装docker-distribution包,在extras仓库里 yum -y install docker-distribution 查看安装文件 [[email protected] ~]# rpm -ql docker-distri

Centos7 Docker私有仓库搭建

Centos7 Docker私有仓库搭建 仓库:集中存放镜像的地方,可分为公共仓库和私有仓库(公共仓库"http://hub.docker.com"或国内的"http://www.daocloud.io") 注册服务器才是存放仓库具体的服务器(Registry),每个服务器上都可以放置多个仓库,而每个仓库上可以放置多个镜像,每个镜像上可以运行多个容器,每个容器上可以跑一个应用或应用组 原文地址:http://blog.51cto.com/13043516/21202

拥抱 Android Studio 之四:Maven 仓库使用与私有仓库搭建

使用.创造和分享 笔者曾经不思量力的思考过『是什么推动了互联网技术的快速发展?』这种伟大的命题.结论是,除了摩尔定律之外,技术经验的快速积累和广泛分享,也是重要的原因. 有人戏称,『写 Java,首先要学会选包』,在这里不好评论对错.不过这句话里面,至少包含两层意思:首先 Java 有大量的现成的依赖包,不必要自己造轮子:其次,Java 的包存放较为集中,集成方式也方便. 笔者从事 Android 和 Java 开发以来,经历了几个阶段: 闭门造轮子 > 使用别人的轮子 > 开门造轮子 >

.NETCore 实现容器化Docker与私有镜像仓库管理

原文:.NETCore 实现容器化Docker与私有镜像仓库管理 一.Docker介绍 Docker是用Go语言编写基于Linux操作系统的一些特性开发的,其提供了操作系统级别的抽象,是一种容器管理技术,它隔离了应用程序对基础架构(操作系统等)的依赖.相较于虚拟机而言,Docker共享的是宿主机的硬件资源,使用容器来提供独立的运行环境来运行应用.虚拟机则是基于Supervisor(虚拟机管理程序)使用虚拟化技术来提供隔离的虚拟机,在虚拟机的操作系统上提供运行环境!虽然两者都提供了很好的资源隔离,

使用dockerfile-maven-plugin发布docker到私有仓库

要想拥有私有docker仓库,需要安装registry镜像,最新版时2.0,具体可以看文档:https://docs.docker.com/registry/. 1. docker pull registry 2. docker run -d -p 5000:5000 --restart=always --name registry registry:2 使用http://localhost:5000/v2/测试,返回"{}",表示安装成功. 使用maven命令(mvn clean p

Docker 构建私有镜像仓库(6)

title: Docker 构建私有镜像仓库(6) date: 2018-12-18 08:47:27 tags: Docker categories: Docker copyright: true --- Docker是基于Go语言实现的开源容器项目,Docker让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口,Docker诞生于2013年年初,最初发起者是dotCloud公司.

Docker CE安装及配置国内镜像加速教程

Docker CE安装教程 一.版本说明 2017年2月份,Docker公司发布了全新的Docker版本:V1.13.0.从2017年3月1号开始,Docker的版本命名发生如下变化: 项目 说明 版本格式 YY.MM stable版本 每个季度发行 edge版本 每个月发行 同时将Docker分成CE和EE 2个版本.CE版本即社区版(免费,支持周期三个月),EE即企业版,强调安全,付费使用. Docker 会每月发布一个 edge 版本(17.03, 17.04, 17.05...),每三个

docker创建私有仓库

1.查看远程仓库中的列表$ sudo docker search registry    //会列出你所需要的仓库 2.获取registry仓库$ sudo docker pull registry   //最新 3.运行 $ sudo docker run -p 5000:5000  docker.io/registry   //-p映射端口 3.1查看容器运行情况[[email protected] docker]# docker psCONTAINER ID        IMAGE   

Docker EE/Docker CE简介与版本规划

近日,Docker发布了Docker 17.03.进入Docker 17时代后,Docker分成了两个版本:Docker EE和Docker CE,即:企业版(EE)和社区版(CE).那么这两个版本有什么区别呢?不仅如此,Docker进入17.03后,版本命名方式跟之前完全不同,以后Docker又会有怎样的版本迭代计划呢?本文将为您一一解答. 版本区别 Docker EE Docker EE由公司支持,可在经过认证的操作系统和云提供商中使用,并可运行来自Docker Store的.经过认证的容器

(转) Docker EE/Docker CE简介与版本规划

随着Docker的不断流行与发展,docker公司(或称为组织)也开启了商业化之路,Docker 从 17.03版本之后分为 CE(Community Edition) 和 EE(Enterprise Edition).我们来看看他们之前的区别于联系. 原文链接:http://itmuch.com/docker/docker-1/ 版本区别 Docker EE Docker EE由公司支持,可在经过认证的操作系统和云提供商中使用,并可运行来自Docker Store的.经过认证的容器和插件. D