首页 > 网站 > 建站经验 > 正文

docker创建私有镜像仓库搭建教程

2019-11-02 16:59:59
字体:
来源:转载
供稿:网友

我的环境相关设置如下

环境:centos7

IP地址:10.211.55.30

dockere版本:1.10.3

镜像仓库:v2

首先在10.211.55.30机器上下载registry镜像

$ docker pull registry 

也可以进行镜像导入的方法进行离线的安装。可以去我的网盘中下载:https://pan.baidu.com/s/1jHZlz2u

然后进入Docker中进行导入

$ docker load -i registry.tar 

下载完之后我们通过该镜像启动一个容器

$ docker run -d -p 5000:5000 registry 

默认情况下,会将仓库存放于容器内的/tmp/registry目录下,这样如果容器被删除,则存放于容器中的镜像也会丢失,所以我们一般情况下会指定本地一个目录挂载到容器内的/tmp/registry下,我将/opt/data/registry目录挂载到/tmp/registry目录下,如果你本地没有这个目录需要新创建,同时需要给/opt/data/registry目录扩大权限

chmod +777 /opt/data/registry 

此处有坑:默认情况下是在容器内的/tmp/registry目录下,但是我的容器镜像是存放在容器中的/var/lib/registry  这个位置。
我是搭建完毕之后,上传一个镜像之后然后使用 find / -name ***查到的位置

[root@server01 ~]# docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry 55c60589cb0e2d094d5371c4dd650127cfeae1b361477d50cfe48552e6308830 

可以看到我们启动了一个容器,地址为:10.211.55.30:5000。

测试

接下来我们就要操作把一个本地镜像push到私有仓库中。首先在10.211.55.30机器下pull一个比较小的镜像来测试(此处使用的是busybox)

$ sudo docker pull busybox 

接下来修改一下该镜像的tag,镜像的格式为  镜像仓库IP:端口/镜像名称

$ sudo docker tag busybox 10.211.55.30:5000/busybox 

接下来把打了tag的镜像上传到私有仓库。

$ sudo docker push 10.211.55.30:5000/busybox 

可以看到push失败,具体错误如下:

复制代码 代码如下:
2015/01/05 11:01:17 Error: Invalid registry endpoint https://192.168.112.136:5000/v1/: Get https://192.168.112.136:5000/v1/_ping: dial tcp 192.168.112.136:5000: connection refused. If this private registry supports only HTTP or HTTPS with an unknown CA certificate, please add `--insecure-registry 192.168.112.136:5000` to the daemon's arguments. In the case of HTTPS, if you have access to the registry's CA certificate, no need for the flag; simply place the CA certificate at /etc/docker/certs.d/192.168.112.136:5000/ca.crt 

因为Docker从1.3.X之后,与docker registry交互默认使用的是https,然而此处搭建的私有仓库只提供http服务,所以当与私有仓库交互时就会报上面的错误。为了解决这个问题需要在启动docker server时增加启动参数为默认使用http访问。修改docker启动配置文件(此处是修改10.211.55.30机器的配置)centos7下配置文件地址为:/usr/lib/systemd/system/docker.service,在其中增加insecure-registry 10.211.55.30:5000如下所示:

[Unit] Description=Docker Application Container Engine Documentation=http://docs.docker.com After=network.target rhel-push-plugin.socket Wants=docker-storage-setup.service   [Service] Type=notify NotifyAccess=all EnvironmentFile=-/etc/sysconfig/docker EnvironmentFile=-/etc/sysconfig/docker-storage EnvironmentFile=-/etc/sysconfig/docker-network Environment=GOTRACEBACK=crash ExecStart=/usr/bin/docker-current daemon /      --exec-opt native.cgroupdriver=systemd /      --insecure-registry=10.211.55.30:5000 /      $OPTIONS /      $DOCKER_STORAGE_OPTIONS /      $DOCKER_NETWORK_OPTIONS /      $ADD_REGISTRY /      $BLOCK_REGISTRY /      $INSECURE_REGISTRY LimitNOFILE=1048576 LimitNPROC=1048576 LimitCORE=infinity TimeoutStartSec=0 MountFlags=slave Restart=on-abnormal   [Install] WantedBy=multi-user.target 
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表