docker 私有镜像仓库
2019-05-23 本文已影响0人
lzp1234
前言
构建docker镜像私有仓库
环境
操作系统:centos7
Docker version 18.09
正文
配置基础环境
yum加速源配置
yum install -y wget
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache
docker加速源配置
mkdir /etc/docker
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://jzngeu7d.mirror.aliyuncs.com"]
}
EOF
安装docker
yum install -y yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
yum install docker-ce-18.09.3 -y
systemctl enable docker
防火墙配置
除非你知道怎么配置防火墙,否则此时还是关闭掉。
systemctl disable firewalld
systemctl stop firewalld
systemctl disable iptables
systemctl stop iptables
启动镜像仓库
- 创建镜像存放位置:
mkdir /opt/registry
- 启动仓库
docker run -d -p 5000:5000 -v /opt/registry:/var/lib/registry/docker/registry --restart always --name registry registry:2
管理镜像仓库
将镜像推送到私有仓库
- 更新镜像的tag
从官网拉取一个测试镜像:
docker pull busybox:latest
docker tag busybox:latest 127.0.0.1:5000/busybox:latest
这里的 "busybox:latest" 是指 "镜像名:tag"。"127.0.0.1:5000/" 是仓库的地址。
- 推送镜像到私有仓库
docker push 127.0.0.1:5000/busybox:latest
查看仓库中的镜像
curl <IP>:5000/v2/_catalog
注意替换IP为实际仓库地址
删除私有仓库中的镜像
TODO
删除私有仓库中的镜像某个tag
需要修改配置文件,由于使用的镜像自带的配置文件,因此进入容器(镜像仓库)修改配置文件,配置文件路径:/etc/docker/registry/config.yml
增加如下红框内容:
image.png
修改完毕后,重启容器。
删除镜像的某个tag,包含两个重要信息:镜像名称、tag。
但是在删除操作时,不能直接使用tag,因此其中涉及到一些转换步骤。
- 获取镜像tag对应的digest(类似于id)
curl -I --header "Accept: application/vnd.docker.distribution.manifest.v2+json" <IP>/v2/<image_name>/manifests/<tag>
注意替换IP、image_name、tag。这里的IP就是仓库的地址。
执行成功后,会返回一串信息,其中 Docker-Content-Digest 对应的值就是我们需要的 digest
- 开始删除
curl -I -X DELETE <IP>:5000/v2/<image_name>/manifests/<digest>
注意替换IP、image_name、digest。
可以直接进入镜像存放路径,可以查看到该tag已经不存在。
使用镜像仓库
在搭建好私有仓库以后,接下来就是怎么使用。
在另外一台安装了docker的机器上:
- 首先添加私有仓库信任
默认情况下,无法从来源不明的仓库下载镜像,需要增加一些配置。
vim /etc/docker/daemon.json
,添加如下内容,注意替换ip为自己的仓库地址。
"insecure-registries" : ["192.168.21.210:5000"]
image.png
添加完毕后,重启docker
- 从私有仓库拉取镜像
docker pull 192.168.21.210:5000/busybox:latest
注意替换ip为自己的仓库地址。
此时查看镜像可以看到镜像已经下载下来。