# Docker Got permission denied 解決方法
## 問題說明
在部屬的時候,要執行 docker 相關指令,卻出現以下錯誤訊息。
```
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/laradock_workspace_1/json": dial unix /var/run/docker.sock: connect: permission denied
```
會出現這個訊息代表目前的使用者沒有權限存取 docker engine。而使用 `sudo` 就可以執行是因為 docker service 都是以 `root` 身份執行的。
為了不需要每次下指令都要加上 `sudo`,只要把目前使用者加到 docker 群組裡就可以了。
## 解決方法
>只要把使用者加到 docker 群組,當 docker service 啟動時,會以這個群組的成員來初始化相關服務。
在把使用者加入群組之前,可以先查看目前是否已有 docker 群組存在。
:::info
當前使用者:User_Name
:::
```bash
$ cat /etc/group
root:x:0:
...
google-sudoers:x:1001:User_Name
data:x:1002:
User_Name:x:1003:
docker:x:998:
```
若不存在可先新增群組。
```bash
$ sudo groupadd docker
```
若已經存在群組,則將目前使用者加入。
```bash
$ sudo usermod -aG docker $USER
```
加完使用者後要重新登錄伺服器才會生效,重新進來後可以再查看一次群組,會發現使用者已經被加在群組後面了。
```bash
$ cat /etc/group
root:x:0:
...
google-sudoers:x:1001:User_Name
data:x:1002:
User_Name:x:1003:
docker:x:998:User_Name
```
若還是無法解決問題,有人也提出另一個解法。
>因為問題是出在權限不足,如果以上方法都不管用的話,可以手動修改權限來解決這個問題
> `sudo chmod 777 /var/run/docker.sock`
## 補充
查看目前使用者的所有群組
```bash
$ groups
```
###### 參考資料
- [Docker Engine|Post-installation steps for Linux](https://docs.docker.com/engine/install/linux-postinstall/)
- [[解決方法] docker: permission denied](http://andy51002000.blogspot.com/2019/02/docker-permission-denied.html)
###### tags: `Docker` `部署` `後端` `權限` `Linux`