รัน docker ด้วย user ที่ไม่ใช่ root บนลีนุกซ์

หลังการติดตั้ง docker บนลีนุกซ์ หากเราล็อกอินด้วย user ธรรมดา ที่ไม่ใช่ root รันคำสั่ง docker จะไม่สามารถใช้งานได้ ขึ้นข้อความ permission denied ต้องรัน sudo หรือ su เป็น root ก่อนถึงจะรัน docker ได้

เพื่อความสะดวกหากเราต้องการจะรัน docker ด้วย user ธรรมดาที่ไม่ใช่ root หรือไม่ต้องพิมพ์ sudo นำหน้า สามารถทำได้โดยเพิ่ม user เข้าไปใน group ชื่อ docker

คำเตือน ระมัดระวังในการเพิ่ม user เข้า group ชื่อ docker เพราะจะทำให้ user ที่เพิ่มนั้นมีสิทธิ์ (grant privileges) เทียบเท่า root

ตัวอย่างการรันคำสั่ง docker run ด้วย user ธรรมดา

$ docker run hello-world
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.35/containers/create: dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.

ถ้าเราต้องการรัน วิธีการหนึ่งที่ทำได้คือใช้ sudo

$ sudo docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.
...

โดยปกติหากติดตั้ง docker จาก Docker Repository เลย จะมีการสร้าง group ชื่อ docker ขึ้นมา แต่หากไม่มีให้ใช้คำสั่ง groupadd เพื่อเพิ่ม group ก่อน

ตัวอย่างการเพิ่ม group ชื่อ docker

$ sudo groupadd docker

เพิ่ม user เข้าไปใน group ชื่อ docker

ใช้ sudo รันคำสั่ง usermod ตามด้วยออปชัน -ag ตามด้วยชื่อ group ที่ต้องการให้ user เป็นสมาชิก

$ sudo usermod -aG docker alice

logout แล้ว login เข้าเครื่องที่รัน docker ใหม่อีกครั้ง เพื่อให้ group ที่เพิ่มใหม่ มีผล

พิมพ์คำสั่ง id เพื่อตรวจสอบการเป็นสมาชิกใน group ของ user

$ id
uid=1000(alice) gid=1000(alice) groups=1000(alice),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),110(lxd),115(lpadmin),116(sambashare),999(docker)

ลองรัน docker ใหม่อีกครั้ง โดยไม่ต้องพิมพ์ sudo นำหน้า

$ docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.
...

ข้อมูลอ้างอิง

Leave a Reply

Your email address will not be published.