2016-01-15 25 views
5
docker version 1.9.1 
swarm version 1.0.1 

lý do kết nối 3 máy ảo (cầu nối ròng) với đàn. "thông tin docker" hiển thị cho tôi tất cả các nútDocker-swarm >> Không thể kết nối với điểm cuối của động cơ docker

Trạng thái đang chờ xử lý.

1 của 3 host là quản lý tất cả các đầu ra là từ máy chủ này. Tôi không biết phải tìm đâu.

On chạy swarm --debug manage token://XXXXX

sản lượng >>

*INFO[0000] Listening for HTTP addr=127.0.0.1:2375 proto=tcp 

DEBU[0000] Failed to validate pending node: Cannot connect to the docker engine endpoint Addr=10.32.1.38:2375 

DEBU[0000] Failed to validate pending node: Cannot connect to the docker engine endpoint Addr=10.32.1.4:2375 

DEBU[0000] Failed to validate pending node: Cannot connect to the docker engine endpoint Addr=10.32.1.33:2375 

Sau đó

[email protected]:~# ps -ef | grep swarm 

root 2158 1391 0 12:28 pts/2 00:00:00 swarm join token://xxxxxxx --addr 10.32.1.4:2375 

root 2407 1213 0 13:57 pts/1 00:00:00 swarm manage token://xxxxxxx -H 0.0.0.0:4243 

root 2413 1391 0 13:57 pts/2 00:00:00 grep --color=auto swarm 

Sau đó

[email protected]:~# swarm list token://xxxxxxxxxxx 

10.32.1.4:2375 
10.32.1.33:2375 
10.32.1.38:2375 

Sau đó

[email protected]:~# ps -ef | grep docker 

root  2330  1 0 12:52 ?  00:00:00 /usr/bin/docker daemon 

root  2421 1391 0 14:10 pts/2 00:00:00 grep --color=auto docker 

Sắp xếp nhịp tim - chạy ở chế độ nền, cổng được chọn, độ phân giải tên, pingable từ người quản lý.

Trả lời

5

Các Docker daemon có thể nghe trên ba loại khác nhau của Socket: unix, tcpfd.

Theo mặc định, docker daemon chỉ nghe trên ổ cắm unix.

Nếu bạn cần truy cập trình điều khiển Docker từ xa, bạn cần bật ổ cắm tcp.

Khi tạo cụm bệ đỡ docker, trình quản lý bầy cần phải truy cập vào trình cắm của trình điều khiển đại lý từ xa.

Vì vậy, bạn cần phải cấu hình các daemon Docker

vim /etc/default/docker 

Add sau dòng:

DOCKER_OPTS="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock" 

Restart Docker daemon

sudo restart docker 

Bằng cách này , docker daemon có thể được truy cập từ xa.

Tài liệu tham khảo:

  1. Docker document: docker daemon
  2. Docker document: create a swarm for development
3

Tôi đã thêm DOCKER_OPTS giá trị trong/etc/default/Docker

DOCKER_OPTS = "- H <> IP host <>: 2375 -H unix: ///var/run/docker.sock"

để chính xác hơn < < IP máy chủ >> là cùng một IP máy chủ mà bạn chỉnh sửa tệp/etc/default/docker của mình.

Có thể nó sẽ giúp ai đó.

+1

Tùy thuộc vào môi trường của bạn, bạn nên bảo vệ ổ cắm daemon của mình. https://docs.docker.com/engine/security/https/ – KumZ

2

phương pháp cấu hình khác nhau tùy thuộc vào hệ điều hành máy chủ mà bạn đang chạy Docker.

hướng dẫn cấu hình

Xem Docker Daemon (cuộn xuống để tìm máy chủ của bạn OS):
Docker Configuration Documentation

Tôi đang chạy Red Hat Enterprise Linux 7.2: Vì vậy, tôi làm theo hướng dẫn cấu hình cho hình thức OS của tôi liên kết ở trên và đã làm như sau:

  1. mkdir /etc/systemd/system/docker.service.d
  2. Tạo tệp docker.conf
    vi /etc/systemd/system/docker.service.d/docker.conf
  3. Thêm phần sau vào tệp docker.conf rồi lưu.

    [Service] 
    ExecStart= 
    ExecStart=/usr/bin/docker daemon -D -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375 
    
  4. Flush Thay đổi

    systemctl daemon-reload 
    
  5. Restart Docker

    systemctl restart docker 
    

Điểm mấu chốt của cấu hình (và nơi tôi lệch chút ít so với tài liệu hướng dẫn) là:

ExecStart=/usr/bin/docker daemon -D -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375

Hãy đi qua mảnh này bằng mảnh:

  • /usr/bin/docker bắt đầu từ Docker nhị phân
  • daemon bắt đầu Docker Daemon
  • -D bắt đầu trong chế độ gỡ lỗi (không bắt buộc)
  • -H unix:///var/run/docker.sock tạo Docker Socket mặc định
  • -H tcp://0.0.0.0:2375 tạo tcp Docker socket lắng nghe trên cổng 2375 trên tất cả các giao diện mạng

Sau khi thực hiện những thay đổi này, tôi khởi động lại container Docker bầy đàn của tôi (và trong trường hợp của tôi container Lãnh sự của tôi cũng) và chạy docker -H tcp://<IP_OF_SWARM_MASTER>:<PORT_YOU_TOLD_SWARM_MASTER_TO_LISTEN_ON> info để xem nếu tôi không còn nhận được lỗi Cannot connect to the docker engine endpoint.

1

Làm việc cho tôi bằng cách thêm trong bầy đàn phục vụ người lao động cấu hình /usr/lib/systemd/system/docker.service nơi ExecStart tọa lạc dòng này:

ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375 

thay đổi Flush và khởi động lại Docker:

sudo systemctl daemon-reload 
sudo systemctl restart docker.service 

Nhưng phương pháp này là không được bảo vệ, cần thêm cấu hình bảo mật.

0

Tôi đã mệt mỏi với các giải pháp được đề cập trong chuỗi này. Chỉnh sửa/etc/default/docker không hoạt động đối với tôi.

Cuối cùng giải pháp sau là gì.

Chỉnh sửa tập tin /lib/systemd/system/docker.service Tìm dòng mà bắt đầu với ExecStart và thêm -H = tcp: //0.0.0.0: 2375 để làm cho nó trông giống như

ExecStart=/usr/bin/docker daemon -H=fd:// -H=tcp://0.0.0.0:2375 

lưu file Modified Nạp lại daemon Docker

systemctl daemon-reload 

Restart container

sudo service docker restart 

Kiểm tra xem nó đang làm việc bằng cách sử dụng lệnh sau

curl http://localhost:2375/images/json 

Nếu mọi thứ đều tốt dưới lệnh phải trả lại một JSON.

Để kiểm tra từ xa, hãy sử dụng tên PC hoặc địa chỉ IP của Docker Host.

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