1. 程式人生 > >Docker建立私有Registry

Docker建立私有Registry

一、從github上下載registry映象

[[email protected] ~]# docker pull registry

二、建立Docker Registry

[[email protected] ~]# docker run -d -v /home/registry:/var/lib/registry -p 5000:5000 --restart=always --privileged=true --name pirvi_registry registry

#引數說明:
-v 將倉庫存放於容器內的/var/lib/registry目錄下,指定本地目錄掛載到容器
-p 5000:5000 埠對映
--restart=always 在容器退出時總是重啟容器,主要應用在生產環境
--privileged=true 在Centos7中的安全模組selinux把許可權禁掉了,引數給容器加特權,不加上傳映象會報許可權錯誤OSError: [Errno 13] Permission denied: ‘/tmp/registry/repositories/liibrary’)或者(Received unexpected HTTP status: 500 Internal Server Error)錯誤
--name registry 指定容器的名稱

三、建立映象

1、映象命名規範

地址/目錄/映象名稱:版本


地址一般為 IP:PORT 形式

2、構建映象
推薦使用DOCKERFILE

[[email protected] ~]# cat Dockerfile 
FROM centos 
MAINTAINER admin <[email protected]>
ENV TZ "Asia/Shanghai"
RUN rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
EXPOSE 2000
CMD ['--help']

#構建
[
[email protected]
~]# docker build -t 192.168.16.191:5000/test/mycentos:0.0.1 .

三、將映象推送到私有倉庫

[[email protected] ~]# docker push 192.168.16.191:5000/test/mycentos:0.0.1

在這裡插入圖片描述

將映象刪除後,從私有registry中pull

在這裡插入圖片描述

四、遇到的問題

Get https://192.168.16.191:5000/v1/_ping: http: server gave HTTP response to HTTPS client

解決方法:
1、首先在docker的主配置檔案中新增

[[email protected] ~]# cat /etc/default/docker 
DOCKER_OPTS="--insecure-registry 192.168.16.191:5000"

2、其次修改 daemon.json 檔案

[[email protected] ~]# cat /etc/docker/daemon.json 
{
"registry-mirrors": [
"https://2lqq34jg.mirror.aliyuncs.com",
"https://pee6w651.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com"
],
"dns": ["8.8.8.8","8.8.4.4"],
"insecure-registries":["192.168.16.191:5000"]
}

3、重啟 docker 服務

[[email protected] ~]#  systemctl restart docker