搭建私有镜像仓库

216 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

一、系统资源规划

节点名称系统名称CPU内存网卡磁盘IP地址OS
Registryregistry2C4Gens3364G192.168.0.10CentOS7
Clientclient2C4Gens3364G192.168.0.20CentOS7

二、系统软件安装

如未指定,下述命令在所有节点执行!

1、安装基本软件

yum -y install vim lrzsz

image.png  

2、安装Docker

安装所需的包:

yum -y install yum-utils device-mapper-persistent-data lvm2

image.png 设置稳定存储库:

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

image.png 安装Docker CE:

yum -y install docker-ce

image.png 启动Docker,并设置自启动:

systemctl start docker
systemctl enable docker

image.png

三、系统设置

1、关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

  image.png

2、关闭SELinux

setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

image.png

四、搭建本地Registry(免认证)

1、配置Registry

拉取registry最新镜像:

docker pull registry

image.png 查看本地镜像:

docker images

image.png 创建镜像存贮目录:

mkdir /docker/registry -p

image.png 运行registry:

docker run -itd -v /docker/registry/:/docker/registry -p 5000:5000 --restart=always --name registry registry:latest

image.png 查看运行容器:

docker ps

image.png 参数说明:

1)-itd:在容器中打开伪终端进行交互操作,并在后台运行

2)-v:容器目录与主机目录映射,用于存储镜像

3)-p:容器端口与主机端口映射,用于对外服务

4)--restart=always:指定重启策略

5)--name registry:指定容器名称为registry

6)registry:latest:指定容器镜像

2、配置Clinet

指定registry地址及端口:

vim /etc/docker/daemon.json
{
  "insecure-registries": ["192.168.0.10:5000"]
}

image.png 重启Docker:

systemctl restart docker

image.png 拉取busybox最新镜像:

docker pull busybox

image.png 查看本地镜像:

docker images

image.png 为镜像重新打tag:

docker tag busybox:latest 192.168.0.10:5000/busybox:v1

image.png 查看本地镜像:

docker images

image.png 上传镜像:

docker push 192.168.0.10:5000/busybox:v1

image.png 在Registry上查看上传的镜像:

curl http://localhost:5000/v2/_catalog

image.png 删除Client本地镜像:

docker rmi busybox
docker rmi 192.168.0.10:5000/busybox:v1

image.png 从Registry上拉取镜像:

docker pull 192.168.0.10:5000/busybox:v1

image.png

五、搭建本地Registry(需认证)

1、配置Registry

拉取registry最新镜像:

docker pull registry

image.png 查看本地镜像:

docker images

image.png 创建证书及密钥存贮目录:

mkdir /etc/docker/certs -p

image.png 创建证书及密钥:

openssl req -newkey rsa:4096 -nodes -sha256 -keyout /etc/docker/certs/domain.key -x509 -days 365 -out /etc/docker/certs/domain.crt

image.png 查看证书及密钥:

ll /etc/docker/certs/

image.png 创建认证账号存储目录:

mkdir /etc/docker/auth -p

image.png

docker run --entrypoint htpasswd registry:latest -Bbn user1 123456 > /etc/docker/auth/htpasswd
docker run --entrypoint htpasswd registry:latest -Bbn user2 123456 >> /etc/docker/auth/htpasswd

image.png

cat /etc/docker/auth/htpasswd

image.png 查看所有容器:

docker ps -a

image.png 删除容器:

docker rm bd57ab6689ee bbcee8ebfb6e

image.png 创建镜像存贮目录:

mkdir /docker/registry -p

image.png 运行registry:

docker run -itd -p 5000:5000 --restart=always --name registry -v /etc/docker/auth:/auth -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" -v /etc/docker/certs:/certs -e "REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt" -e "REGISTRY_HTTP_TLS_KEY=/certs/domain.key" registry:latest

image.png 查看运行容器:

docker ps

image.png 参数说明:

1)-itd:在容器中打开伪终端进行交互操作,并在后台运行

2)-v:容器目录与主机目录映射,用于存储镜像

3)-p:容器端口与主机端口映射,用于对外服务

4)--restart=always:指定重启策略

5)--name registry:指定容器名称为registry

6)registry:latest:指定容器镜像

2、配置Clinet

指定registry地址及端口:

vim /etc/docker/daemon.json
{
  "insecure-registries": ["192.168.0.10:5000"]
}

image.png  

重启Docker:

systemctl restart docker

image.png 拉取busybox最新镜像:

docker pull busybox

image.png 查看本地镜像:

docker images

image.png 为镜像重新打tag:

docker tag busybox:latest 192.168.0.10:5000/busybox:v1

image.png 查看本地镜像:

docker images

image.png 登录registry:

docker login 192.168.0.10:5000

image.png 上传镜像:

docker push 192.168.0.10:5000/busybox:v1

image.png 在Registry上查看上传的镜像:

https://192.168.0.10:5000/v2/_catalog

image.png 删除Client本地镜像:

docker rmi busybox
docker rmi 192.168.0.10:5000/busybox:v1

image.png 从Registry上拉取镜像:

docker pull 192.168.0.10:5000/busybox:v1

image.png 登出registry:

docker logout 192.168.0.10:5000

image.png