Docker自建镜像服务器

#Docker安装

apt install docker.io

#1 安装启动 rigistry

docker run --name registry -d -p 5000:5000 --restart=always -v /opt/data/registry:/var/lib/registry registry

#查看镜像清单

docker images

#查看仓库镜像

curl 域名或IP:5000/v2/_catalog

#客户端拉取官方镜像

docker pull nginx

#标记镜像

docker tag nginx:latest 域名或IP/nginx:latest

#上传镜像

docker push 域名或IP/nginx

#默认报错 HTTP和HTTPS
修改客户端 /etc/docker/daemon.json(注意a和e的位置)

{
"insecure-registries":["域名或IP:5000"]
}

#2 至此默认HTTP传输完成,若公网操作,需要使用证书,看下方操作。

#在用户目录下操作
#创建证书目录

mkdir certs

#生成证书,如果有自己的证书,使用自己的证书

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

#启动docker rigistry

docker run -d \
--name registry \
-v "$(pwd)"/certs:/certs \
-v /opt/data/registry:/var/lib/registry \
-e REGISTRY_HTTP_ADDR=0.0.0.0:5000 \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/docker.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/docker.key \
-p 5000:5000\
--restart=always \
registry

#证书拷贝至客户端电脑

mkdir /etc/docker/certs.d/域名/
cp docker.crt /etc/docker/certs.d/域名/ca.crt

#重启Docker

systemctl daemon-reload
systemctl restart docker

#3 账户密码登陆 docker login

docker stop dockername
docker rm dockername

#创建保存密码的文件

mkdir /opt/data/auth

cd /opt/data

 

#创建htpasswd账户和密码

htpasswd -cB auth/htpasswd admin #添加管理,注意参数,第一个带c,第二个不带

htpasswd -B auth/htpasswd user #添加用户

 

#启动容器

docker run -d -p 5000:5000 --restart=always --name registry \
-v /opt/data/registry:/var/lib/registry \
-v /opt/data/auth:/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
registry

#登陆

Docker login 域名或IP

#上传

Docker pull 域名或IP:5000/nginx

发表回复

登录... 后才能评论