[ad_1]
Cài đặt Docker mới mặc định cho các tương tác công khai với Docker Hub. Đăng nhập cho phép bạn truy cập nội dung riêng tư của mình và hưởng lợi từ các giới hạn tỷ lệ API Docker ít hạn chế hơn.
Trong hướng dẫn này, chúng tôi sẽ chỉ ra cách đăng nhập vào Docker CLI, bao gồm cả xác thực Docker Hub và đăng ký riêng của bạn. Chúng tôi cũng sẽ xem xét một số vấn đề phổ biến với lưu trữ thông tin xác thực của Docker.
Đăng nhập vào Docker Hub
Đăng nhập vào Docker Hub cho phép Docker CLI truy cập vào nội dung riêng tư mà tài khoản của bạn có thể truy cập được. Nó cũng sẽ cung cấp cho bạn ngưỡng giới hạn tốc độ cao hơn là 200 lần kéo hình ảnh mỗi sáu giờ, thay vì 100 lần kéo mỗi sáu giờ được cung cấp cho các khách hàng chưa được xác thực.
Sử dụng docker login
lệnh cung cấp thông tin đăng nhập của bạn và xác thực với máy chủ:
$ docker login Username: Password:
Bạn sẽ được nhắc nhập tên người dùng và mật khẩu của mình một cách tương tác. Docker sẽ cố gắng đăng nhập vào Docker Hub bằng thông tin đăng nhập. Bạn sẽ thấy Login Succeeded
nếu các chi tiết được chấp nhận. Docker sẽ lưu trữ mã xác thực đã phát hành trong .docker/config.json
tập tin.
$ docker login Login Succeeded
Mã thông báo truy cập để đăng nhập 2FA
Các tài khoản Docker Hub đã bật xác thực hai yếu tố cần sử dụng mã thông báo truy cập thay vì mật khẩu. Sử dụng giao diện người dùng web của Docker Hub, nhấp vào biểu tượng hồ sơ của bạn ở trên cùng bên phải và chọn “Cài đặt tài khoản” từ menu. Sử dụng thanh bên trái để chuyển sang tab “Bảo mật”.
Nhấp vào nút “Mã thông báo truy cập mới” màu xanh lam để tạo Mã thông báo truy cập cá nhân. Hãy cẩn thận ghi lại khóa mã thông báo được hiển thị vì bạn sẽ không thể khôi phục nó trong tương lai. Sử dụng mã thông báo này thay vì mật khẩu thông thường của bạn khi bạn chạy docker login
trở lại CLI.
Đăng nhập không tương tác
Bạn có thể cung cấp tên người dùng và mật khẩu của mình dưới dạng cờ dòng lệnh:
$ docker login --username demo --password example
Điều này hữu ích khi bạn đăng nhập theo chương trình hoặc là một phần của đường dẫn CI. Để tăng cường bảo mật, hãy sử dụng --password-stdin
cờ để hướng dẫn Docker đọc mật khẩu của bạn từ STDIN
. Điều này cho phép bạn đưa vào một tệp mật khẩu, ngăn văn bản thuần túy bị ghi lại trong lịch sử trình bao và nhật ký công việc CI của bạn.
$ cat password.txt | docker login --username demo --password-stdin
Đăng nhập vào Sổ đăng ký Riêng tư
docker login
cũng cho phép bạn đăng nhập vào sổ đăng ký tự lưu trữ. Cung cấp tên máy chủ và cổng đăng ký của bạn làm đối số đầu tiên của lệnh. Docker Hub luôn được sử dụng khi không có đối số nào được đưa ra.
$ docker login registry.example.com Username: Password:
Bạn vẫn có thể sử dụng --username
, --password
và --password-stdin
cờ khi làm việc với các sổ đăng ký tùy chỉnh. Bạn có thể đăng nhập đồng thời vào nhiều sổ đăng ký – lặp lại docker login
ra lệnh nhiều lần nếu bạn cần.
Thêm thông tin đăng nhập theo cách thủ công
Đôi khi bạn có thể muốn đăng nhập thủ công vào sổ đăng ký bằng cách thêm mã xác thực hiện có vào tệp cấu hình của Docker. Điều này có thể hữu ích trong môi trường CI nơi bạn muốn cung cấp mã thông báo lấy trước dưới dạng biến đường ống.
Bạn có thể tự thêm mã thông báo xác thực bằng cách chỉnh sửa .docker/config.json
tập tin. Thêm khóa mới cho sổ đăng ký của bạn trong auths
ở đầu tệp. Cung cấp một đối tượng làm giá trị của khóa; đối tượng này cần một auth
tài sản có chứa mã thông báo của bạn. Đây là một ví dụ cho registry.example.com
đăng ký:
và}#13; "auths": và}#13; "registry.example.com": và}#13; "auth": "aWxtaW9ud..." } } }
Bạn có thể thêm mã thông báo Docker Hub bằng cách sử dụng https://index.docker.io/v1/
dưới dạng URL đăng ký.
Nhiều tài khoản cho một sổ đăng ký
Một hạn chế đáng kể của cơ chế xác thực là yêu cầu của cơ chế đăng ký ánh xạ 1-1 với tài khoản người dùng. Nguyên nhân là không thể đăng nhập đồng thời vào nhiều người dùng tại cùng một sổ đăng ký. Điều này thường mong muốn khi bạn đang sử dụng sổ đăng ký riêng tư để phân tách quyền đối với các dự án hoặc nhóm.
Bạn có thể giảm thiểu sự cố bằng cách chia nhỏ thông tin đăng nhập của mình thành nhiều tệp cấu hình. Docker CLI sử dụng --config
cờ hoặc DOCKER_CONFIG
biến môi trường để xác định tệp cần tải cho mỗi lệnh gọi.
# Authenticate as user-1 $ docker --config ~/docker/user-1.conf login registry.example.com --username user-1 --password foobar # Authenticate as user-2 $ docker --config ~/docker/user-2.conf login registry.example.com --username user-2 --password foobar # Pull an image from registry.example.com as user-1 $ docker --config ~/docker/user-1.conf pull my-team/my-project:latest # Push an image to registry.example.com as user-2 $ docker --config ~/docker/user-2.conf push my-team/my-project:latest
Khi bạn có nhiều dự án phải làm việc, bạn có thể sử dụng bí danh hoặc hàm shell để viết lại docker
đến một lệnh tự động chọn tệp cấu hình phù hợp cho thư mục làm việc của bạn.
alias docker="docker --config ~/docker/$(basename $PWD).conf $1"
Người trợ giúp thông tin xác thực
Docker lưu trữ thông tin đăng nhập của bạn một cách không an toàn trong ~/.docker/config.json
theo mặc định. Bạn có thể thêm bảo vệ bằng cách tích hợp tiện ích trợ giúp thông tin xác thực. Người trợ giúp được bật có thể xử lý thông tin đăng nhập store
, get
và erase
các lệnh do Docker đưa ra để đáp ứng các hoạt động CLI.
Bạn có thể liên kết sổ đăng ký với một tiện ích trợ giúp cụ thể bằng cách sử dụng credHelpers
trong tệp cấu hình của bạn:
và}#13; "credHelpers": và}#13; "registry.example.com": "pass" } }
Ví dụ này sử dụng pass
trình trợ giúp thông tin xác thực để lưu trữ thông tin xác thực cho registry.example.com
vào Pass thay vì tệp cấu hình. Trình trợ giúp Pass được cung cấp như một phần của Docker docker-credential-helpers
gói cũng bao gồm các tích hợp với chuỗi khóa macOS, Trình quản lý thông tin đăng nhập của Windows và dịch vụ bí mật D-Bus.
Đăng xuất
Bạn có thể đăng xuất bằng cách xóa thủ công phần của sổ đăng ký khỏi .docker/config.json
tập tin hoặc sử dụng docker logout
yêu cầu.
$ docker logout
Giống docker login
, đăng xuất nhắm mục tiêu Docker Hub theo mặc định. Bạn có thể đăng xuất khỏi sổ đăng ký riêng tư bằng cách chuyển tên máy chủ của nó làm đối số duy nhất của lệnh:
$ docker logout registry.example.com
Những vấn đề chung
Hầu hết các vấn đề xác thực Docker bắt nguồn từ thông tin xác thực bị thiếu hoặc không hợp lệ. Nếu trước đó bạn đã đăng nhập nhưng xác thực không hoạt động, hãy thử đăng xuất và đăng nhập lại:
$ docker logout # OR $ docker logout registry.example.com $ docker login # OR $ docker login registry.example.com
Thông tin xác thực bị từ chối liên tục có thể chỉ ra sự cố với tài khoản đăng ký của bạn. Trong trường hợp của Docker Hub, hãy kiểm tra xem bạn đã làm theo hướng dẫn ở trên để sử dụng Mã truy cập cá nhân thay vì mật khẩu với tài khoản được bảo vệ bằng 2FA hay chưa.
Sự nhầm lẫn cũng có thể xảy ra khi bạn có nhiều tệp cấu hình Docker. Kiểm tra xem bạn đang sử dụng --config
cờ hoặc DOCKER_CONFIG
biến môi trường để tải một biến chính xác mỗi khi bạn đẩy và kéo hình ảnh của mình.
Bản tóm tắt
Việc kết nối Docker CLI với tài khoản Docker Hub của bạn hoặc một sổ đăng ký riêng thường được xử lý tốt nhất bởi docker login
yêu cầu. Bạn có thể cung cấp thông tin xác thực một cách tương tác, dưới dạng cờ hoặc thông qua tệp mật khẩu được tổng hợp. Đảm bảo bạn sử dụng Mã truy cập cá nhân thay vì mật khẩu nếu bạn đã bật xác thực hai yếu tố.
Mặc dù có hỗ trợ liền mạch cho việc xác thực với nhiều sổ đăng ký, nhưng làm việc với nhiều tài khoản từ một sổ đăng ký sẽ cồng kềnh hơn. Cố gắng sử dụng các tệp cấu hình riêng biệt nếu có thể hoặc định cấu hình sổ đăng ký của bạn với các tài khoản người dùng có phạm vi đặc biệt thích hợp cho từng môi trường của bạn.
[ad_2]