Docker建立私有Registry
阿新 • • 發佈:2018-11-07
一、從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