Machine: Respons kesalahan dari daemon: klien lebih baru daripada server dengan Docker 1.9 RC3

Dibuat pada 3 Nov 2015  ·  72Komentar  ·  Sumber: docker/machine

Berikut adalah informasi versinya:

> docker-machine -v
docker-machine version 0.5.0-rc3 (a1e610b)
> docker -v
Docker version 1.9.0-rc3, build 2100b94

Membuat mesin Docker:

> docker-machine create -d=virtualbox lab2
Running pre-create checks...
Creating machine...
Waiting for machine to be running, this may take a few minutes...
Machine is running, waiting for SSH to be available...
Detecting operating system of created instance...
Provisioning created instance...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
To see how to connect Docker to this machine, run: docker-machine env lab2

Dikonfigurasi sebagai:

eval $(docker-machine env lab2)

docker ps memberikan kesalahan berikut:

> docker ps
Error response from daemon: client is newer than server (client API version: 1.21, server API version: 1.20)

Ini adalah mesin yang baru dibuat menggunakan versi terbaru dari Docker CLI dan Mesin Docker.

Komentar yang paling membantu

Apakah Anda menjalankan docker-machine upgrade ?

Semua 72 komentar

Ya, UXnya tidak bagus tetapi jika Anda ingin menggunakan RC Docker biner, Anda perlu menentukan untuk menggunakan kandidat rilis ISO yang akan digunakan misalnya --virtualbox-boot2docker-url https://github.com/tianon/boot2docker-legacy/releases/download/v1.9.0-rc4/boot2docker.iso

Mengapa perlakuan khusus ini untuk RC?

Ini membuatnya tidak intuitif.

Nah, biner klien Docker Anda juga merupakan RC. Bagaimana menurut Anda itu harus berhasil?

RC secara otomatis akan mengambil boot2docker.iso dari RC. --virtualbox-boot2docker-url seharusnya hanya digunakan untuk mengganti nilai default. Dan defaultnya harus sama dengan biner klien Docker.

Saya pikir kita bisa berbuat lebih baik tentang mengizinkan upgrade / create untuk menggunakan RC baru secara default, tetapi saat ini RC untuk boot2docker kami simpan di garpu @tianon , jadi kami perlu ubah kebiasaan kita melakukan itu juga jika kita akan mendukung ini. Saya sedikit khawatir tentang membuat hal-hal terlalu ajaib karena setiap orang memiliki harapan yang sangat berbeda dalam hal ini.

Mencocokkan boot2docker.iso dengan biner klien Docker sepertinya pendekatan yang masuk akal dan intuitif. Dan akan ada opsi untuk menimpa.

Tidak ada sihir, paling tidak hanya intuitif bagi saya!

Melihat kesalahan yang sama persis dengan Docker 1.9.0 dan Mesin 0.5.0:

~ > docker ps
Error response from daemon: client is newer than server (client API version: 1.21, server API version: 1.20)
~ > docker -v
Docker version 1.9.0, build 76d6bc9
~ > docker-machine -v
docker-machine version 0.5.0 (04cfa58)

Saat ini tidak ada cara untuk membuka kembali masalah.

Apakah Anda menjalankan docker-machine upgrade ?

Mesin ini baru saja dibuat. Apakah saya juga perlu menjalankan docker-machine upgrade untuk itu?

@ arun-gupta Kemungkinan besar, untuk memperbarui cache Anda dan / atau jika Anda membuat mesin sebelum rilis resmi b2d terjadi.

@nathanleclaire membuat mesin 30 menit yang lalu lagi dan masih mendapatkan kesalahan yang sama. docker-compose up -d pada docker-compose.yml berhasil. Tapi docker ps memberikan kesalahan lagi:

> docker ps
Error response from daemon: client is newer than server (client API version: 1.21, server API version: 1.20)

Mengupgrade mesin secara eksplisit.

Apakah ada pemetaan versi b2d.iso dan Client / Server API?

docker-machine upgrade name seharusnya berfungsi, tebakan saya adalah "masalah cache ISO". Apakah Anda mencoba perintah itu?

boot2docker.iso selalu memetakan ke versi API rilis Docker yang sesuai. Anda dapat melihat versi cache di metadata dengan melakukan file $HOME/.docker/machine/cache/boot2docker.iso .

docker-machine upgrade menyelesaikan masalah.

Terima kasih Arun. Kami akan mengerjakan beberapa masalah seputar alur pemutakhiran, iterasi ini, jadi semoga ini akan menjadi sedikit lebih jelas di masa mendatang.

: +1: untuk docker-machine upgrade

1 untuk peningkatan mesin buruh pelabuhan - dengan asumsi satu-satunya hal yang ditingkatkan adalah terkait buruh pelabuhan;)

: +1: untuk docker-machine upgrade <machine name>

Setelah memutakhirkan dengan Docker Toolbox, mesin default dihentikan tetapi ditingkatkan.
Mesin lainnya tidak berhenti, dan tidak ditingkatkan.

docker-machine upgrade <machine-name> bekerja juga untuk saya

Saya menggunakan Windows 10 dan melihat masalah serupa yang secara aneh menghilang begitu saja saat dijalankan kedua kali. Inilah yang saya miliki dan urutan langkahnya.

  1. Saya menggunakan Docker Toolbox 1.8.3 dan memutuskan untuk menggunakan rilis terbaru 1.9.0c karena saya menghadapi beberapa masalah aneh.
  2. Saya menjalankan docker-machine rm default hanya sebagai langkah keamanan
  3. Mengunduh dan menginstal toolbox versi 1.9.0c
  4. Git adalah satu-satunya hal yang tidak saya pilih ketika diminta dan menginstal yang lainnya.
  5. Memulai _Docker Quickstart Terminal_
  6. Semuanya tampak baik-baik saja
Creating Machine default...
Running pre-create checks...
Creating machine...
Waiting for machine to be running, this may take a few minutes...
Machine is running, waiting for SSH to be available...
Detecting operating system of created instance...
Provisioning created instance...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
To see how to connect Docker to this machine, run: C:\Program Files\Docker Toolbox\docker-machine.exe env default
Setting environment variables for machine default...



                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/

docker is configured to use the default machine with IP 192.168.99.100
For help getting started, check out the docs at https://docs.docker.com

7. Dicentang untuk melihat bahwa mesin dibuat

$ docker-machine ls
NAME      ACTIVE   DRIVER       STATE     URL                         SWARM
default   *        virtualbox   Running   tcp://192.168.99.100:2376

8. Sejauh ini baik-baik saja, tapi

$ docker ps
Error response from daemon: client is newer than server (client API version: 1.21, server API version: 1.20)

9. Apa yang saya miliki?

$ docker-machine -v
C:\Program Files\Docker Toolbox\docker-machine.exe version 0.5.0 (04cfa58)
$ docker -v
Docker version 1.9.0, build 76d6bc9

10. Jalankan peningkatan mesin seperti yang disarankan di atas dan saya mendapatkan:

$ docker-machine upgrade default
Stopping machine to do the upgrade...
C:\Program Files\Oracle\VirtualBox\VBoxManage.exe showvminfo default --machinereadable failed:
VBoxManage.exe: error: The object is not ready
VBoxManage.exe: error: Details: code E_ACCESSDENIED (0x80070005), component ConsoleWrap, interface IConsole, callee IUnknown
VBoxManage.exe: error: Context: "COMGETTER(SharedFolders)(ComSafeArrayAsOutParam(folders))" at line 2306 of file VBoxManageInfo.cpp
$ docker-machine ls
NAME      ACTIVE   DRIVER       STATE     URL   SWARM
default   -        virtualbox   Stopped
$ docker-machine upgrade default
Error: machine must be running to upgrade.
$ docker-machine start default
Started machines may have new IP addresses. You may need to re-run the `docker-machine env` command.
$ docker-machine ls
NAME      ACTIVE   DRIVER       STATE     URL                         SWARM
default   *        virtualbox   Running   tcp://192.168.99.100:2376
$ docker-machine upgrade default
Stopping machine to do the upgrade...
Upgrading machine default...
Latest release for github.com/boot2docker/boot2docker is v1.9.0

Downloading https://github.com/boot2docker/boot2docker/releases/download/v1.9.0/boot2docker.iso to C:\Users\ssluser\.docker\machine\cache\boot2docker.iso...
Starting machine back up...

11. Semua baik-baik saja setelah itu. Hanya menjalankan peningkatan untuk kedua kalinya sepertinya berhasil.

@ arun-gupta @nathanleclaire docker-machine upgrade [nama-mesin] tetap tambang !!! Terimakasih banyak. FWIW, sinkronisasi pemutakhiran antara klien & server ini benar-benar PITA. Setiap siklus yang dihabiskan untuk membuat ini lebih baik akan sangat dihargai!

Ini tidak terbatas pada RC3 atau mesin buruh pelabuhan. Jika klien buruh pelabuhan 1.9.x dan server menjalankan buruh pelabuhan 1.8.x, pesan kesalahan diamati. Ini sangat tidak praktis dalam hal mengelola penerapan jika Anda tidak atau tidak dapat menginstal versi mesin buruh pelabuhan yang sama di semua server dan semua klien. Saya berpendapat bahwa ini adalah kerusakan yang cukup serius.

Juga pada dasarnya masalah yang sama seperti https://github.com/docker/machine/issues/1839

docker-machine upgrade <machine-name> juga bekerja untuk saya

docker-machine upgrade <machine-name> tidak bekerja untuk saya. Saya harus memutakhirkan semua server saya ke versi pengembang buruh pelabuhan, lalu saya menurunkan versi lagi dan mulai mendapatkan:

docker: Error response from daemon: client is newer than server (client API version: 1.22, server API version: 1.21).

Setelah penurunan versi manual, saya kemudian menjalankan docker-machine upgrade <machine-name> , tetapi kesalahan tetap ada.

salahku ... Saya perlu menghapus biner buruh pelabuhan baru dari jalur saya.

upgrade mesin buruh pelabuhanbekerja untuk saya, juga.

Inilah cara saya menjalankannya setelah mendapatkan kesalahan yang sama untuk 1.10.0-rc1:

docker-machine create -d=virtualbox -virtualbox-boot2docker-url https://github.com/tianon/boot2docker-legacy/releases/download/v1.10.0-rc1/boot2docker.iso docker

Saya harus menjalankan ini untuk v1.10.0-rc2 / de3bb7a (OS X 10.10.5):
docker-machine create -d=virtualbox -virtualbox-boot2docker-url https://github.com/tianon/boot2docker-legacy/releases/download/v1.10.0-rc2/boot2docker.iso docker

boot2docker telah dinyatakan tidak digunakan lagi. Apakah ini benar-benar solusi yang diinginkan dari masalah tersebut?

docker-machine masih menggunakan ISO boot2docker untuk membangun VM, itu tidak biasa.

Sepertinya ada banyak orang yang mengonfirmasi peningkatan daemon buruh pelabuhan di server (VM) tetapi ini tidak mengatasi kasus di mana daemon buruh pelabuhan tidak dapat segera ditingkatkan. Satu-satunya solusi cepat dan setengah masuk akal yang saya temukan sejauh ini adalah dengan mengunduh biner klien yang sesuai dari rilis dan menjalankan yang benar tergantung pada versi server.

boot2docker telah dinyatakan tidak digunakan lagi. Apakah ini benar-benar solusi yang diinginkan dari masalah tersebut?

Seperti yang dicatat oleh @superdump, CLI boot2docker (dipanggil menggunakan boot2docker pada baris perintah) sudah tidak digunakan lagi, tetapi OS tetap ada.

Terima kasih @nathanleclaire dan @superdump telah mengklarifikasi!

Saya telah berhasil (sayangnya hanya sementara) untuk memecahkan masalah dengan menginstal dmv dan menurunkan melalui

dmv use 1.8.1

Namun, saat menarik beberapa gambar (tetapi tidak semua), docker terus beralih ke 1.9.1 dan tidak ada lagi yang ditampilkan di bawah docker images (tetapi sebelumnya).

Apa yang terjadi disini? Apakah ini versi buggy / tidak stabil?

Ada versi B untuk kandidat rilis2

https://github.com/boot2docker/boot2docker/releases/tag/v1.10.0-rc2-b

menggunakan
docker-machine create -d=virtualbox -virtualbox-boot2docker-url https://github.com/boot2docker/boot2docker/releases/download/v1.10.0-rc2-b/boot2docker.iso docker

Saya baru saja mengalami masalah ini dengan mac lokal saya (homebrew) yang menjalankan 1.10, sedangkan mesin buruh pelabuhan - dalam hal ini di google gce, tidak akan berfungsi bahkan setelah mencoba peningkatan mesin buruh pelabuhan. Saya harus secara manual ssh ke dalamnya dan secara khusus menambahkan repo deb untuk memaksa peningkatan ke 1.10.

Baru saja menemukan yang itu di Travis CI:

$ export PATH=/opt/docker:$PATH
$ docker version
Client:
 Version:      1.10.2
 API version:  1.22
 Go version:   go1.5.3
 Git commit:   c3959b1
 Built:        Mon Feb 22 22:37:33 2016
 OS/Arch:      linux/amd64
Error response from daemon: client is newer than server (client API version: 1.22, server API version: 1.20)
The command "docker version" failed and exited with 1 during 

Saya menyelesaikannya setelah 3 hari debugging, dan saya menulis jawabannya di StackOverflow, Anda HARUS memeriksanya http://stackoverflow.com/questions/24586573/docker-error-client-and-server-dont-have-same-version / 36298911 # 36298911

Itu masih hanya tentang mesin buruh pelabuhan / kotak alat buruh pelabuhan. Semua proposal tersebut adalah solusi dan mungkin baik-baik saja untuk digunakan dengan kotak alat buruh pelabuhan tetapi tidak baik sama sekali untuk penerapan nyata buruh pelabuhan di mana server yang berbeda mungkin memiliki versi server yang berbeda dan tidak dapat segera ditingkatkan.

Masalah sebenarnya adalah bahwa klien buruh pelabuhan yang lebih baru tidak dapat berbicara dengan server yang lebih lama. Ini idealnya harus diperbaiki di buruh pelabuhan itu sendiri entah bagaimana sehingga klien kompatibel ke belakang.

Ini benar-benar cacat desain yang memukau dan berhenti menunjukkan yang benar-benar perlu diatasi segera jika mesin galangan ingin menjadi alat yang kredibel. Gagasan bahwa saya tidak dapat terhubung ke instance server sekarang karena versi API adalah _OLDER_ benar-benar mengejutkan.

Sayangnya, klien dibebaskan dengan cepat, tetapi klien membutuhkan waktu untuk mencapai repo.
Itulah sebabnya ketika Anda memutakhirkan mesin buruh pelabuhan (kotak alat), versi baru dari server mungkin tidak tersedia dan Anda dibiarkan terputus dari mesin Anda.

Yang aneh, adalah klien yang lebih baru tidak dapat "berbicara" dengan API yang lebih lama.

Jeda antara rilis resmi dan pembaruan repo ke rilis baru adalah sesuatu yang tidak dapat dipecahkan. Seperti yang saya lihat, ini membuat peningkatan klien, taruhan buta. Kecuali jika Anda yakin bahwa DM Anda dapat ditingkatkan ke versi klien yang sama, meningkatkan versi klien membuat Anda terkunci.

Hanya ada dua opsi (lainnya?).

  1. Klien harus dapat berbicara dengan API saat ini dan API berusia minimal 1 tahun.
  2. Peningkatan server harus memeriksa versi yang tersedia di repo resmi, dan jika tidak cocok, itu harus dibangun jika dari sumber (atau repo alternatif).

Yang perlu kita lakukan di sini adalah membuat klien mendukung versi lama API. Mengapa itu bukan persyaratan desain itu aneh.

@TheSeanBrady Docker Machine cukup baru.
Saya yakin bahwa mendukung berbagai API adalah salah satu pencapaian penting dari proyek ini.

Ini bukan masalah dengan mesin buruh pelabuhan, ini masalah dengan buruh pelabuhan.

$ docker --version
Docker version 1.11.0, build 4dc5990
╰$ docker ps
Error response from daemon: client is newer than server (client API version: 1.23, server API version: 1.22)
╰$ brew switch docker 1.10.3
╰$ docker --version
Docker version 1.10.3, build 20f81dd
╰$ docker ps
CONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS              PORTS                    NAMES

Yang perlu kita lakukan di sini adalah membuat klien mendukung versi lama API. Mengapa itu bukan persyaratan desain itu aneh.

Apa yang terjadi ketika klien dari masa depan mengirimkan parameter API yang tidak ada ke daemon yang tidak mengharapkannya? Atau membuat permintaan ke titik akhir yang tidak ada di versi lama? Bagaimana daemon seharusnya mengetahui tentang semua hal yang mungkin diminta oleh klien di masa mendatang?

@bayu_joo
Saya bukan ahli, tapi yang saya harapkan adalah cara yang sama jabat tangan dilakukan pada modem audio lama. Jabat tangan awal dilakukan menggunakan API tertua, yang dijamin akan dipahami oleh semua klien dan server, dan dijamin untuk setidaknya menanggapi panggilan dasar (vital).

Jabat tangan ini hanya akan menanyakan: Versi API apa yang Anda gunakan dan daftar fungsi API yang dapat diresponsnya. Fungsi klien dan server secara logis di-AND bersama-sama dan sekumpulan fungsi umum (panggilan api) ditetapkan untuk konfigurasi server-klien ITU.

Berdasarkan itu, klien akan tahu fungsi apa yang dapat dipanggil dan hanya menampilkan kesalahan pada fungsi yang tidak bisa.
IE [Tidak Didukung] - Maaf, server tidak dapat menanggapi _______. Harap perbarui server ke Docker nn.nnn.nn atau ubah penampung Anda agar sesuai dengan Docker nn.nnn.nn

Idenya adalah bahwa jika API hanya berbeda 1%, 1% itu tidak menonaktifkan penggunaan 99% lainnya yang kemungkinan besar adalah semua yang dibutuhkan klien.

Saya pikir ada dasar untuk perbaikan. Berjabat tangan dan menyetujui protokol umum bukanlah hal baru dan telah diselesaikan beberapa kali. Yang terpenting, itu akan sangat meningkatkan kegunaan.

Ingatlah selalu bahwa sebuah sistem, tidak peduli seberapa bagusnya, jika klien tidak menggunakannya (atau merasa tidak aman menggunakannya), sama saja dengan tidak ada.

@ctroncoso Saya mengerti maksud Anda, tetapi jika saya menjalankan time docker info berkomunikasi dengan server di amazonec2 / us-east-1 dibutuhkan sedikit lebih dari 300ms - tidak akan mundur-dan Jabat tangan -kemudian untuk setiap permintaan menggandakan jumlah waktu ini dan memperkenalkan jumlah overhead yang tidak sepele?

Bagaimanapun, tidak ada yang dapat dilakukan Mesin tentang masalah ini, jadi saya menyarankan masalah dibuka (cari yang sudah ada terlebih dahulu) di https://github.com/docker/docker untuk membagikan pemikiran Anda dengan upstream jika diinginkan.

@nathanleclaire yakin itu akan terjadi, tetapi apakah Anda akan menukar 20 x 300 (atau 600) ms untuk peningkatan yang dijamin berhasil? Juga, itu hanya untuk panggilan pertama. Mungkin "kunci sesi" dapat dibuat pada panggilan pertama yang menetapkan bahwa jabat tangan telah dibuat. dan digunakan berikut ini tanpa jabat tangan ulang. Saya yakin bahwa ada masalah keamanan yang mungkin muncul, tetapi saya lebih suka memiliki sistem anti-gagal yang tidak terlalu cepat, daripada sistem yang mungkin memperkenalkan beban kerja yang tidak terduga hanya karena ubuntu / fedora / centos tidak melakukannya. tidak memperbarui repos tepat waktu. Saya melihat bahwa ini adalah masalah mesin buruh pelabuhan tetapi mesinlah yang disalahkan.

Saya akan memeriksa masalah di mesin buruh pelabuhan. Saya pikir kita punya fitur bagus di sini. Saya suka jika pembicaraan masalah berakhir dengan ide yang konstruktif. Terima kasih atas waktu Anda @nathanleclaire !!!

Klien sudah menanyakan server untuk versi. Seharusnya tidak ada
alasan bahwa klien pernah mengirim parameter API yang tidak ada,
karena klien HARUS mengetahui parameter yang tersedia untuk itu
Versi: kapan. Hal yang sama berlaku untuk titik akhir.

Saya percaya bahwa pendekatan ini membutuhkan penghentian yang lebih tua
versi di beberapa titik, mungkin berdasarkan usia atau versi delta.

Anda tidak bisa membuat klien tersedak pada versi yang lebih lama, itu
bukan pilihan untuk penerapan tingkat produksi. Saya memiliki 3 mesin utuh
di sini dan saya mengalami masalah ini, gambar apa yang akan terjadi pada bubar
penyebaran.

Pada hari Kamis, 21 April 2016 jam 14:47, Nathan LeClaire [email protected]
menulis:

Yang perlu kita lakukan di sini adalah membuat klien mendukung versi lama API.
Mengapa itu bukan persyaratan desain itu aneh.

Apa yang terjadi ketika klien dari masa depan mengirimkan parameter API itu
tidak ada daemon yang tidak mengharapkannya? Atau membuat permintaan ke
endpoint yang tidak ada di versi lama? Bagaimana daemon seharusnya
untuk mengetahui tentang semua hal yang mungkin diminta oleh klien masa depan?

-
Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung atau lihat di GitHub
https://github.com/docker/machine/issues/2147#issuecomment -213107758

Klien sudah menanyakan server untuk versi

Bisakah Anda mengarahkan saya ke bagian mana dalam kode klien Docker ini terjadi?

Saya tidak begitu tahu Go, tapi saya cukup yakin itulah fungsinya:

https://github.com/docker/docker/blob/eab65e438ecc406baf935c8df544982164cff72f/integration-cli/docker_api_test.go

Apa pun cara Anda melihat pola kueri versi API di seluruh proyek.

Pada hari Kamis, 21 April 2016 jam 17:25, Nathan LeClaire [email protected]
menulis:

Klien sudah menanyakan server untuk versi

Bisakah Anda mengarahkan saya ke bagian mana dalam kode klien Docker ini terjadi?

-
Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung atau lihat di GitHub
https://github.com/docker/machine/issues/2147#issuecomment -213157495

berikut adalah metode saya untuk mengatasi masalah ini:
kemarin, ketika saya membuat versi buruh pelabuhan terbaru dari https://github.com/docker/docker.git merujuk ke https://docs.docker.com/v1.5/contributing/devenvironment/ dan memodifikasi klien buruh pelabuhan lama biner dengan yang baru.
terjadi "klien lebih baru dari server dengan Docker", dan daemon buruh pelabuhan gagal untuk memulai ulang:

  • / bin / systemctl status docker.service
    ● docker.service - Mesin Kontainer Aplikasi Docker
    Dimuat: dimuat (/lib/systemd/system/docker.service; diaktifkan; preset vendor: diaktifkan)

tetapi ada binari daemon yang dibuat di direktori:
bundel / terbaru / biner-daemon
harus menambahkan direktori ke PATH, atau salin dockerd dan containerd ke / usr / bin /
_copy dockerd / usr / bin / docker
salin docker-containerd / usr / bin / containerd
salin ../binary-client/docker / usr / bin_

lalu saya memodifikasi /etc/init.d/docker untuk menambahkan direktori dockerd ke PATH dengan baris yang disorot

DOCKERD = / home / master / github.com / docker / bundles / 1.12.0-dev / binary-daemon
ekspor PATH = $ PATH: $ DOCKERD

BASE = dockerd

ubah ini di / etc / default / $ BASE (/ etc / default / docker)

DOCKER = / usr / bin / $ BASE

DOCKER = $ DOCKERD / $ BASE
Ini adalah file pid yang dikelola oleh buruh pelabuhan itu sendiri
DOCKER_PIDFILE = / var / run / $ BASE.pid
Ini adalah file pid yang dibuat / dikelola oleh start-stop-daemon
DOCKER_SSD_PIDFILE = / var / run / $ BASE-ssd.pid
DOCKER_LOGFILE = / var / log / $ BASE.log
DOCKER_OPTS =
DOCKER_DESC = "Docker"

kemudian saya memulai kembali layanan dockerd, itu dimulai dengan sukses:
_root @ master : ~ # status pekerja galangan layanan
● docker.service - Mesin Kontainer Aplikasi Docker
Dimuat: dimuat (/lib/systemd/system/docker.service; diaktifkan; preset vendor: diaktifkan)
Aktif: aktif (berjalan) sejak Rabu 2016-05-04 04:32:01 EDT; 17 jam yang lalu
Dokumen: https: //docs.docker.com_

root @ master : ~ # versi buruh pelabuhan
Klien:
Versi: 1.12.0-dev
Versi API: 1.24
Go versi: go1.5.4
Git commit: 1c0edf6-unsupported
Dibangun: Rabu 4 Mei 05:05:37 2016
OS / Arch: linux / amd64

Server:
Versi: 1.12.0-dev
Versi API: 1.24
Go versi: go1.5.4
Git commit: 1c0edf6-unsupported
Dibangun: Rabu 4 Mei 05:05:37 2016
OS / Arch: linux / amd64
root @ master : ~ #

semua berjalan bahagia

hanya untuk referensi

Hai, ada yang bisa membantu saya?
Saya mengalami masalah yang sama. Saya mengerti bahwa upgrade mesin buruh pelabuhan akan bekerja tetapi saya tidak menggunakan buruh pelabuhan di Windows / MAC. Saya menggunakannya di Linux.

Saya mengikuti instruksi ini untuk membuat tes untuk bermain dengan kepercayaan konten buruh pelabuhan
https://docs.docker.com/engine/security/trust/trust_sandbox/

Dalam file galangan yang disediakan, dibutuhkan gambar 1.12.0 dan kemudian membuat gambar, jadi ketika saya menjalankan kontainer itu tidak terhubung ke mesin dasar saya karena mesin dasar saya (Linux) memiliki buruh pelabuhan 1.11.0 dan ini memiliki 1.12.0 , jadi saya kemudian mengubah file buruh pelabuhan dan meneruskan jalur 1.11.0-dev ke sana dan menghasilkan gambar lagi. Kali ini ketika saya menjalankan container dengan file baru ini, versi docker hanya 1.11.0-dev tetapi versi API masih 1.24 tetapi Linux basis saya memiliki versi API 1.23.

Bagaimana cara menyingkirkan ini? Bagaimana cara mengurangi versi API penampung saya ke 1.23 atau meningkatkan versi API dasar saya ke 1., 24 sehingga tidak akan ada kesalahan?

PS: Saya mencoba memutakhirkan versi buruh pelabuhan linux dasar saya tetapi masih versi API hanya 1,23.

upload

@konakan

Di Ubuntu, sudo apt-get install -y docker-engine akan memperbarui versi bawaan Docker (Peringatan: Ini hanya akan berfungsi jika Anda telah menginstal Docker menggunakan saluran resmi)

docker-machine upgrade , seperti yang Anda catat, akan memperbarui boot2docker.iso Anda miliki ke versi terbaru

@nathanleclaire Hai,

@mkonakan Taruhan terbaik Anda mungkin mengkompilasi Docker dari sumber,

Terpecahkan. Saya menyalin file biner dari mesin dasar saya ke container daripada file default di dockerfile yang mendapatkan versi API terbaru. Terima kasih.

👍

Mengapa ini ditutup? Apakah klien buruh pelabuhan terbaru dapat berinteraksi dengan daemon buruh pelabuhan lama?

@megastef Saya tidak menyadarinya, tapi itu masalah proyek upstream (https://github.com/docker/docker), jadi saya sarankan mencari masalah kompatibilitas ke depan di sana jika Anda ingin berdiskusi .

saya memiliki masalah yang sama, saya mencoba menggunakan nama upgrade mesin-buruh pelabuhan , jadi sayang itu tidak berfungsi. saya tidak tahu apakah jaringan although use proxy , tetapi saya memecahkan masalah ini.
1. temukan kotak alat dari
2. unduh dan instal, lalu itu akan meningkatkan versi Anda.

docker-machine upgrade tidak berfungsi dalam skenario saya. Tampaknya CoreOS Docker Host macet di versi 1.22. Klien saya menjalankan 1,24. Bagaimana cara mengatasi ini?

@ pcgeek86 coba export DOCKER_API_VERSION=1.23 (lihat https://forums.docker.com/t/docker-for-mac-stopped-running-docker-related-commands/16153/6)

Saya mengalami masalah ini juga, dengan Windows beta. docker-machine upgrade tidak membantu.
Salah satu solusi alternatif adalah menambahkan --engine-install-url https://test.docker.com ke docker-machine create , yang akan menginisialisasi mesin dengan kandidat rilis terbaru Docker.

Rincian:

> docker -v
Docker version 1.12.0-rc4, build e4a0dbc, experimental
> docker-machine -v
docker-machine version 0.8.0-rc2, build 4ca1b85

> docker-machine create --driver amazonec2 aws01
> <strong i="12">@FOR</strong> /f "tokens=*" %i IN ('docker-machine env aws01') DO @%i
> docker ps
Error response from daemon: client is newer than server (client API version: 1.24, server API version: 1.23)
(Here we could have used SET DOCKER_API_VERSION=1.23)

> docker-machine create --driver amazonec2 --engine-install-url https://test.docker.com aws02
> <strong i="13">@FOR</strong> /f "tokens=*" %i IN ('docker-machine env aws02') DO @%i
> docker ps
(Works!)

Bisakah yang ini diperbaiki (atau mungkin dikerjakan) dengan menambahkan DOCKER_API_VERSION ke output docker-machine env ?

Saya menyelesaikan masalah berkat @eddieajau.

Klien buruh pelabuhan saya (DOCKER_API_VERSION = 1.24) adalah Ubuntu linux dan server buruh pelabuhan (DOCKER_API_VERSION = 1.23) ada di Carina oleh Rackspace BETA.

Cukup tambahkan export DOCKER_API_VERSION=1.23 ke klien Anda agar berhasil.

Terima kasih.

export DOCKER_API_VERSION=1.23 memecahkan masalah saya. terima kasih kepada @eddieajau

Terima kasih @ kid1412z, ini juga berfungsi untuk saya sebagai perbaikan cepat.

Kembali ke versi lama

brew uninstall docker
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/ba2a4f0358395010e84346d2224378c74d76c527/Formula/docker.rb
brew pin docker

ya Tuhan. menegosiasikan versi protokol bukanlah hal yang masih perlu diciptakan. Saya telah bekerja dengan perangkat lunak dari tahun 90-an yang dapat menangani ini. yuck, sungguh.

@FlorianHeigl docker client 1.13 dan yang lebih tinggi melakukan negosiasi versi API dengan daemon; versi daemon minimum yang akan digunakan adalah docker 1.12. Untuk daemon lama, diperlukan penggantian DOCKER_API_VERSION

@eddieajau Solusi variabel lingkungan DOCKER_API_VERSION = 1,23 tidak berfungsi lagi.
Saya menggunakan buruh pelabuhan untuk Windows dan saya terhubung ke server buruh pelabuhan yang berjalan pada NAS yang tidak dapat saya perbarui.

Windows:

Client:
 Version:      17.09.0-ce
 API version:  1.32
 Go version:   go1.8.3
 Git commit:   afdb6d4
 Built:        Tue Sep 26 22:40:09 2017
 OS/Arch:      windows/amd64

Server:
 Version:      17.09.0-ce
 API version:  1.32 (minimum version 1.12)
 Go version:   go1.8.3
 Git commit:   afdb6d4
 Built:        Tue Sep 26 22:45:38 2017
 OS/Arch:      linux/amd64
 Experimental: true

Nas:

Client:
 Version:      1.11.2
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   781516c
 Built:        Thu Aug  3 16:04:05 2017
 OS/Arch:      linux/amd64

Server:
 Version:      1.11.2
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   781516c
 Built:        Thu Aug  3 16:04:05 2017
 OS/Arch:      linux/amd64

Apakah ada yang punya ide?

@manuelsalvatori itu masalah di buruh pelabuhan 17.09 cli; sudah diperbaiki di 17.10 (lihat https://github.com/moby/moby/pull/35008)., belum di-backport ke 17.09.

Ketahuilah bahwa pekerja galangan 1.11 sudah berakhir masa pakainya, dan memiliki kerentanan yang diketahui, di antaranya CVE di RunC yang memungkinkan proses kontainer untuk keluar dari kontainer dan mendapatkan akses ke host (diselesaikan di pekerja galangan 1.12.6 dan lebih tinggi, yang mengirimkan dengan versi RunC yang ditambal https://github.com/moby/moby/releases/tag/v1.12.6)

Apakah halaman ini membantu?
0 / 5 - 0 peringkat