Docker hatası: istemci ve sunucu aynı sürüme sahip değil


84

Docker'ı 1.1.0'a güncellediğimden beri:

Arka plan programından gelen hata yanıtı: istemci ve sunucu aynı sürüme sahip değil (istemci: 1.13, sunucu: 1.12)

Bunu nasıl düzelteceğinizi biliyor musunuz?

1.0.1'e geri döndüm ve her şey tekrar çalışıyor.


Ben de aynı sorunu yaşıyorum boot2docker. Bu da senin davan mı?
sigmus

2
evet ayrıca boot2docker kullanıyorum. docker'ı kaldırdıktan ve yeniden kurduktan sonra ('yeniden yükleme' değil) tekrar çalışıyor. brew uninstall docker && brew install docker
soenke

4
Belki de bir boot2dockersorun olduğunu netleştirmek için başlığı / soruyu düzenlemelisiniz (ileride başvurmak üzere).
sigmus

Utanmaz eklenti: Bir arkadaşımla kısa vadede buna yardımcı olmak için Docker Sürüm Yöneticisi adlı bir araç hazırladık .
Kyle Kelley

Yanıtlar:


127

Boot2docker'ı kurduktan sonra sanal makineyi yükseltmeniz gerekiyor gibi görünüyor:

boot2docker 0.12 veya sonraki bir sürümden yükseltme yapıyorsanız, boot2docker stop && boot2docker download && boot2docker up'ı kullanarak mevcut sanal makinenizi (yükleyiciyi kullanarak yükselttikten sonra) güncelleyebilirsiniz - ve mevcut verilerinizi kaybetmezsiniz.

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


3
Ayrıca brew uninstall docker && brew install docker işi yaptı
soenke

5
Docker komut satırı aracının brew sürümünü artık kullanmanıza gerek yok. Boot2Docker doğru sürümü sağlar.
Abel Muiño

Sahip 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
Ben de bu sertifika sorunuyla karşılaştım. Koştum boot2docker deleteardından, boot2docker initve çalışmaya başladı.
Dean Wampler

1
Bir arkadaşım ve ben kısa vadede buna yardımcı olmak için Docker Sürüm Yöneticisi adlı bir araç oluşturduk .
Kyle Kelley

19

Docker'ı güncellediyseniz, ancak hizmet yeniden başlatılmadıysa bu olabilir. Daha sonra, arka plan programı (güncellemeden önce zaten çalışıyordu) hala eski sürümü çalıştırırken, güncellenmiş istemciyle Docker daemon'una bağlanmayı deneyeceksiniz.

Bunu düzeltmek için hizmeti yeniden başlatın:

sysV init:

service docker restart

systemd:

systemctl daemon-reload

systemctl restart docker


1
İçin systemdbunu yapmak tavsiye edilir systemctl daemon-reloadöncesystemctl restart docker
baldrs

Görünüşe göre en basit cevap en iyi cevap :)
Dariss

13

Kullanmanız durumunda docker-machineYerel bir VirtualBox tabanlı makineleri yönetmek için , çözüm boot2docker için olduğu kadar basittir:

docker-machine upgrade MACHINE_NAME

En docker-machinegüncel olanı indirmenizi boot2docker.isove yükseltilen VM'ye yeni bir kök dosya sistemi olarak yerleştirmenizi ister.

Bu arada, VirtualBox destekli docker makinesinin kök dosya sistemi salt okunurdur. Bu, makinenin yeniden başlatılmasından sonra herhangi bir manuel güncellemenin mümkün olmadığı anlamına gelir. Bu benim için bir sürprizdi.


12

Boot2docker, docker ve virtual box'ın en son sürümüne sahiptim ama hala bu mesajı alıyordum. Görünüşe göre koşmak brew upgrade boot2dockeren iyi fikir değil. Koşarkenboot2docker upgrade , bir grup ortam değişkeni belirlemem istendi ve sonra benim için çalıştı.

Boot2docker benden bunları ayarlamamı istedi (son satırlara bakın):

$ 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

Bu üç satırı tek seferde kesip terminalinize yapıştırmanız mümkündür.

Doğru olup olmadıklarını kontrol etmek için:

$ env

11

Daha yeni bir istemciyle bir Docker sunucusunu sorgulamaya çalışıyordum:

  • Sunucu API sürümü: 1.21
  • İstemci API sürümü 1.22

Benim için çözüm şuydu:

export DOCKER_API_VERSION=1.21

Referans: https://docs.docker.com/engine/reference/commandline/cli/


1
Teşekkürler! bu benim sorunumu çözdü
MajiK

1
Docker protokolünün versiyonlanmış ve geriye dönük uyumlu olduğu gerçeği, çeşitli senaryolarda docker'ı yükseltmek için (anlaşılır bir şekilde) her türlü uzunluğa ulaşan cevapların miktarı göz önüne alındığında, iyi belgelenmemeli veya yeterince görünür olmamalıdır ...
Marcello Romani

3

Buradaki doğru cevap çok eskidir (Docker, boot2docker'ı Docker Machine olarak yeniden adlandırdı ve ona biraz daha işlevsellik ekledi) .

Her neyse, aynı sorunla karşılaştım ve düzeltmem yaklaşık 3 günümü aldı :(

İşte çözüm

1) yerini bulun boot2docker.iso

sudo find ~/ -name 'boot2docker.iso'

2) boot2docker.isoyedeğini aldıktan sonra dosyayı silin

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

3) docker sanal makinenizi silin

docker-machine rm {default}

bu onu da silmeli:

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

4) yeni docker sanal makinesi oluşturun

docker-machine create --driver virtualbox default

bu boot2docker.isoönce yenisini indirecek ve ardından vm'nizi oluşturmak için kullanacaktır.

Şimdi bu düzeltmeli :)

FAKAT

Burada herhangi bir hata alırsanız:

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"

https://api.github.com/repos/boot2docker/boot2docker/releases/latest adresineboot2docker.iso gidip ardından üzerine tıklayarak ve son olarak dosyayı indirmeyi seçerek dosyayı manuel olarak indirmeyi deneyin .html_url

dosyayı aldıktan sonra gidin ve manuel olarak yerleştirin /Users/{user}/.docker/machine/cache/

sonunda bu komutu yeniden çalıştırın docker-machine create --driver virtualbox default


2

Benim için işe yarayan tek şey, süreci bitirmek ve onu "sudo service docker start" ile başlatmaktı.


2

Benim için çalıştığım tek şey, boot2docker görüntüsünü VirtualBox'tan kaldırmak, ardından ~/.boot2dockerklasörü tamamen silmek ve sonunda boot2docker inittekrar çalıştırmaktı .


1

boot2docker silme

boot2docker başlatma

benim için çalıştı. elbette ondan önce ve sonra deamonu durdur / başlat.


1

Bu benim için çalıştı: Yalnızca vm'yi kapatır, siler, yeniden oluşturur ve yeniden başlatır. Shellinit'i yeniden çalıştırır, böylece ENV değişkenleriniz geri geldiğinde doğru IP adresiyle ayarlanır.

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

0

Boot2docker'ın (v1.7.1) en son sürümüne sahiptim ve istemci sunucu uyuşmazlığı hatası aldım. Sonra koştum boot2docker upgradeve sorunu çözdü.


0

Çözümüm, VirtualBox'taki docker VM'de Kapat> Kapatma yapmak ve ardından Kitematic'i yeniden başlatmaktı. Bu benim için düzeltti.


0

Docker.io web sitesindekine kıyasla brew sürümünün eski olduğunu görüyorum. Bu nedenle en iyi yolun web sitesine gidip kurulum dosyasını indirmek olduğunu düşünüyorum.


0

Ansible Cevap:

Eğer orada geldiyse yanıtlayıcı ' değil boot2docker, işte çözüm: Kullanım docker_api_version: autoargüman

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

Sanırım nedeni, Ansible tarafından kullanılan docker-py modülünün Ubuntu apt-get deposuyla aynı sürümde olmamasıdır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.