Πριν από το .NET 8, τα κοντέινερ εκτελούνταν ως root από προεπιλογή και ξεκινώντας από το .NET 8, όλες οι εικόνες κοντέινερ Linux θα περιέχουν χρήστες που δεν είναι root. Θα μπορείτε να φιλοξενήσετε κοντέινερ .NET με μία γραμμή κώδικα ως χρήστης που δεν είναι root. Αυτή η αλλαγή σε επίπεδο πλατφόρμας θα κάνει την εφαρμογή σας πιο ασφαλή και θα κάνει το .NET ένα από τα πιο ασφαλή οικοσυστήματα προγραμματιστών. Αυτή είναι μια μικρή αλλαγή, αλλά έχει μεγάλο αντίκτυπο στην άμυνα σε βάθος.
Κατανοήστε τα UID και τα GID σε κοντέινερ Docker
Από προεπιλογή, η διεργασία στο κοντέινερ εκτελείται με δικαιώματα χρήστη root και αυτός ο χρήστης root είναι ο ίδιος χρήστης με τον root στον κεντρικό υπολογιστή. Δεν ακούγεται τρομακτικό, γιατί σημαίνει ότι από τη στιγμή που μια διεργασία σε ένα κοντέινερ έχει την κατάλληλη ευκαιρία, μπορεί να ελέγξει τα πάντα στο μηχάνημα υποδοχής!
Αναφορά:Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Εικόνα .NET 8 Docker
Υπάρχουν δύο κύριες αλλαγές στην εικόνα .NET 8 Docker, ως εξής:
- Η εικόνα δημιουργεί έναν νέο λογαριασμό εφαρμογής και μια νέα ομάδα και εκτελεί την εφαρμογή με τον λογαριασμό εφαρμογής από προεπιλογή
- Μεταπήδησε στη θύρα 8080, αποδείχθηκε ότι ήταν η θύρα 80, καθώς η θύρα 80 είναι μια προνομιακή θύρα, απαιτούνται δικαιώματα root (τουλάχιστον σε ορισμένα σημεία)
Διεύθυνση πηγαίου κώδικα εικόνας .NET Docker:Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Οι εξαρτήσεις είναι οι εξής:
aspnet:8.0-bookworm-slim -> dotnet/runtime-8.0.0-bookworm-slim-amd64 -> dotnet/runtime-deps-8.0.0-bookworm-slim-amd64 -> amd64/debian:bookworm-slim
dotnet/runtime-deps-8.0.0-bookworm-slim-amd64 μοιάζει με αυτό:
Οπως φαίνεται παρακάτω:
Χρησιμοποιήστε τον λογαριασμό της εφαρμογής για να εισαγάγετε τη βασική εικόνα και η εντολή είναι η εξής:
Εξάγετε τις τρέχουσες μεταβλητές χρήστη και περιβάλλοντος, όπως φαίνεται στην παρακάτω εικόνα:
Αναφορά:Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Αρχείο Dockerfile
Εάν πρέπει να συσκευάσετε το έργο σας σε μια εικόνα Docker, πρέπει να δημιουργήσετε μια νέα υποστήριξη κοντέινερ .NET 8 Docker και η προεπιλεγμένη διαμόρφωση αρχείου Dockerfile περιβάλλοντος Linux είναι η εξής:
Εάν ορίσετε τη ζώνη ώρας του συστήματος στο Dockerfile, ο ακόλουθος κώδικας:
Το σφάλμα Άρνηση άδειας μπορεί να προκύψει ως εξής:
4>F:\itsvse\Dockerfile : σφάλμα CTC1014: #21 [τελικό 3/3] RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &&& echo Asia/Shanghai > /etc/timezone 4>F:\itsvse\Dockerfile : σφάλμα CTC1014: #21 0.314 ln: απέτυχε η δημιουργία συμβολικού συνδέσμου '/etc/localtime': Δεν επιτρέπεται η άδεια 4>F:\itsvse\Dockerfile : σφάλμα CTC1014: #21 ΣΦΑΛΜΑ: η διαδικασία "/bin/sh -c ln -snf /usr/share/zoneinfo/$TZ /etc/localtime &&& echo $TZ > /etc/timezone" δεν ολοκληρώθηκε με επιτυχία: κωδικός εξόδου: 1 4>F:\itsvse\Dockerfile : σφάλμα CTC1014: ------ 4>F:\itsvse\Dockerfile : σφάλμα CTC1014: > [τελικό 3/3] RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime &&& echo Asia/Shanghai > /etc/timezone: 4>F:\itsvse\Dockerfile : σφάλμα CTC1014: #21 0.314 ln: απέτυχε η δημιουργία συμβολικού συνδέσμου '/etc/localtime': Δεν επιτρέπεται η άδεια Χρησιμοποιήστε τον ριζικό λογαριασμό για να ορίσετε τη ζώνη ώρας και, στη συνέχεια, επιστρέψτε στον λογαριασμό εφαρμογής και τροποποιήστε τον ως εξής:
(Τέλος)
|