Máy khách docker mới hơn với máy chủ Docker cũ hơn


12

Chúng tôi có một máy chủ Docker cũ hơn một chút chạy trên RHEL 6.6. Nó không được hỗ trợ tốt bởi đội ngũ điều hành của chúng tôi ngay bây giờ, vì vậy chúng tôi không thể nâng cấp dễ dàng. Ngay bây giờ, nó chạy Docker 1.3.2 từ một repo EPEL. Nếu tôi ssh trong đó sẽ làm mọi thứ tôi cần cho bằng chứng về khái niệm sẽ hy vọng giúp tôi đẩy mạnh quản lý để cải thiện hỗ trợ cơ sở hạ tầng cho Docker.

Tôi đã thiết lập nó để nghe trên TCP / TLS và tôi có thể kết nối với nó, nhưng nó từ chối chạy các lệnh được cung cấp bởi ứng dụng khách docker cục bộ của tôi.

$ docker version
Client version: 1.4.1
Client API version: 1.16
Go version (client): go1.4
Git commit (client): 5bc2ff8
OS/Arch (client): darwin/amd64
FATA[0000] Error response from daemon: client and server don't have same version (client : 1.16, server: 1.15)

Tôi biết bản thân kết nối hoạt động vì fighoạt động:

$ cat > fig.yml
test:
    image: busybox
$ fig run --rm test sh
/ # hostname -f
084f75fb59d4

Có cách nào để tôi có thể nói với máy khách docker mới hơn sử dụng phiên bản API docker cũ hơn cho đến khi tôi có thể truy cập vào máy chủ docker mới hơn không?


Sử dụng máy khách Docker trên RHEL?
Michael Hampton

@MichaelHampton Các nhà phát triển kết nối với hộp docker này nằm trên các máy trạm Windows và OS X khác nhau. Họ có xu hướng đã cài đặt boot2docker và muốn sử dụng cùng một máy khách docker trỏ vào máy chủ này.
kojiro 4/2/2015

Sau đó, lựa chọn lý tưởng là sử dụng bản phân phối Linux theo dõi phiên bản Docker mới nhất. Hiện tại, đó là Fedora Server.
Michael Hampton

Tôi đoán rằng bạn muốn các anh chàng Chiến dịch nâng cấp lên RHEL 7, hiện tại là 1,2 và sẽ tăng lên (như trong kênh Extras, vì vậy có thể phát triển nhanh hơn Core). Nếu nhóm Ops của bạn không thể hỗ trợ RHEL 7 (với sự hỗ trợ có trả tiền của Red Hat), thì chắc chắn họ không thể hỗ trợ một thứ gì đó hấp dẫn hơn như Fedora. Các nhà phát triển của bạn chỉ cần chấp nhận rằng họ cần mã hóa cho một môi trường hoạt động tiêu chuẩn. Xem thêm access.redhat.com/solutions/1408853 "Docker được hỗ trợ như thế nào trong RHEL 7.1?"
Cameron Kerr

Câu trả lời:


26

Kể từ Docker 1.10.0, có một tùy chọn để ghi đè Phiên bản API được sử dụng cho giao tiếp máy khách Docker với công cụ Docker.

Chỉ bằng cách sử dụng biến môi trường DOCKER_API_VERSION.

Ví dụ.:

$ docker version
Client:
 Version:      1.10.0
 API version:  1.22
 Go version:   go1.5.3
 Git commit:   590d510
 Built:        Fri Feb  5 08:21:41 UTC 2016
 OS/Arch:      darwin/amd64
Error response from daemon: client is newer than server (client API version: 1.22, server API version: 1.21)

$ DOCKER_API_VERSION=1.21 docker version
Client:
 Version:      1.10.0
 API version:  1.21
 Go version:   go1.5.3
 Git commit:   590d510
 Built:        Fri Feb  5 08:21:41 UTC 2016
 OS/Arch:      darwin/amd64

Server:
 Version:      1.9.1
 API version:  1.21
 Go version:   go1.4.3
 Git commit:   a34a1d5
 Built:        Fri Nov 20 17:56:04 UTC 2015
 OS/Arch:      linux/amd64

Tham khảo: https://docs.docker.com/engine/reference/commandline/cli/#en môi-biến

BIÊN TẬP

Kể từ Docker 1.13, CLI có khả năng tương thích ngược được cải thiện. Theo https://blog.docker.com/2017/01/whats-new-in-docker-1-13 :

Bắt đầu với 1.13, CLI mới hơn có thể nói chuyện với daemon cũ hơn. Chúng tôi cũng đang thêm đàm phán tính năng để trả về các lỗi thích hợp nếu khách hàng mới đang cố sử dụng các tính năng không được hỗ trợ trong trình nền cũ. Điều này cải thiện đáng kể khả năng tương tác và giúp việc quản lý cài đặt Docker đơn giản hơn với các phiên bản khác nhau từ cùng một máy.


1

Nếu bạn không thể dễ dàng nâng cấp máy chủ, bạn sẽ có thể dễ dàng hạ cấp máy khách của mình. Docker là mã nguồn mở tại GitHub . Phiên bản 1.3.3 là phiên bản cuối cùng với API máy khách 1.15. Đây là một liên kết trực tiếp đến thẻ.

Chỉ cần tạo một bản sao cục bộ của repo, tạo bản dựng, tạo nhị phân và sau đó trao đổi nhị phân được sản xuất:

sudo service docker stop ; sudo cp $(which docker) $(which docker)_ ; sudo cp ./bundles/1.3.3-dev/binary/docker-1.3.3-dev $(which docker);sudo service docker start

registry.hub.docker.com/u/igneoussystems/docker-client dường như là một máy khách docker (của một phiên bản cụ thể) bên trong một container docker. Có vẻ như không thể xây dựng vào lúc này, nhưng có lẽ điều đó sẽ mang lại một số hữu ích .... có thể cần một chút nỗ lực nhưng với một số công cụ nên mở rộng tốt để cung cấp nhiều phiên bản của máy khách docker.
Cameron Kerr

1
Tôi phát hiện ra bạn cũng có thể tải xuống các máy khách dựng sẵn trực tiếp. Bạn có thể lấy URL từ tập lệnh cài đặt tại get.docker.com . Ví dụ: tôi cần get.docker.com/builds/Darwin/x86_64/docker-1.3.2 cho OS X.
kojiro
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.