天天看點

nginx-photon更新到2.3.1前提一、更新到nginx-photon1.8.6二、更新到nginx-photon2.3.1三、總結

前提

harbor1.5.1裡面的nginx-photon的是1.5.1,安全側發現nginx存在漏洞,需要更新。

一、更新到nginx-photon1.8.6

1、在dockerhub官網下載下傳nginx-photon1.8.6。

2、修改docker-compose.yml,修改nginx-photon1.5.1為nginx-photon1.8.6。

3、重新開機harbor

docker-compose down -v

docker-compose up -d

二、更新到nginx-photon2.3.1

1、在dockerhub官網下載下傳nginx-photon2.3.1。

2、修改docker-compose.yml,修改nginx-photon1.5.1為nginx-photon2.3.1。

3、重新開機harbor

docker-compose down -v

docker-compose up -d

報錯了,提示“nginx: [emerg] open() “/etc/nginx/nginx.conf” failed (13: Permission denied)” 或者 “ [emerg] 1#0: bind() to 0.0.0.0:443 failed (13: Permission denied)”

解決:嘗試1,失敗

chmod修改權限 或者在root使用者下, 或者使用sudo,均失敗

解決:嘗試2,失敗

nginx.conf裡面配置user, 失敗

添加

user root;

或者

user nginx root;

解決:嘗試3,失敗

修改docker-compose.yml,注釋cap_drop,然後cap_add添加ALL權限,依然不行

cap_drop:
  - ALL
cap_add:
  - CHOWN
  - SETGID
  - SETUID
  - NET_BIND_SERVICE
           

改為

#cap_drop:
#  - ALL
cap_add:
  - ALL
#  - CHOWN
#  - SETGID
#  - SETUID
#  - NET_BIND_SERVICE
           

解決:嘗試4,失敗

修改docker-compose.yml,添加privileged: true提高權限,仍然不行

cap_drop:
  - ALL
cap_add:
  - CHOWN
  - SETGID
  - SETUID
  - NET_BIND_SERVICE
           

改為

privileged: true
#cap_drop:
#  - ALL
cap_add:
  - ALL
#  - CHOWN
#  - SETGID
#  - SETUID
#  - NET_BIND_SERVICE
           

解決:嘗試5,失敗

谷歌一圈,找到大神的方法,試了,仍然不行

CURRENT_UID= ( i d − u ) : (id -u): (id−u):(id -g) docker-compose up -d

解決:嘗試6,成功

修改docker-compose.yml,添加user: “0:0” ,是可以的。

cap_drop:
  - ALL
cap_add:
  - CHOWN
  - SETGID
  - SETUID
  - NET_BIND_SERVICE
           

改為

user: "0:0"
cap_drop:
  - ALL
cap_add:
  - CHOWN
  - SETGID
  - SETUID
  - NET_BIND_SERVICE
           

三、總結

1、nginx-photon自1.9之後,其docker鏡像裡面多了“user nginx"。 解決思路就是想辦法使得nginx-photon獲得root權限。

新的nginx-photon:v2.3.1, 有“user nginx"

nginx-photon更新到2.3.1前提一、更新到nginx-photon1.8.6二、更新到nginx-photon2.3.1三、總結

2、 不明白為什麼privileged: true、cap_add添加ALL,均失敗了。

最終使用user: “0:0”,獲得root權限成功。