2015-06-22 16 views
11

Làm cách nào tôi có thể chèn sẵn thông tin đăng nhập của mình vào docker login lệnh trong một tập lệnh?đăng nhập tự động docker trong một tập lệnh bash

Tôi đang sử dụng một kịch bản bash rằng về cơ bản tự động hóa toàn bộ quá trình thiết lập tùy chỉnh của tôi VM vv, nhưng khi tôi cần phải đăng nhập để Docker trong kịch bản để kéo những hình ảnh, tôi nhận được lỗi sau:

Username: FATA[0000] inappropriate ioctl for device


lệnh tôi đã sử dụng như sau:

(echo "xxx"; echo "yyy"; echo "zzz") | docker login docker.somesite.org 


phải là có thể này để đạt được mà không sử dụng và đối phó hơn một hiện .dockercfg tệp và cách thức,
Rất cám ơn.

+0

Bạn sẽ phải sử dụng mong đợi/Pexpect –

Trả lời

19

Bạn có thể vượt qua tất cả các đối số trên dòng lệnh:

docker login --username=$DOCKER_USER --password=$DOCKER_PASS $DOCKER_HOST 

Nếu bạn không chỉ định DOCKER_HOST, bạn sẽ nhận được Docker repo chính. Nếu bạn bỏ qua bất kỳ đối số nào, bạn sẽ được nhắc cho đối số đó.

(Đối với các phiên bản của Docker cũ 1.11, bạn cần phải vượt qua một lá cờ --email, nhưng nội dung của nó không thực sự kiểm tra)

+0

Cảm ơn bạn rất nhiều, mà làm việc; D –

+3

ký hiệu ngắn có thể thuận tiện hơn: 'Docker đăng nhập -u $ DOCKER_USER -p $ DOCKER_PASS -m $ DOCKER_EMAIL $ DOCKER_HOST' – antonbormotov

+1

Đó là một vấn đề ưu tiên, nhưng khi tôi viết một kịch bản, tôi thích các tùy chọn dài hơn bởi vì nó tự ghi lại tài liệu và không có lợi thế nào để có được sự nhạy cảm. (Ngược lại với dòng lệnh nơi nó đang lưu các ngón tay của tôi và tránh gói lại.) –

2

Khi bạn đăng nhập để đăng ký riêng của bạn, Docker tự động tạo một file $ HOME /. docker/config.json Tệp tin có thông tin Credentials, vì vậy bạn có thể lưu tệp và sao chép vào bất kỳ máy chủ nào khi bạn muốn đăng nhập vào sổ đăng ký.

Nội dung tập tin như thế này:

{ 
    "auths": { 
        "example.com": { 
            "auth": "xxxxxxxxxxxxxxxxxxxxxxx" 
        } 
      } 
} 

Add-on Nếu bạn muốn đăng nhập registry đa Docker trên một máy chủ, chỉ cần thêm một auth info.like này:

{ 
    "auths": { 
        "example.com": { 
            "auth": "xxxxxxxxxxxxxxxxxxxxxxx" 
        }, 
        "example1.com":{ 
            "auth": "xxxxxxxxxxxxxxxxxxxxxxx" 
        } 
      } 
} 

Bây giờ bạn có thể đẩy và kéo hình ảnh từ example.com và example1.com.

Các vấn đề liên quan