Ponieważ właśnie zaktualizowałem Dockera do wersji 1.1.0, otrzymuję:
Odpowiedź na błąd od demona: klient i serwer nie mają tej samej wersji (klient: 1.13, serwer: 1.12)
Czy wiesz, jak to naprawić?
Wróciłem do 1.0.1 i wszystko znowu działa.
Ponieważ właśnie zaktualizowałem Dockera do wersji 1.1.0, otrzymuję:
Odpowiedź na błąd od demona: klient i serwer nie mają tej samej wersji (klient: 1.13, serwer: 1.12)
Czy wiesz, jak to naprawić?
Wróciłem do 1.0.1 i wszystko znowu działa.
boot2docker
problem (do wykorzystania w przyszłości).
Odpowiedzi:
Wygląda na to, że po zainstalowaniu boot2dockera musisz zaktualizować maszynę wirtualną:
Jeśli aktualizujesz z boot2docker 0.12 lub nowszego, możesz zaktualizować istniejącą maszynę wirtualną (po aktualizacji za pomocą instalatora) za pomocą boot2docker stop && boot2docker download && boot2docker up - i nie stracisz istniejących danych.
( https://github.com/boot2docker/osx-installer/releases/tag/v1.1.0 )
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
: /
boot2docker delete
wtedy boot2docker init
i zaczęło działać.
Może się tak zdarzyć, jeśli zaktualizowałeś Docker, ale usługa nie została ponownie uruchomiona. Następnie spróbujesz połączyć się z demonem Docker ze zaktualizowanym klientem, podczas gdy demon (który był już uruchomiony przed aktualizacją) nadal działa w starszej wersji.
Aby to naprawić, uruchom ponownie usługę:
sysV init:
service docker restart
systemd:
systemctl daemon-reload
systemctl restart docker
systemd
zaleca się zrobić systemctl daemon-reload
wcześniejsystemctl restart docker
Jeśli używasz docker-machine
do zarządzania lokalnymi maszynami opartymi na VirtualBox, rozwiązanie jest tak proste, jak w przypadku boot2docker:
docker-machine upgrade MACHINE_NAME
Prosi docker-machine
o pobranie najnowszej wersji boot2docker.iso
i umieszczenie jej jako nowego głównego systemu plików na zaktualizowanej maszynie wirtualnej.
Nawiasem mówiąc, maszyna dokowana wspierana przez VirtualBox ma swój główny system plików tylko do odczytu. Oznacza to, że żadna ręczna aktualizacja nie przetrwa ponownego uruchomienia komputera. To była dla mnie niespodzianka.
Miałem najnowszą wersję boot2dockera, dockera i wirtualnego boxu, ale nadal otrzymywałem tę wiadomość. Wygląda na to, że bieganie brew upgrade boot2docker
nie jest najlepszym pomysłem. Podczas uruchamiania boot2docker upgrade
zostałem poproszony o ustawienie kilku zmiennych środowiskowych i wtedy zadziałało.
Boot2docker poprosił mnie o ustawienie tych (zobacz ostatnie wiersze):
$ 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
Możliwe jest wycięcie i wklejenie tych trzech linii za jednym razem do terminala.
Aby sprawdzić, czy są poprawne:
$ env
Próbowałem wysłać zapytanie do serwera Docker za pomocą nowszego klienta:
Rozwiązaniem dla mnie było po prostu:
export DOCKER_API_VERSION=1.21
Źródła: https://docs.docker.com/engine/reference/commandline/cli/
Prawidłowa odpowiedź jest tutaj bardzo stara (Docker zmienił nazwę boot2docker na Docker Machine i dodał do niego więcej funkcji) .
W każdym razie napotkałem ten sam problem i zajęło mi około 3 dni, aby naprawić :(
Oto rozwiązanie
1) znajdź lokalizację pliku boot2docker.iso
sudo find ~/ -name 'boot2docker.iso'
2) usunąć boot2docker.iso
plik po wykonaniu jego kopii zapasowej
/Users/{user}/.docker/machine/cache/boot2docker.iso
3) Usuń Docker VM
docker-machine rm {default}
powinno to również usunąć ten:
/Users/{user}/.docker/machine/machines/default/boot2docker.iso
4) Utwórz nową maszynę docker vm
docker-machine create --driver virtualbox default
to najpierw pobierze nowy, boot2docker.iso
a następnie użyje go do utworzenia maszyny wirtualnej.
Teraz powinno to naprawić :)
Jeśli pojawi się tutaj jakiś błąd, taki jak:
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"
spróbuj pobrać boot2docker.iso
plik ręcznie, przechodząc do https://api.github.com/repos/boot2docker/boot2docker/releases/latest, a następnie klikając html_url
i ostatecznie wybierając opcję pobrania pliku.
po otrzymaniu pliku idź i umieść go ręcznie w /Users/{user}/.docker/machine/cache/
na koniec ponownie uruchom to polecenie docker-machine create --driver virtualbox default
To zadziałało dla mnie: po prostu wyłącza maszynę wirtualną, usuwa i odtwarza ją i ponownie uruchamia. Ponownie uruchamia shellinit, dzięki czemu zmienne ENV zostaną ustawione z poprawnym adresem IP, gdy powróci.
$ boot2docker poweroff && \
boot2docker delete && \
boot2docker init && \
boot2docker up
$ eval `boot2docker shellinit`
Moim rozwiązaniem było wykonanie Zamknij> Wyłącz na maszynie wirtualnej dockera w VirtualBox, a następnie ponownie uruchom Kitematic. To naprawiło to dla mnie.
Jeśli trafiłeś tam przez Ansible, a nie przez boot2docker, oto rozwiązanie: użyj docker_api_version: auto
argumentu
- name: Mongo data container
docker:
docker_api_version: auto
name: mongo-primary-dc
image: debian:wheezy
state: present
volumes:
- /data
Myślę, że powodem jest to, że moduł docker-py używany przez Ansible często nie jest w tej samej wersji, co repozytorium Ubuntu apt-get.
boot2docker
. Czy to również twoja sprawa?