Lỗi Docker: máy khách và máy chủ không có cùng phiên bản


84

Vì tôi vừa cập nhật Docker lên 1.1.0 nên tôi nhận được:

Phản hồi lỗi từ daemon: máy khách và máy chủ không có cùng phiên bản (máy khách: 1.13, máy chủ: 1.12)

Bạn có biết làm sao để sửa cái này không?

Tôi đã chuyển về 1.0.1 và mọi thứ hoạt động trở lại.


Tôi có cùng một vấn đề, sử dụng boot2docker. Đó cũng là trường hợp của bạn?
sigmus

2
vâng, tôi cũng đang sử dụng boot2docker. sau khi gỡ cài đặt docker và cài đặt lại (không phải 'cài đặt lại') nó hoạt động trở lại. brew uninstall Docker && brew cài đặt Docker
soenke

4
Có lẽ bạn nên chỉnh sửa tiêu đề / câu hỏi để làm cho nó rõ ràng là một boot2dockervấn đề (để tham khảo trong tương lai).
sigmus

Shameless plug: một người bạn và tôi đã cùng nhau tạo ra một công cụ có tên là Docker Version Manager để trợ giúp việc này trong ngắn hạn.
Kyle Kelley

Câu trả lời:


127

Có vẻ như bạn cần nâng cấp VM sau khi cài đặt boot2docker:

nếu bạn đang nâng cấp từ boot2docker 0.12 trở lên, bạn có thể cập nhật máy ảo hiện có của mình (sau khi nâng cấp bằng trình cài đặt) bằng cách sử dụng boot2docker stop && boot2docker download && boot2docker up - và bạn sẽ không mất dữ liệu hiện có của mình.

( https://github.com/boot2docker/osx-installer/releases/tag/v1.1.0 )


3
cũng brew uninstall Docker && brew cài đặt Docker đã làm công việc
soenke

5
Bạn không cần sử dụng phiên bản pha chế của công cụ dòng lệnh docker nữa. Boot2Docker cung cấp phiên bản phù hợp.
Abel Muiño

An error occurred trying to connect: Get https://192.168.59.103:2376/v1.19/containers/json?all=1: x509: certificate is valid for 127.0.0.1, 10.0.2.15, not 192.168.59.103: /
Ain Tohvri

1
Tôi cũng gặp phải vấn đề chứng chỉ này. Tôi chạy boot2docker delete, sau đó boot2docker initvà nó bắt đầu hoạt động.
Dean Wampler,

1
Tôi và một người bạn đã cùng nhau tạo ra một công cụ có tên là Trình quản lý phiên bản Docker để trợ giúp việc này trong thời gian ngắn hạn.
Kyle Kelley

19

Điều này có thể xảy ra nếu bạn đã cập nhật Docker, nhưng dịch vụ chưa được khởi động lại. Sau đó, bạn sẽ cố gắng kết nối với trình nền Docker bằng ứng dụng khách đã cập nhật, trong khi trình nền (đã chạy trước khi cập nhật) vẫn đang chạy phiên bản cũ hơn.

Để khắc phục sự cố này, hãy khởi động lại dịch vụ:

sysV init:

service docker restart

systemd:

systemctl daemon-reload

systemctl restart docker


1
Đối với systemdnó được khuyến khích để làm systemctl daemon-reloadtrướcsystemctl restart docker
baldrs

Có vẻ như câu trả lời đơn giản nhất là câu trả lời tốt nhất :)
Dariss

13

Trong trường hợp bạn sử dụng docker-machineđể quản lý các máy dựa trên VirtualBox cục bộ, giải pháp đơn giản như đối với boot2docker:

docker-machine upgrade MACHINE_NAME

Nó yêu cầu docker-machinetải xuống bản mới nhất boot2docker.isovà đặt nó làm hệ thống tệp gốc mới trong máy ảo đã nâng cấp.

Nhân tiện, máy docker được hỗ trợ bởi VirtualBox có hệ thống tệp gốc của nó chỉ đọc. Điều đó có nghĩa là không thể cho bất kỳ bản cập nhật thủ công nào tồn tại khi máy khởi động lại. Đó là một bất ngờ đối với tôi.


12

Tôi đã có phiên bản boot2docker, docker và hộp ảo mới nhất nhưng vẫn nhận được thông báo này. Có vẻ như chạy brew upgrade boot2dockerkhông phải là ý tưởng tốt nhất. Khi chạy boot2docker upgrade, tôi được yêu cầu đặt một loạt các biến môi trường và sau đó nó hoạt động cho tôi.

Boot2docker đã yêu cầu tôi thiết lập những thứ này (xem những dòng cuối cùng):

$ boot2docker upgrade
Latest release for boot2docker/boot2docker is v1.3.0
Downloading boot2docker ISO image...
Success: downloaded https://github.com/boot2docker/boot2docker/releases/download/v1.3.0/boot2docker.iso
    to /Users/.../.boot2docker/boot2docker.iso
Waiting for VM and Docker daemon to start...
.........oooooooooooooo
Started.
Writing /Users/.../.boot2docker/certs/boot2docker-vm/ca.pem
Writing /Users/.../.boot2docker/certs/boot2docker-vm/cert.pem
Writing /Users/.../.boot2docker/certs/boot2docker-vm/key.pem

To connect the Docker client to the Docker daemon, please set:
    export DOCKER_HOST=tcp://192.168.59.103:2376
    export DOCKER_CERT_PATH=/Users/.../.boot2docker/certs/boot2docker-vm
    export DOCKER_TLS_VERIFY=1

Có thể cắt và dán ba dòng đó trong một lần vào thiết bị đầu cuối của bạn.

Để kiểm tra xem chúng có đúng không:

$ env

11

Tôi đang cố gắng truy vấn máy chủ Docker với một ứng dụng khách gần đây hơn:

  • Phiên bản API máy chủ: 1.21
  • API ứng dụng khách phiên bản 1.22

Giải pháp cho tôi là chỉ:

export DOCKER_API_VERSION=1.21

Tham khảo: https://docs.docker.com/engine/reference/commandline/cli/


1
Cảm ơn! cố định vấn đề này của tôi
MAJIK

1
Thực tế là giao thức docker được tạo phiên bản và tương thích ngược không phải được ghi chép đầy đủ hoặc đủ hiển thị, với số lượng câu trả lời (có thể hiểu được) có đủ độ dài để nâng cấp docker trong các tình huống khác nhau ...
Marcello Romani

3

Câu trả lời chính xác ở đây là rất cũ (Docker đã đổi tên boot2docker thành Docker Machine và thêm một số chức năng vào nó) .

Dù sao thì tôi cũng gặp phải vấn đề tương tự và tôi mất khoảng 3 ngày để khắc phục :(

Đây là giải pháp

1) tìm vị trí của boot2docker.iso

sudo find ~/ -name 'boot2docker.iso'

2) xóa boot2docker.isotệp, sau khi sao lưu nó

/Users/{user}/.docker/machine/cache/boot2docker.iso

3) xóa vm docker của bạn

docker-machine rm {default}

cái này cũng sẽ xóa cái đó đi:

/Users/{user}/.docker/machine/machines/default/boot2docker.iso

4) tạo docker vm mới

docker-machine create --driver virtualbox default

điều này sẽ tải xuống một cái mới boot2docker.isođầu tiên và sau đó sử dụng nó để tạo vm của bạn.

Bây giờ điều này sẽ sửa chữa nó :)

NHƯNG

Nếu bạn gặp bất kỳ lỗi nào ở đây như:

Running pre-create checks...
(mega-docker) No default Boot2Docker ISO found locally, downloading the latest release...
Error with pre-create check: "Get https://api.github.com/repos/boot2docker/boot2docker/releases/latest: dial tcp: lookup api.github.com on 192.168.0.1:53: read udp 192.168.0.103:53947->192.168.0.1:53: i/o timeout"

thử tải xuống boot2docker.isotệp theo cách thủ công bằng cách truy cập https://api.github.com/repos/boot2docker/boot2docker/releases/latest, sau đó nhấp vào html_urlvà cuối cùng chọn tải xuống tệp.

khi bạn nhận được tệp, hãy đi và đặt nó theo cách thủ công vào /Users/{user}/.docker/machine/cache/

cuối cùng chạy lại lệnh này docker-machine create --driver virtualbox default


2

Điều duy nhất phù hợp với tôi là giết quá trình và bắt đầu nó bằng "khởi động docker dịch vụ sudo".


2

Điều duy nhất phù hợp với tôi là xóa hình ảnh boot2docker khỏi VirtualBox, sau đó xóa hoàn toàn ~/.boot2dockerthư mục và cuối cùng chạy boot2docker initlại.


1

xóa boot2docker

boot2docker init

đã làm cho tôi. dừng / bắt đầu trước và sau đó tất nhiên.


1

Điều này phù hợp với tôi: Nó chỉ tắt vm, xóa & tạo lại nó và khởi động lại. Nó chạy lại shellinit để các biến ENV của bạn được thiết lập với địa chỉ IP chính xác khi nó trở lại.

$ boot2docker poweroff && \
    boot2docker delete && \
    boot2docker init && \
    boot2docker up
$ eval `boot2docker shellinit`

0

Tôi có phiên bản boot2docker mới nhất (v1.7.1) và gặp lỗi máy chủ khách hàng không khớp. Sau đó, tôi chỉ cần chạy boot2docker upgradevà nó đã giải quyết được vấn đề.


0

Giải pháp của tôi là thực hiện Đóng> Tắt nguồn trên máy ảo docker trong VirtualBox, sau đó khởi động lại Kitematic. CÁi này đã sửa nó giúp tôi.


0

Tôi thấy phiên bản trong brew đã lỗi thời so với phiên bản trên trang web docker.io. Vì vậy, tôi nghĩ cách tốt nhất là truy cập trang web và tải xuống tệp cài đặt.


0

Câu trả lời chắc chắn:

Nếu bạn đến đó bằng Ansible chứ không phải boot2docker, đây là giải pháp: Sử dụng docker_api_version: autođối số

- name: Mongo data container
  docker:
    docker_api_version: auto
    name: mongo-primary-dc
    image: debian:wheezy
    state: present
    volumes:
    - /data

Tôi đoán nguyên nhân là do mô-đun docker-py được Ansible sử dụng thường không ở cùng phiên bản với kho apt-get của Ubuntu.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.