###### tags: `issue` `docker` # Docker Issue ## 檔案 / 資料夾權限 ### 錯誤說明 container 內如果使用者群組和 container 外部使用者群組不同而造成離開 container 後沒有修改權限時使用以下指令修改擁有者和擁有者群組 ### 解決方式 #### 修改`檔案` 權限 ```bash= $ sudo chown {owner_name}:{owner_group} {filename} ``` - chown: 更改擁有者的指令 (change owner 的縮寫) - {owner_name}: 檔案的新擁有者 - {owner_group}: 檔案的新擁有者群組 - {filename}: 要變更權限的檔案 :::info - 如果只要變更擁有者可以不用加後面的 `:{owner_group}` - 如果只要變更擁有者群組只要寫 `:{owner_group}` 不用加前面的 `{owner_name}` ::: :::success 例如 ~~~bash= ! $ sudo chown jimmy:jimmy_group file.txt ~~~ 就是把 `file.txt` 這個檔案的擁有者改變為 `jimmy`,並把擁有者群組改變為 `jimmy_group` --- ~~~bash= ! $ sudo chown jimmy file.txt ~~~ 就是把 `file.txt` 這個檔案的擁有者改變為 `jimmy` --- ~~~bash= ! $ sudo chown :jimmy_group file.txt ~~~ 就是把 `file.txt` 這個檔案的擁有者群組改變為 `jimmy_group`,特別要注意前面的 `:` 不能少 ::: --- #### 修改 `資料夾及以下所有檔案` 權限 ```bash= ! $ sudo chown -R {owner_name}:{owner_group} {folder_name} ``` - chown: 更改擁有者的指令 (change owner 的縮寫) - {owner_name}: 資料夾的新擁有者 - {owner_group}: 資料夾的新擁有者群組 - {folder_name}: 要變更權限的資料夾 :::info - 如果只要變更擁有者可以不用加後面的 `:{owner_group}` - 如果只要變更擁有者群組只要寫 `:{owner_group}` 不用加前面的 `{owner_name}` ::: :::success 例如 ~~~bash= ! $ sudo chown -R jimmy:jimmy_group folder ~~~ 就是把 `folder` 這個資料夾的擁有者改變為 `jimmy`,並把擁有者群組改變為 `jimmy_group` --- ~~~bash= ! $ sudo chown -R jimmy folder ~~~ 就是把 `folder` 這個資料夾的擁有者改變為 `jimmy` --- ~~~bash= ! $ sudo chown -R :jimmy_group folder ~~~ 就是把 `folder` 這個資料夾的擁有者群組改變為 `jimmy_group`,特別要注意前面的 `:` 不能少 ::: --- ## 如果遇到 `No CMAKE_CXX_COMPILER could be found.` ### 錯誤說明 缺乏相依套件 ### 解決方式 ~~~bash= ! $ apt-get update && apt-get -y install build-essential ~~~ --- ## 如果遇到 `Could NOT find CUDA (missing: CUDA_TOOLKIT_ROOT_DIR CUDA_NVCC_EXECUTABLE CUDA_INCLUDE_DIRS CUDA_CUDART_LIBRARY)` ### 錯誤說明 因為是使用 `runtime` 的輕量執行版本,沒有指定的 NVCC 套件 ### 解決方式 有 2 種方式: 1. 安裝 `nvidia-cuda-toolkit` (不推薦,安裝 `devel` 才是比較好的解決方式) ~~~bash= ! $ apt-get update && apt-get install nvidia-cuda-toolkit ~~~ 2. 使用 `nvidia-docker` 的 `devel` 版本 (Recommended) --- ## 如果安裝 `opencv-python` 出現問題 ### 錯誤說明 缺乏相依套件 ### 解決方式 ~~~bash= ! $ apt-get update && apt-get install -y libgl1-mesa-glx libsm6 libxrender1 libxext-dev ~~~ --- ## 如果更新 `nvidia-smi` 後執行 container 出現 `Error response from daemon: Cannot restart container XXX: could not select device driver "" with capabilities: [[gpu]]` ### 錯誤說明 此錯誤是因為更新 nvidia driver 後 docker 仍是套用之前舊的 nvidia driver,重新安裝 nvidia container toolkit 並重啟 docker 即可 ### 解決方式 - 重新安裝 `nvidia-container-toolkit` ~~~bash= ! $ sudo apt-get update && sudo apt-get -y install nvidia-container-toolkit ~~~ - 重新啟動 docker ~~~bash= ! $ sudo systemctl restart docker ~~~