搭建私有镜像仓库
一、系统资源规划
节点名称 | 系统名称 | CPU | 内存 | 网卡 | 磁盘 | IP地址 | OS |
---|---|---|---|---|---|---|---|
Registry | registry | 2C | 4G | ens33 | 64G | 192.168.0.10 | CentOS7 |
Client | client | 2C | 4G | ens33 | 64G | 192.168.0.20 | CentOS7 |
二、系统软件安装
如未指定,下述命令在所有节点执行!
1、安装基本软件
yum -y install vim lrzsz
2、安装Docker
安装所需的包:
yum -y install yum-utils device-mapper-persistent-data lvm2
设置稳定存储库:
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装Docker CE:
yum -y install docker-ce
启动Docker,并设置自启动:
systemctl start docker
systemctl enable docker
三、系统设置
1、关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
2、关闭SELinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
四、搭建本地Registry(免认证)
1、配置Registry
拉取registry最新镜像:
docker pull registry
查看本地镜像:
docker images
创建镜像存贮目录:
mkdir /docker/registry -p
运行registry:
docker run -itd -v /docker/registry/:/docker/registry -p 5000:5000 --restart=always --name registry registry:latest
查看运行容器:
docker ps
参数说明:
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"]
}
重启Docker:
systemctl restart docker
拉取busybox最新镜像:
docker pull busybox
查看本地镜像:
docker images
为镜像重新打tag:
docker tag busybox:latest 192.168.0.10:5000/busybox:v1
查看本地镜像:
docker images
上传镜像:
docker push 192.168.0.10:5000/busybox:v1
在Registry上查看上传的镜像:
curl http://localhost:5000/v2/_catalog
删除Client本地镜像:
docker rmi busybox
docker rmi 192.168.0.10:5000/busybox:v1
从Registry上拉取镜像:
docker pull 192.168.0.10:5000/busybox:v1
五、搭建本地Registry(需认证)
1、配置Registry
拉取registry最新镜像:
docker pull registry
查看本地镜像:
docker images
创建证书及密钥存贮目录:
mkdir /etc/docker/certs -p
创建证书及密钥:
openssl req -newkey rsa:4096 -nodes -sha256 -keyout /etc/docker/certs/domain.key -x509 -days 365 -out /etc/docker/certs/domain.crt
查看证书及密钥:
ll /etc/docker/certs/
创建认证账号存储目录:
mkdir /etc/docker/auth -p
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
cat /etc/docker/auth/htpasswd
查看所有容器:
docker ps -a
删除容器:
docker rm bd57ab6689ee bbcee8ebfb6e
创建镜像存贮目录:
mkdir /docker/registry -p
运行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
查看运行容器:
docker ps
参数说明:
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"]
}
重启Docker:
systemctl restart docker
拉取busybox最新镜像:
docker pull busybox
查看本地镜像:
docker images
为镜像重新打tag:
docker tag busybox:latest 192.168.0.10:5000/busybox:v1
查看本地镜像:
docker images
登录registry:
docker login 192.168.0.10:5000
上传镜像:
docker push 192.168.0.10:5000/busybox:v1
在Registry上查看上传的镜像:
https://localhost:5000/v2/_catalog
删除Client本地镜像:
docker rmi busybox
docker rmi 192.168.0.10:5000/busybox:v1
从Registry上拉取镜像:
docker pull 192.168.0.10:5000/busybox:v1
登出registry:
docker logout 192.168.0.10:5000