نصب Docker در اوبونتو بسیار آسان است! همه افراد، حتی افراد تازه کار، می توانند آن را در عرض 15 دقیقه نصب کنند. پس از نصب Docker، متوجه شدم که نمیتوانم اکثر عملیات Docker را به عنوان یک کاربر معمولی انجام دهم. من باید Docker را هر بار با کاربر root یا با مجوز sudo
به عنوان کاربر غیر ریشه اجرا کنم در غیر اینصورت با خطای زیر مواجه می شوم:
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://var/run/docker.sock/v1.40/version: dial unix /var/run/docker.sock: connect: permission denied
به عنوان مثال، من می خواستم نسخه Docker را به عنوان کاربر عادی با استفاده از دستور بررسی کنم:
$ docker version
و این پیغام خطا را دریافت می کنم:
Client: Docker Engine - Community
Version: 19.03.8
API version: 1.40
Go version: go1.12.17
Git commit: afacb8b7f0
Built: Wed Mar 11 01:25:46 2020
OS/Arch: linux/amd64
Experimental: false
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://var/run/docker.sock/v1.40/version: dial unix /var/run/docker.sock: connect: permission denied
اما وقتی همان دستور را با مجوز sudo اجرا می کنم.
$ sudo docker version
همانطور که در خروجی زیر نشان داده شده است، تمام جزئیات نسخه فعلی Docker نصب شده را نشان می دهد.
Client: Docker Engine - Community
Version: 19.03.8
API version: 1.40
Go version: go1.12.17
Git commit: afacb8b7f0
Built: Wed Mar 11 01:25:46 2020
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.8
API version: 1.40 (minimum version 1.12)
Go version: go1.12.17
Git commit: afacb8b7f0
Built: Wed Mar 11 01:24:19 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.2.13
GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429
runc:
Version: 1.0.0-rc10
GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd
docker-init:
Version: 0.18.0
GitCommit: fec3683
پس از جستجو در صفحه Docker documentation، متوجه شدم که Daemon Docker به جای پورت TCP به طور پیش فرض به سوکت یونیکس می شود. از آنجایی که آن سوکت یونیکس متعلق به کاربر ریشه است، دایمون داکر فقط به عنوان کاربر اصلی اجرا می شود. از این رو، کاربران عادی نمی توانند اکثر دستورات Docker را انجام دهند.
اگر می خواهید Docker را به عنوان کاربر غیر ریشه در لینوکس اجرا کنید، باید مراحل زیر را انجام دهید. من این را روی سرور اوبونتو 18.04 تست کردم و به خوبی کار کرد! همچنین باید روی سایر توزیع های لینوکس نیز کار کند.
هشدار مهم:
اجرای Docker به عنوان کاربر معمولی ایده خوبی برای امنیت نیست. من شخصاً از این استفاده نمی کنم و آن را نیز توصیه نمی کنم . اگر سیستم شخصی شما باشد و سیستم خود را در معرض اینترنت قرار ندهید، مشکل بزرگی نیست. با این حال، Docker را به عنوان کاربر غیر ریشه در یک سیستم عملیاتی اجرا نکنید.
Docker را به عنوان کاربر غیر ریشه در لینوکس اجرا کنید
برای رفع خطای Docker Permission Denied و استفاده از Docker به عنوان کاربر غیر ریشه، گروهی به نام Docker با دستور زیر ایجاد کنید:
$ sudo groupadd docker
در مرحله بعد، کاربر خود را به گروه docker اضافه کنید :
$ sudo usermod -aG docker $USER
پس از افزودن کاربر به گروه docker، از سیستم خارج شوید و دوباره وارد شوید تا تغییرات اعمال شود.
همچنین، دستور زیر را برای اعمال تغییرات در گروه ها اجرا کنید:
$ newgrp docker
از این پس، کاربر عادی (غیر روت) می تواند بدون مجوز sudo از Docker استفاده کند.
اجازه دهید دستورات زیر را به عنوان کاربر عادی اجرا کنم:
$ docker version
$ docker run hello-world
خروجی نمونه:
اکنون می توانم هر دو دستور Docker را بدون اجازه sudo اجرا کنم.
فقط در صورتی که قبلاً چند دستور Docker را با مجوز ‘sudo’ قبل از اضافه کردن کاربر خود به گروه Docker اجرا کرده اید، احتمالاً خطای مشابه زیر را مشاهده خواهید کرد.
WARNING: Error loading config file: /home/user/.docker/config.json -
stat /home/user/.docker/config.json: permission denied
پیام خطای بالا نشان می دهد که ~/.docker/
دایرکتوری شما به دلیل استفاده از sudo
با مجوزهای نادرست ایجاد شده است.
برای رفع این مشکل، مالکیت و مجوزهای این دایرکتوری را با استفاده از دستورات زیر تغییر دهید:
$ sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
$ sudo chmod g+rwx "$HOME/.docker" -R
از سیستم خارج شوید و دوباره وارد شوید تا این مورد اعمال شود.
اگر باز هم مشکل را برطرف شد، ممکن است لازم باشد دایرکتوری ~/.docker/
خود را حذف کنید. این دایرکتوری به طور خودکار، دوباره ایجاد می شود، اما در صورت وجود، تمام تنظیمات سفارشی خود را از دست خواهید داد.
افزودن نظر