一、安裝Docker
詳細(xì)安裝可以查看 Linux安裝Docker
二、為Docker倉庫設(shè)置賬號密碼
1. 安裝htpasswd 工具
- Ubuntu/Debian
sudo apt install apache2-utils -y
- CentOS/RHEL
sudo yum install httpd-tools -y
# 創(chuàng)建賬號
mkdir -p /home/docker/auth
# 創(chuàng)建密碼
htpasswd -Bbn username password >/home/docker/auth/htpasswd
# 添加其他賬號
htpasswd -Bb /home/docker/auth/htpasswd another_user another_password
# 設(shè)置權(quán)限
chmod 600 /home/docker/auth/htpasswd
- 賬號密碼文件:/home/docker/auth/htpasswd
- user:賬號
- password:密碼
四、registry容器
docker run -d \
-p 5000:5000 \
--restart=always \
--name registry \
-v /home/docker/registry:/var/lib/registry/docker/registry \
-v /home/docker/auth:/auth \
-e REGISTRY_AUTH=htpasswd \
-e REGISTRY_AUTH_HTPASSWD_REALM="Basic Realm" \
-e REGISTRY_AUTH_HTPASSWD_PATH="/auth/htpasswd" \
registry
- -d:指定 Registry 容器在后臺運(yùn)行;
- -p 5000:5000:指定 Registry 容器監(jiān)聽的宿主機(jī)中的端口號以及在容器中使用的端口號
- --restart=always:設(shè)置開機(jī)運(yùn)行
- --name registry:指定容器的名稱
- -v /home/docker/registry:/var/lib/registry:主機(jī)目錄掛載到容器中,這是容器存儲目錄
- -v /home/docker/auth:/auth:主機(jī)目錄掛載到容器中,這是密碼驗(yàn)證
- -e:賬號密碼驗(yàn)證配置
五、安裝Nginx配置 SSL
- CentOS 安裝 nginx
yum install -y nginx
- Ubuntu 安裝 nginx
apt install -y nginx
配置 vim /etc/nginx/conf.d/dockerhub.conf
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name 自己的域名;
#ssl on;
ssl_certificate /etc/nginx/conf.d/key/自己的域名.pem;
ssl_certificate_key /etc/nginx/conf.d/key/自己的域名.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #指定SSL服務(wù)器端支持的協(xié)議版本
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on; #在使用SSLv3和TLS協(xié)議時指定服務(wù)器的加密算法要優(yōu)先于客戶端的加密算法
error_page 497 301 =307 https://$host:$server_port$request_uri;
location / {
proxy_pass http://localhost:5000;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
client_max_body_size 2000M;
}
}
六、測試
找另一臺docker測試機(jī)
root@zngw:~# docker login 域名
Username: 用戶名
Password: 密碼
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credential-stores
Login Succeeded