Docker私有仓库搭建与mac上使用

Docker私有仓库搭建与使用

  • 准备工作
  • 仓库服务器 ubuntu
    • 生成证书
    • 启动
  • 客户端证书配置
  • 仓库使用
  • 配置登陆认证
  • 使用Harbor搭建私有仓库

官方文档

准备工作

两台服务器:此处使用一台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在有些低版本不会生效

仓库服务器 ubuntu

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里面配置私有仓库地址
Docker私有仓库搭建与mac上使用_第1张图片
选择 Preferences,进入再选择Deamon栏目,在Insecure registries配置远程仓库地址,windows也类似需要在windows的gui上配置
Docker私有仓库搭建与mac上使用_第2张图片

仓库使用

在把本地镜像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.
参考文档

使用Harbor搭建私有仓库

另一种私有仓库的搭建方法(推荐)
观摩这位大佬

你可能感兴趣的:(中间件)