老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

Docker容器沒有權限寫入宿主機目錄的解決方案

在應用docker容器的時候,更多的時候我們會把宿主機的目錄掛載到docker容器中。

成都創新互聯2013年至今,是專業互聯網技術服務公司,擁有項目成都網站制作、網站建設網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元建水做網站,已為上家服務,為建水各地企業和個人服務,聯系電話:18980820575

在宿主機的文件夾權限隸屬于root時,我們需要將文件夾的權限用戶進行 chown 設置,才能保證目錄的內容的正常寫入,

下面是一個例子:

使用的是docker版本的jenkins,運行后,出現如下錯誤:

[root@localhost CICD]# docker logs -f jenkins touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission deniedCan not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?

我jenkins掛載的目錄是 /opt/jenkins/xxxxx,root 用戶創建,而 jenkins user的uid為1000

所以需要進行 chown 設置,如下:

sudo chown -R 1000:1000 /opt/jenkins

然后重啟容器,錯誤就沒有了。

補充:介紹兩種從 Docker 容器寫入卷時的文件權限處理方式

說在前面

容器常常用作原生安裝工具的替代品。在主機上使用具有所需版本的容器要比使用過時的工具好的多。但是,只要容器與主機系統進行交互,文件會留下錯誤或損壞的權限。

幸運的是,解決該問題的方法并不需要使用腳本。

問題描述

當容器掛載一個本地目錄并將文件寫入其中時,其所有權由容器內的用戶決定:

nicholas@host:~/source$ mkdir sourcenicholas@host:~/source$ docker run -it --rm --volume $(pwd):/source --workdir /source ubunturoot@a031d11c9515:/source# mkdir subdirroot@a031d11c9515:/source# touch subdir/newfileroot@a031d11c9515:/source# exitexitnicholas@host:~/source$ ls -lR.:total 4drwxr-xr-x 2 root root 4096 Jul 16 19:35 subdir ./subdir:total 0-rw-r--r-- 1 root root 0 Jul 16 19:35 newfilenicholas@host:~/source$ rm -rf subdir/rm: cannot remove 'subdir/newfile': Permission denied

另外,您還可能無法刪除這些目錄和擁有錯誤所有權的文件。

解決方案1:從容器中刪除

一個非常常見的解決方案是從容器內部更改文件和目錄的所有權:

nicholas@host:~/source$ docker run -it --rm --volume $(pwd):/source --workdir /source ubunturoot@d1c3bee8bb2b:/source# ls -altotal 12drwxrwxr-x 3 1000 1004 4096 Jul 16 19:35 .drwxr-xr-x 1 root root 4096 Jul 16 19:39 ..drwxr-xr-x 2 root root 4096 Jul 16 19:35 subdirroot@d1c3bee8bb2b:/source# chown 1000:1000 subdir/ -Rroot@d1c3bee8bb2b:/source# ls -ltotal 4drwxr-xr-x 2 1000 1000 4096 Jul 16 19:35 subdirroot@d1c3bee8bb2b:/source# exitexitnicholas@host:~/source$ ls -ltotal 4drwxr-xr-x 2 nicholas lpadmin 4096 Jul 16 19:35 subdirnicholas@host:~/source$

這種方法的缺點是需要添加額外的邏輯,以及您需要知道運行該容器用戶的用戶 ID 和組 ID。

解決方案2:創建擁有正確所有權的文件

第二種解決方案更簡潔,它將使用容器內的正確所有權創建文件和目錄。Docker 提供了一個參數來設置容器內用戶的用戶 ID 和組 ID:

nicholas@host:~/source$ docker run -it --rm --volume $(pwd):/source --workdir /source --user $(id -u):$(id -g) ubuntugroups: cannot find name for group ID 1004I have no name!@bf7f355f3b65:/source$ touch newfileI have no name!@bf7f355f3b65:/source$ exitexitnicholas@host:~/source$ ls -ltotal 4-rw-r--r-- 1 nicholas nicholas 0 Jul 16 19:42 newfiledrwxr-xr-x 2 nicholas lpadmin 4096 Jul 16 19:35 subdirnicholas@host:~/source$

這種方法可以很好的幫您解決用戶 ID 和組 ID 的錯誤。

請注意,出于安全目的,在容器內以 root 身份運行是最糟糕的做法。Dockerfile 應始終使用 USER 指令從而避免直接使用 root 權限。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。


網站標題:Docker容器沒有權限寫入宿主機目錄的解決方案
轉載來源:http://www.xueling.net.cn/article/epheos.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 亚洲丰满多毛的隂户 | 男女黄色一级片 | 久色欧美| 国产无套码AⅤ在线观看在线播放 | 国产免费视频一区二区三区 | 少妇又紧又深又湿又爽视频 | 欧美setu | 久草热8精品视频在线观看 色噜噜成人av | 好男人社区WWW在线观看 | 欧美日韩国产超高清免费看片 | 国产精品成熟老妇女 | 娇小1213╳yⅹ╳毛片 | 女高中生自慰污污网站 | A毛片终身免费观看网站 | 人妻中文字幕乱人伦在线 | 中文字幕av网 | 国内国内在线自偷第68页 | 久久久久网站 | 国产裸拍裸体视频在线观看 | 国产百合互慰无码视频 | 骚妇BB双飞插 | 铠甲勇士免费观看 | 亚洲第一色网 | 成人在线观看免费网站 | 人妻体验按摩到忍不住哀求继续 | 中文字幕欧美久久日高清 | 欧美四级片 | 天天操夜夜操狠狠操 | 国产孕妇视频在线播放 | 日韩小视频网站hq | 午夜香吻免费观看视频在线播放 | XXX波多野结衣苍井空 | 精品久久久久久无码中文字幕一区 | 宅男精品一区在线观看 | 国产精品乱码久久久久 | 亚洲一区二区三区偷拍女厕 | 久草视频网 | 久久99国产一区二区三区 | 精品亚洲一区二区三区四区五区 | 四虎综合网 | 天天综合视频网 |