Cenots7安装docker私有仓库,配置ssl证书及用户密码认证
安装docker(服务仓库端跟客户端)
1、Docker 要求 CentOS 系统的内核版本高于 3.10
查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。
uname -r
2、使用 root 权限登录 Centos。确保 yum 包更新到最新。
sudo yum update
3、卸载旧版本(如果安装过旧版本的话)
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
4、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
5、设置yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
6、可以查看所有仓库中所有docker版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r
7、安装docker,版本号自选
yum install docker-ce-20.10.12-3.el7 docker-ce-cli-20.10.12-3.el7 containerd.io
8、修改默认配置文件
vim /etc/docker/daemon.json
{
## harbor私服的地址,不加可能会无法登录
"insecure-registries": ["http://192.168.0.1:7000"],
"registry-mirrors": ["http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn"],
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
## 可加可不加
"storage-driver": "overlay2",
## 默认是存放在/var/lib/docker/overlay2,容易爆,可以改到机械去
"data-root": "/data/dockerimages"
}
修改完后,启动并加入开机启动
sudo systemctl start docker
sudo systemctl status docker
sudo systemctl enable docker
9、验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
docker version
使用openssl生成证书
1、新建文件夹/home/registry/certs
2、创建服务器证书密钥文件server.key,会提示输入密码,确认密码,用于管理证书使用,一要要记住,后面会用到。
openssl genrsa -des3 -out server.key 1024
3、创建服务器证书证书签名申请文件server.csr
openssl req -new -key server.key -out server.csr
输出内容为:
Enter pass phrase for root.key: ← 输入第一步创建的密码
Country Name (2 letter code) [AU]:CN ← 国家代号,中国输入CN
State or Province Name (full name) [Some-State]:BeiJing ← 省的全名,拼音
Locality Name (eg, city) []:BeiJing ← 市的全名,拼音
Organization Name (eg, company) [Internet Widgits Pty Ltd]: ← 公司英文名
Organizational Unit Name (eg, section) []: ← 可以不输入
Common Name (eg, YOUR name) []: ← 可以不输入
Email Address []: ← 电子邮箱,可随意填
Please enter the following ‘extra’ attributes
to be sent with your certificate request
A challenge password []: ← 可以不输入
An optional company name []: ← 可以不输入
4、先备份一份私钥文件server.key.ori
cp server.key server.key.ori
5、server.key.ori去除文件口令
openssl rsa -in server.key.ori -out server.key
6、别名IP配置extfile.cnf,如果本地配置的服务之后需要使用IP访问https的服务,需要此步
echo subjectAltName = IP:本机外网IP > extfile.cnf
7、生成证书文件server.crt
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt -extfile extfile.cnf
8、设置用户名&密码
docker run --entrypoint htpasswd registry -Bbn test 1 > /home/registry/auth/htpasswd
# 如果报错尝试第二种
$ yum -y install httpd
$ htpasswd -Bbn test 123456 > /home/registry/auth/htpasswd
9、运行registry并指定参数。包括了用户密码文件和CA书位置。–restart=always 始终自动重启
docker run -d -p 7000:7000 --restart=always --name registry \
-v /home/registry/auth:/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \
-v /home/registry/certs:/certs \
-e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
-e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
registry
10、登录和登出
docker login 192.168.0.1:7000 -u uesr -p password
docker logout 192.168.0.1:7000
11、其他要用docker私服的客户端需要先配置证书
即:/etc/docker/certs.d/目录新建/192.168.0.1:7000/添加证书server.crt
systemctl restart docker
Over。