官方文档
两台服务器:此处使用一台ubuntu作为仓库,一台mac作为使用者
服务器 | ip | docker版本 |
---|---|---|
ubuntu | 192.168.10.1 | Docker version 18.09.7 |
macOS Mojave | 192.168.10.2 | Docker version 19.03.1 |
保持两台机器docker版本不要太低,因为daemon.json在有些低版本不会生效
docker 安装好后需要获取官方提供的registry
镜像
推荐使用registry:2
直接pull registry:lastest
其实也是registry:2
# 拉取的是同一个镜像
docker pull registry:2
docker pull registry:lastest
由于registry:2
要求使用https访问,所以接下来需要自行签发签字证书
使用openssl
进行签发,签发给repository.fehead.com
(此处也推荐使用registry
前缀)
此处将证书存放在/root/certs
cd /root/certs
# 生成key文
openssl genrsa -out repository.fehead.com.key 2048
# 生成crt
openssl req -newkey rsa:4096 -nodes -sha256 -keyout repository.fehead.com.key -x509 -days 365 -out repository.fehead.com.crt
然后会填写信息
Country Name (2 letter code) [XX]:CN # 你的国家名称
State or Province Name (full name) []:shanxi # 省份
Locality Name (eg, city) [Default City]:xi'an # 所在城市
Organization Name (eg, company) [Default Company Ltd]:fehead # 组织名称
Organizational Unit Name (eg, section) []:develope # 组织单元名称
Common Name (eg, your name or your server's hostname) []:repository.fehead.com # 域名
由于是自己签发的证书,不受docker信任,所以需要将证书放入docker的证书中
centOS 和 ubuntu的目录都在/etc/docker/certs.d/域名
需要把生成的证书.crt
文件放进去
mkdir -p /etc/docker/certs.s/repository.fehead.com
cp /root/certs/repository.fehead.com.crt /etc/docker/certs.s/repository.fehead.com/
# 端口可以映射为https端口443,也可以使用registry一样的端口5000
docker run -d -p 5000:5000 --restart=always --name registry
-v /root/certs:/certs # 挂载机器的证书目录到容器的“/certs”
-v /home/docker_registry/images:/opt/docker-image # 镜像存储目录
-e STORAGE_PATH=/opt/docker-image # 注意此处指定的地址是容器内存储镜像的路径
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/repository.fehead.com.crt # 指定容器内证书文件
-e REGISTRY_HTTP_TLS_KEY=/certs/repository.fehead.com.key # 指定容器内key文件
registry:2
客户端如果是centos和ubuntu,可以按照服务端的docker证书路径进行存放:
mkdir -p /etc/docker/certs.s/repository.fehead.com
scp [email protected]:/root/certs/repository.fehead.com.crt /etc/docker/certs.s/repository.fehead.com/
mac和windows不需要配置证书
但要在docker desktop
里面配置私有仓库地址
选择 Preferences,进入再选择Deamon栏目,在Insecure registries配置远程仓库地址,windows也类似需要在windows的gui上配置
在把本地镜像push到仓库中
docker tag lmwis/docker-test:1.0 repository.fehead.com:5000/lmwis/docker-test:1.0
docker push repository.fehead.com/lmwis/docker-test:1.0
拉取私有仓库镜像
docker pull repository.fehead.com/lmwis/docker-test:1.0
Done.
先保证原有仓库关闭状态
安装AB压力测试工具,ubuntu和centos安装有些不一样
ubuntu
sudo apt-get install apache2-utils
如果不行就先更新apt-get
sudo apt-get update
centos 使用yum安装
yum install httpd-tools
在仓库端创建密码文件
cd /root
mkdir auth
htpasswd -Bbn testuser testpassword > auth/htpasswd
然后再启动容器,这次加了几个参数
docker run -d -p 5000:5000 --restart=always --name registry
-v /root/certs:/certs # 挂载机器的证书目录到容器的“/certs”
-v /home/docker_registry/images:/opt/docker-image # 镜像存储目录
-e STORAGE_PATH=/opt/docker-image # 注意此处指定的地址是容器内存储镜像的路径
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/repository.fehead.com.crt # 指定容器内证书文件
-e REGISTRY_HTTP_TLS_KEY=/certs/repository.fehead.com.key # 指定容器内key文件
-v /root/auth:/auth
-e "REGISTRY_AUTH=htpasswd"
-e "REGISTRY_AUTH_HTPASSWD_REALM=lmwis" # 这个右边可以改 其他的无序改动
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd
registry:2
完成。之后进行push和pull操作的时候需要先登陆
docker login repository.fehead.com
Done.
参考文档
另一种私有仓库的搭建方法(推荐)
观摩这位大佬