[Ubuntu] การตั้งค่าและหมายเหตุสำหรับการเรียกใช้นักเทียบท่าโดยไม่ต้องใช้คำสั่ง sudo

2019 10 年月日 3

หมายเหตุเกี่ยวกับวิธีเรียกใช้นักเทียบท่าโดยไม่ต้องใช้ sudo เมื่อใช้นักเทียบท่าบน Ubuntu

โอกาส

หลังจากติดตั้งนักเทียบท่าแล้วsudoฉันพบข้อผิดพลาดเมื่อฉันตรวจสอบการทำงานโดยไม่มีคำสั่ง

# เรียกใช้จาก Ubuntu Terminal Docker เรียกใช้ Hello-World 

นักเทียบท่า: ได้รับอนุญาตถูกปฏิเสธขณะพยายามเชื่อมต่อกับซ็อกเก็ต Docker daemon ที่ unix:///var/run/docker.sock: โพสต์ http://%2Fvar%2Frun%2Fdocker.sock/v1.39/containers/create: dial unix /var/run/docker.sock: เชื่อมต่อ: ปฏิเสธการอนุญาต ดู 'docker run --help'

ดูเหมือนว่าการเข้าถึง docker daemon จะถูกปฏิเสธ ฉันพิมพ์ sudo docker run hello-world และใช้งานได้

สาเหตุของข้อผิดพลาดมีดังนี้

นักเทียบท่าสื่อสารกับ daemon (นักเทียบท่า) ที่ทำงานด้วยสิทธิ์ระดับรูทผ่านซ็อกเก็ตยูนิกซ์หรือ tcp/ip แต่ในการเข้าถึงนักเทียบท่า คุณต้องเป็นสมาชิกของกลุ่มนักเทียบท่าหรือมีสิทธิ์ระดับรูท

ทำความเข้าใจเกี่ยวกับอันตรายของการเพิ่มผู้ใช้ลงในกลุ่มนักเทียบท่าใน Docker

การเพิ่มคำสั่ง sudo ทำให้สามารถเรียกใช้คำสั่งที่ไม่สามารถดำเนินการได้หากไม่มีสิทธิ์ root (เช่น การเชื่อมต่อกับ daemons) ในฐานะผู้ใช้ทั่วไปแต่การเพิ่ม sudo ทุกครั้งนั้นน่ารำคาญ

มาตรการรับมือและข้อควรระวัง

วิธีหนึ่งในการรันโดยไม่ใช้ sudo คือการทำให้ผู้ใช้อยู่ในกลุ่ม dokcer (คุณสามารถค้นหาตัวอย่างมากมายได้จาก googling) แต่ดูเหมือนว่าจะมีปัญหาด้านความปลอดภัย

การอ้างอิง: ความเสี่ยงเมื่อให้สิทธิ์คล้ายกับรูทในกลุ่มนักเทียบท่า (เอกสารทางการ)

หากคุณต้องการใช้นักเทียบท่าโดยไม่มี sudo newgrp ว่ากันว่าเป็นการดีกว่าที่จะอยู่ในกลุ่มที่มีเนมสเปซหรือผู้ใช้เป็นการชั่วคราว

sudo groupadd docker # โดยที่ $USER คือชื่อผู้ใช้ของคุณ sudo usermod -aG docker $USER newgrp docker docker run สวัสดีชาวโลก 

สวัสดีจากนักเทียบท่า!
ข้อความนี้แสดงว่าการติดตั้งของคุณทำงานได้อย่างถูกต้อง

เพื่อสร้างข้อความนี้ Docker ทำตามขั้นตอนต่อไปนี้:

1. ไคลเอนต์ Docker ติดต่อ Docker daemon
2. Docker daemon ดึงภาพ "hello-world" จาก Docker Hub
(เอเอ็มดี 64)
3. Docker daemon สร้างคอนเทนเนอร์ใหม่จากอิมเมจนั้นซึ่งรันไฟล์
ปฏิบัติการที่สร้างผลลัพธ์ที่คุณกำลังอ่านอยู่
4. Docker daemon สตรีมเอาต์พุตนั้นไปยังไคลเอนต์ Docker ซึ่งส่ง
ไปยังเทอร์มินัลของคุณ

หากต้องการลองสิ่งที่ทะเยอทะยานกว่านี้ คุณสามารถเรียกใช้คอนเทนเนอร์ Ubuntu ด้วย:
$ นักเทียบท่าเรียกใช้ -it ubuntu bash

แบ่งปันรูปภาพ ทำให้เวิร์กโฟลว์เป็นอัตโนมัติ และอื่นๆ ด้วย Docker ID ฟรี: https://hub.docker.com/

สำหรับตัวอย่างและแนวคิดเพิ่มเติม โปรดไปที่:
https://docs.docker.com/get-started/