Machine: Menggunakan docker-machine untuk mengimpor host menggunakan --driver = generic dan / atau --url, tidak berfungsi.

Dibuat pada 23 Mei 2015  ·  62Komentar  ·  Sumber: docker/machine

hai teman-teman
Ini bukan masalah. Saya minta maaf jika ini adalah tempat yang salah untuk menanyakan pertanyaan ini. Jika ini bukan tempat yang tepat, harap arahkan saya ke tempat yang tepat.

Saya memahami bahwa kita dapat menggunakan mesin galangan untuk terhubung ke berbagai host menggunakan driver seperti Virtualbox, driver penyedia cloud, dll. Jika saya sudah memiliki host yang menjalankan Docker di dalam baremetal Linux, bagaimana kita mengintegrasikannya dengan mesin buruh pelabuhan? Tanpa docker-machine, saya dapat melakukan hal yang sama dengan menjalankan daemon Docker pada port tertentu dan menghubungkan secara eksternal dari klien buruh pelabuhan ke ip dan port daemon buruh pelabuhan. Ada opsi di docker-machine untuk membuat host tanpa driver apa pun, apakah itu untuk tujuan ini? Saya tidak dapat menemukan cara menggunakannya untuk menghubungkan.

Terima kasih
Sreenivas

drivegeneric kinbug

Komentar yang paling membantu

@nathanleclaire Ada pembaruan tentang ini? Saya mencoba mencari cara untuk menyambung ke Host Docker yang berjalan di Microsoft Azure, yang saya buat dari komputer lain, menggunakan docker-machine . Saat ini, saya tidak punya solusi.

Semua 62 komentar

Hai @smakam , saya yakin yang Anda cari adalah url driver: http://docs.docker.com/machine/#adding -a-host-without-a-driver

Hai @nathanleclaire
Terima kasih atas tanggapannya.
Saya memang melihat tautan yang Anda sebutkan dan saya mencoba yang berikut, tidak berhasil.

Pertama, saya mencoba tanpa TLS:
Pada mesin Ubuntu saya melakukan ini untuk memulai agen buruh pelabuhan:
sudo docker -d -H unix: ///var/run/docker.sock -H tcp: //192.168.56.101 : 2376 &

Di Windows, tempat saya menginstal mesin buruh pelabuhan, saya melakukan ini:
$ docker-machine create --url = tcp: //192.168.56.101 : 2376 custom6
← [34mINFO ← [0m [0000] "custom6" telah dibuat dan sekarang menjadi mesin yang aktif.
$ buruh pelabuhan-ls
NAMA DRIVER AKTIF NEGARA URL SWARM
custom6 * none tcp: //192.168.56.101 : 2376

Saya mendapatkan kesalahan ini:
$ docker-machine env custom6
← [31mFATA ← [0m [0000] buka C: \ Users \ srmakam.docker \ machine \ machines \ custom6ca.pem: Sistem tidak dapat menemukan file yang ditentukan.

Tidak yakin apakah mesin buruh pelabuhan memberlakukan TLS. Saya mencoba memulai agen buruh pelabuhan dengan sertifikat dan kunci dan mencoba dengan klien buruh pelabuhan, tidak berhasil juga.

Terima kasih
Sreenivas

Kami pada dasarnya mengamanatkan TLS dalam bentuk kami saat ini. Jika Anda mengatur CA dan sertifikat / kunci Anda sendiri, saya pikir Anda mungkin dapat menggunakannya melalui opsi --tls-ca-cert , --tls-ca-key gloabl ke Mesin Docker. @ehazlett Ada komentar?

Hai

Saya mencoba dengan TLS, saya masih tidak bisa membuatnya berfungsi, tidak yakin apa yang saya lewatkan:
Saya mulai buruh pelabuhan di host Ubuntu saya:
sudo / usr / bin / docker -d --tlsverify --tlscacert =

/ca.pem --tlskey =/key.pem --tlscert =/cert.pem --host = unix: ///var/run/docker.sock --host = tcp: //0.0.0.0 : 2376

Lalu saya mencoba membuat host mesin galangan tanpa driver:
buruh pelabuhan-mesin --tls-client-cert =

/cert.pem --tls-ca-cert =/ca.pem --tls-client-key =/key.pem create --url = tcp: //: 2376 adat3

Ketika saya mencoba melihat lingkungan, saya mendapatkan kesalahan berikut:
$ docker-machine env custom3
← [31mFATA ← [0m [0000] buka C: \ Users \ srmakam.docker \ machine \ machinescustom3ca.pem: Sistem tidak dapat menemukan file yang ditentukan.

Terima kasih
Sreenivas

Anda kemungkinan besar ingin menggunakan CA yang ada, klien, dll untuk semua hal yang berhubungan dengan mesin karena pengaturan --tls-ca-cert etc bersifat global.

Adapun daemon buruh pelabuhan Anda, Anda ingin menggunakan CA dan sertifikat / kunci server - di atas Anda menggunakan sertifikat CA, tetapi kunci dan sertifikat klien. Anda membutuhkan sesuatu seperti:

docker -d --tlsverify --tlscacert ca.pem --tlscakey ca-key.pem --tlscert server.pem --tlskey server-key.pem

@tokopedia
Saya mencoba menggunakan pengaturan global di direktori "certs" untuk membuat mesin galangan opsi menentukan opsi di baris perintah, masih ada keluhan tentang "ca.pem" yang hilang di mesin /\ direktori.
Bagaimana cara mendapatkan "server.pem" dan "server-key.pem"? Haruskah saya membuatnya?

Saya dapat menghubungkan antara klien buruh pelabuhan dan agen buruh pelabuhan di mesin terpisah menggunakan TLS tanpa menggunakan mesin buruh pelabuhan.

Terima kasih
Sreenivas

Dapatkah Anda menunjukkan argumen baris perintah yang digunakan? Jika Anda menentukan mesin certs sebaiknya gunakan saja. Jika tidak, itu bug :)

Hai @ehett
Pertama, saya memulai agen buruh pelabuhan seperti ini:
sudo / usr / bin / docker -d --tlsverify --tlscacert = / home / xxx / .docker / machine / certs / ca.pem --tlskey = / home / xxx / .docker / machine / certs / key.pem --tlscert = / home / xxx / .docker / machine / certs / cert.pem --host = unix: ///var/run/docker.sock --host = tcp: //0.0.0.0 : 2376

Kemudian saya memulai klien galangan kapal seperti ini:
docker-machine --tls-ca-cert = / home / xxx / .docker / machine / certs / ca.pem --tls-client-key = / home / xxx / .docker / machine / certs / key.pem - -tls-client-cert = / home / xxx / .docker / machine / certs / cert.pem create --url = tcp: //0.0.0.0 : 2376 custom3

Saya mendapat kesalahan ini saat mengatur lingkungan:
xxx @ ubuntu : ~ $ docker-machine env custom3
buka /home/xxx/.docker/machine/machines/custom3/ca.pem: tidak ada file atau direktori seperti itu

Di sini, saya menjalankan agen buruh pelabuhan dan mesin buruh pelabuhan di mesin Ubuntu yang sama. Saya mendapatkan kesalahan serupa saat menjalankan agen buruh pelabuhan di Ubuntu dan mesin buruh pelabuhan di Windows.

Terima kasih
Sreenivas

Anda tidak boleh menggunakan key.pem dan cert.pem untuk mesin Docker. Mesin memerlukan pasangan kunci / sertifikat server (Mesin akan membuatnya).

Untuk lingkungan, bagaimana Anda membuat mesin custom3 ? Sepertinya ada yang tidak beres selama pembuatan jika file itu tidak ada.

Hai @ehett
Bagaimana cara memulai mesin buruh pelabuhan? Sesuai pemahaman saya, mandat buruh pelabuhan menggunakan TLS.

Beginilah cara saya membuat mesin custom3. Ini tidak memberi saya kesalahan apapun.
docker-machine --tls-ca-cert = / home / xxx / .docker / machine / certs / ca.pem --tls-client-key = / home / xxx / .docker / machine / certs / key.pem - -tls-client-cert = / home / xxx / .docker / machine / certs / cert.pem create --url = tcp: //0.0.0.0 : 2376 custom3

Haruskah saya membuat pasangan kunci / sertifikat server secara manual seperti yang akan dilakukan mesin jika driver digunakan dengan mesin galangan?

Terima kasih
Sreenivas

@akam ini seharusnya benar. Ini harus menghasilkan kunci server berdasarkan CA yang ada itu. Saya akan melakukan beberapa pengujian untuk melihat apakah ada masalah.

@smakam Ada pembaruan tentang masalah ini atau dapatkah kita menutupnya?

@nathanleclaire Saya masih belum bisa membuatnya bekerja. Saya bahkan mencoba dengan docker-machine 3.0 dengan prosedur driver generik yang disebutkan di sini (http://blog.docker.com/2015/06/docker-machine-0-3-0-deep-dive/)
Inilah yang disebutkan:
buruh pelabuhan-membuat -d generik \
--generic-ssh-user ubuntu \
--generic-ssh-key ~ / Downloads / secara manual_created_key.pub \
--generic-ip-address 12.34.56.78 \
Hutan

Saya berasumsi .pub adalah salah ketik dan kita perlu memberikan kunci pribadi. Saya mendapat 2 jenis kesalahan di 2 host berbeda:

kasus 1:
Mengimpor kunci SSH ...
Kesalahan membuat mesin: status keluar 1
Anda sebaiknya memeriksa penyedia untuk memastikan mesin dan sumber daya terkait telah dihapus dengan benar.

kasus 2:
Mengimpor kunci SSH ...
Kesalahan mendapatkan perintah SSH untuk memeriksa apakah daemon sudah aktif: status keluar 1
Kesalahan mendapatkan perintah SSH untuk memeriksa apakah daemon sudah aktif: status keluar 1

btw, di mana log rinci mesin buruh pelabuhan disimpan?
Saya mencoba dengan mesin buruh pelabuhan untuk windows dan linux.

Terima kasih
Sreenivas

Masalah yang sama.
Cara umum --url dan -d tidak berfungsi.

Saya mencoba langkah yang sama seperti poster asli dan mendapat masalah serupa di mana saya mencoba driver generik dan mengalami kesalahan yang mirip dengan kasus 1 (CentOS 7)

Permasalahan yang sama. Tidak dapat menggunakan --url dan menentukan sertifikat.

Bolehkah saya menyarankan tim Docker menulis tutorial singkat yang membawa kita melalui langkah demi langkah, itu akan sangat membantu.

Masalah yang sama di sini dengan anyconnect vpn terhubung, baik setelah saya me-restart laptop saya tanpa koneksi apa pun, itu hilang.

1 untuk masalah ini.
Saya sudah mencoba menggunakan docker-machine create --url= dengan setup buruh pelabuhan yang ada di remote host, tapi tidak berhasil. DM gagal mencoba mendapatkan TLS dari $HOME/.docker/machine/machines/<name>/ca.pem .

Permasalahan yang sama. Saya mencoba langkah yang sama, tetapi tetap tidak ada sertifikat / kunci server yang dibuat.
docker-machine versi 0.4.0
Docker versi 1.8.0

Permasalahan yang sama. Saya mencoba langkah yang sama, tetapi tetap tidak ada sertifikat / kunci server yang dibuat.
buruh pelabuhan versi 0.4.1
Docker versi 1.8.1

@csokun @ miracle-in-sunday @narqo Umumnya diasumsikan bahwa dengan menggunakan --url Anda "membawa sertifikat Anda sendiri" meskipun saya akui, bahwa sedikit kode telah merana sehingga mungkin rusak.

Jika Anda ingin sertifikat dan kunci dibuat secara otomatis, coba driver generic : https://docs.docker.com/machine/drivers/generic/

Jika itu tidak berhasil untuk kasus penggunaan Anda, dapatkah saya meminta Anda mengajukan masalah terpisah yang merinci langkah-langkah persis yang Anda ambil, dan hasil yang Anda lihat?

Terima kasih!

Hai Teman-teman, Apakah Anda mencoba dengan --virtualbox-hostonly-cidr speciefied? Bekerja untuk saya:

Bartslaman @ vlrnb176 ~
$ docker-machine buat -d virtualbox --virtualbox-hostonly-cidr "192.168.99.100/24" dev4
Membuat VirtualBox VM ...
Membuat kunci SSH ...
Memulai VirtualBox VM ...
Memulai VM ...
Untuk melihat bagaimana menghubungkan Docker ke mesin ini, jalankan: C: \ Program Files (x86) \ Git \ bindocker-machine env dev4

Bartslaman @ vlrnb176 ~
$ docker-machine env dev4
ekspor DOCKER_TLS_VERIFY = "1"
ekspor DOCKER_HOST = " tcp: //192.168.99.101 : 2376"
ekspor DOCKER_CERT_PATH = "C: \ Users \ BartSlaman.docker \ machine \ Machines \ dev4"
ekspor DOCKER_MACHINE_NAME = "dev4"

Salam
Bart Slaman

Ada pembaruan tentang masalah ini? Saya mencoba --url dengan --tls- * tetapi saya mendapat kesalahan "buka /Users/user/.docker/machine/machine/ss/ca.pem tidak ada file atau direktori seperti itu". Saya menggunakan docker-machine versi 0.4.1

Sama di sini, tetapi kesalahan yang berbeda saat membuat:

Mengimpor kunci SSH ...
Kesalahan cmd SSH!
perintah: sudo nama host internal && echo "internal" | sudo tee / etc / hostname
err: status keluar 1
output: sudo: tidak ada tty sekarang dan tidak ada program askpass yang ditentukan

Dan saat menjalankan eval "$ (docker-machine env internal)":
buka /Users/marlon/.docker/machine/machines/internal/ca.pem: tidak ada file atau direktori seperti itu

Artinya, sertifikat tidak sedang dibuat.

Lucunya, saya bisa ssh ke mesin yang menjalankan "docker-machine ssh internal".

Saya bisa mendapatkan --url untuk bekerja dan menunjuk ke mesin Docker yang ada di DigitalOcean yang dibuat dengan Mesin Docker.

Untuk menggunakan --url atau none driver, saya baru saja menyalin folder ~/.docker/machine/machines/dobox/ pada mesin yang saya gunakan untuk membuat host dan menghapus cert.pem , key.pem , id_rsa.pub , id_rsa dan config.json (tersisa ca.pem , server.pem dan server-key.pem ). Saya kemudian membuat pasangan sertifikat / kunci klien baru (https://docs.docker.com/articles/https/, dimulai dari "Untuk otentikasi klien") di dalam direktori yang baru dibuat dari sebelumnya dan menyalinnya ke mesin tempat saya sebelumnya mencoba menyambung dari. Terakhir, saya menambahkan host jarak jauh menggunakan docker-machine create --url=tcp://SOME_IP:2376 dobox dan memindahkan sertifikat ke tempat yang diharapkan Mesin Docker: ~/.docker/machine/machines/dobox/ . Folder tersebut seharusnya sudah ada di sana dan berisi config.json , jadi Anda hanya menambahkan sertifikat Anda. Saya tidak mencoba mengubah skema flag / auth TLS yang digunakan Docker, yaitu:

--tlsverify \
--tlscacert="/home/roberto/.docker/machine/machines/dobox/ca.pem" \
--tlscert="/home/roberto/.docker/machine/machines/dobox/cert.pem" \
--tlskey="/home/roberto/.docker/machine/machines/dobox/key.pem" \
-H=tcp://SOME_IP:2376

Sekarang saya bisa docker $(docker-machine config dobox) images atau hanya eval "$(docker-machine env dobox)" dll di mesin klien kedua.

docker-machine versi 0.4.0
Docker versi 1.8.2

Cara mengotentikasi klien dan server di docker. Yang nama pengguna dan kata sandinya harus saya konfigurasikan dengannya
Saya menggunakan https://docs.docker.com/reference/api/docker_remote_api_v1.20/
dan memiliki klien dan server buruh pelabuhan pada mesin host yang sama.
Dan juga beri tahu saya jika keduanya tidak berada di mesin yang sama.

Demi Tuhan, tambah tutorial cara import mesin buruh pelabuhan yang sudah ada.
Saya telah membuat 2 mesin awan biru yang berbeda dari 2 PC yang terpisah dan sekarang saya tidak dapat terhubung dari PC ke mesin biru yang dibuat di komputer lain.
Sudah menghabiskan 2 malam, mencoba semua saran dan tidak ada hasil.

@nathanleclaire wdyt?

@ dmp42 Tentang apa sebenarnya? --url rusak adalah masalah yang cukup terkenal, dan kami ingin segera mendukung penggunaan Mesin dari banyak komputer yang berbeda dengan konfigurasi portabel.

Saya kira akan sangat bagus untuk memiliki setidaknya beberapa pernyataan yang jelas bahwa impor host yang ada, dari PC ke PC, tidak berfungsi untuk saat ini (atau memiliki beberapa masalah yang diketahui) di suatu tempat di dokumentasi resmi atau di sini di github.

@baio +1

Saya memiliki host Centos 7 di mana saya telah menginstal paket buruh pelabuhan standar dari repo Centos standar - yaitu saya tidak menggunakan paket dari situs Docker.

Dari workstation lokal saya, ketika saya mencoba membuat mesin untuk host Centos 7 ini menggunakan driver generik, gagal dengan "status keluar 1" ketika mencoba menginstal paket yang disebut "mesin buruh pelabuhan".

Saya menduga ini tidak berfungsi jika Docker sudah diinstal pada host jarak jauh?

Terkait: # 2270

Saya rasa saya memiliki contoh minimal yang dapat direproduksi:

buat Vagrantfile sederhana

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  # Box
  config.vm.box = "ubuntu/precise64"
  config.vm.box_url = "http://cloud-images.ubuntu.com/vagrant/precise/current/precise-server-cloudimg-amd64-vagrant-disk1.box"

  # To make this easily reproducible
  config.ssh.insert_key = false
  config.vm.network "private_network", ip: "192.168.50.4"

end

mulai VM

$ vagrant up

mengonfirmasi bahwa Anda dapat SSH dengan kunci, pengguna, dan IP yang Anda harapkan

ssh -i ~/.vagrant.d/insecure_private_key [email protected]

^ Ini berhasil untuk saya

buat Mesin Docker

$ docker-machine create -d generic --generic-ssh-user vagrant --generic-ssh-key ~/.vagrant.d/insecure_private_key --generic-ip-address 192.168.50.4 repro

Importing SSH key...
Error creating machine: Maximum number of retries (60) exceeded
You will want to check the provider to make sure the machine and associated resources were properly removed.

Apakah kalian mendapatkan hasil yang sama? Beri tahu saya jika ada hal lain yang dapat saya coba untuk membantu debug.

Masalah yang sama di sini. Tidak dapat membuat --url (tanpa driver) berfungsi dengan:

  • Docker Machine 0.5.1 (sisi klien) di bawah OSX
  • Docker 1.9 (sisi server jarak jauh)
  • Daemon jarak jauh dimulai dengan:
--tlsverify -H=unix:///var/run/docker.sock -H=0.0.0.0:2376 --tlscacert=/root/.docker/ca.pem --tlscert=/root/.docker/cert.pem --tlskey=/root/.docker/key.pem
  • Sertifikat klien (ca, key, cert) dipasang di bawah ~/.docker/machine/machines/mymachine/

Saat mengetik docker-machine env mymachine , Gagal menjadi:

Error running connection boilerplate: Error checking and/or regenerating the certs: There was an error validating certificates for host "": open /Users/f2i/.docker/machine/machines/anakin/server.pem: no such file or directory
You can attempt to regenerate them using 'docker-machine regenerate-certs name'.
Be advised that this will trigger a Docker daemon restart which will stop running containers.

Tanpa mesin buruh pelabuhan semuanya tampak baik-baik saja:

> docker --tlsverify -H=myhost:2376 ps
CONTAINER ID        IMAGE                       COMMAND                  CREATED             STATUS              PORTS 

Hanya ingin tahu, apa perbedaan nyata antara generik ( --driver "generic" --generic-ip-address ... ) dan tanpa driver ( --driver "none" --url ...) ?
Saya memahami koneksi generik melalui SSH (jadi ini seperti menggunakan buruh pelabuhan langsung di server jarak jauh) dan tidak ada driver yang terhubung ke host menggunakan TCP.

Akibatnya, tidak menggunakan server.pem dan server-key.pem di host klien? Mereka tidak boleh dikelola oleh mesin. Baik ?

Bahkan memberikan file PEM terakhir itu, gagal menjadi:

Error running connection boilerplate: Error checking and/or regenerating the certs: There was an error validating certificates for host "": crypto/tls: failed to parse private key
You can attempt to regenerate them using 'docker-machine regenerate-certs name'.
Be advised that this will trigger a Docker daemon restart which will stop running containers.

The "no driver" lebih merupakan driver uji integrasi yang digunakan untuk pengembangan. Tetapi jika Anda cukup meretas, pengaturan Anda dapat digunakan untuk mendaftarkan mesin yang ada. Ini dijadwalkan untuk dihapus dalam rilis mendatang (# 2437). Dokumentasi saat ini menyesatkan driver none .

Driver generic harus digunakan untuk mendaftar dan menginstal buruh pelabuhan dengan benar di semua host.
Perhatikan bahwa ini setidaknya akan merestart daemon buruh pelabuhan pada host target. Tetapi ini adalah cara yang dapat diandalkan untuk mendaftarkan mesin 'generik' apa pun ke mesin buruh pelabuhan selama Anda memberikan akses ssh.

@jeanlaurent Masalah dengan driver generic adalah bahwa ia bekerja dengan mesin Anda jika buruh pelabuhan sudah diinstal (misalnya mengubah nama host; menjalankan yum update ). Saya pikir apa yang banyak dari kita coba katakan adalah bahwa none driver memiliki kasus penggunaan kelas satu, dan jika berfungsi dengan baik akan menjadi kemampuan yang berharga bagi banyak dari kita (selain driver yang ditargetkan) .

Setuju dengan @metasim tentang ini. Driver none adalah kasus penggunaan yang sangat umum. Ini adalah salah satu cara paling dasar untuk berinteraksi dengan API buruh pelabuhan jarak jauh. Akan sangat disayangkan untuk menamakannya test . Peraphs yang menyesatkan berasal dari fakta bahwa kita tidak ingin membuat / mengelola mesin baru ( docker-machine create ) tetapi hanya terhubung ke mesin yang sudah ada ...

Saya tidak mengatakan bahwa kita seharusnya tidak dapat 'mendaftarkan' mesin yang ada ke dalam mesin galangan dengan satu atau lain cara, kita hanya perlu melakukannya dengan benar. Ada banyak kebingungan seputar driver none , itu tidak berfungsi di banyak tempat, dan orang-orang menyalahgunakannya. Maksudnya di sini adalah untuk mempersiapkan dasar bagi fitur register existing machine .

Tetapi begitu sebuah mesin 'diretas' ke dalam mesin galangan melalui driver none ada banyak hal yang akan merusak rantai -> restart , upgrade , dan ssh jelas. Melakukan perubahan manual ke file json seefisien menggunakan driver none untuk mendaftarkan mesin sebenarnya.

@metasim Mengupgrade generic agar tidak 'mengacaukan mesin Anda` adalah salah satu cara untuk menanganinya.

@vpusher Kami mungkin perlu merancang fitur pendaftaran yang tepat.

@jeanlaurent Terima kasih atas tanggapan Anda. Saya dapat melihat bahwa mengupgrade generic untuk menangani kasus penggunaan ini (termasuk kunci yang ada) mungkin merupakan cara yang baik untuk digunakan. Namun, dalam semangat "pemisahan masalah", saya sarankan untuk mempertimbangkan driver baru ( existing ?, preconfig ?, manual ?, diy ? :-)) untuk menangani kasus penggunaan ini, khususnya agar stabilitas dalam konteks yang sempit ini dapat lebih baik.

FYI. # 2260 dan # 2269 (ditutup tetapi tidak benar-benar ditangani) adalah upaya untuk menangkap beberapa kebingungan ini seputar pengemudi none

PS: Saya pikir itu sepenuhnya dapat diterima untuk beberapa perintah yang secara eksplisit tidak didukung dalam kasus penggunaan ini (misalnya restart , upgrade , dll.).

@metasim Yup, driver khusus mungkin adalah cara terbaik untuk menangani fitur register tetapi bukan satu-satunya, perintah khusus adalah cara lain. Tetapi sebelum memutuskan bagaimana melakukannya, kita perlu mengklarifikasi / mendefinisikan dalam hal ini kita semua perlu mendaftarkan mesin baru tanpa docker-machine menginstal buruh pelabuhan di atasnya.

Jika Anda melihat PR # 2442 misalnya kami melakukan ping ke host buruh pelabuhan untuk versi buruh pelabuhan. Karena kami ingin dapat menyediakan upgrade di beberapa titik, atau memperingatkan Anda bahwa host buruh pelabuhan Anda terlalu tua dengan klien buruh pelabuhan Anda saat ini. Dengan mesin di mana kami tidak menginstal daemon buruh pelabuhan ini akan terbukti sulit atau paling tidak sangat tidak stabil.

Jika kami menganggap bahwa kami dapat memperbarui driver generic dengan cara tertentu, saya bertanya-tanya untuk kasus penggunaan mana seseorang ingin mendaftarkan mesin ke mesin galangan tanpa menyediakan akses ssh?

Apa milikmu ? Mari kita buat daftar.

Beberapa komentar tentang menentukan kasus penggunaan untuk none dan / atau berpotensi menghentikannya di sini: https://github.com/docker/machine/pull/2437#issuecomment -160768813

Perasaan saya adalah bahwa kami (tim Mesin) harus:

  • Ikuti pedoman Docker yang sudah ada tentang penghentian fitur (penghentian lebih dari 2 siklus rilis).
  • Akibatnya, jika kita akan menghentikan driver none , kita harus menunggu untuk menghapusnya sepenuhnya hingga 0.7.0.
  • Untuk sementara, perbaiki bug show-stopper yang ada dengan driver none , dan kerjakan untuk menentukan alur kerja masa depan yang ideal (apakah itu import / register atau perubahan ke generic driver) sehingga pengguna yang tertarik dapat mengikuti dan memiliki cukup waktu untuk mempersiapkan perubahan yang akan dilakukan.

@dgageot @jeanlaurent Bagaimana kedengarannya?

@jeanlaurent Saya dapat melihat bahwa ssh akan sangat banyak dibutuhkan, yang tidak terlalu buruk. Sampai sekarang saya hanya berasumsi hampir semuanya bisa dilakukan melalui REST API.

Saya menggunakan docker-machine kebanyakan sebagai alat untuk mengatur variabel env yang diperlukan untuk membuat docker berbicara dengan host lain. Saya tidak pernah menggunakan perintah upgrade / restart dll. Host Docker saya berada di vSphere dengan template khusus yang dibuat melalui alur kerja vOrchestrator - menggunakan driver vSphere di mesin docker bukanlah suatu pilihan.

Meski begitu, saya menyadari bahwa use case saya bukan satu-satunya use case, tapi saya harap ini setidaknya perlu dipertimbangkan.

Saya mungkin bisa mengganti docker-machine dengan alias shell, setidaknya untuk tujuan saya.

Berikut adalah contoh kasus penggunaan jika itu membantu:

Saya ingin membuat mesin ec2 saya di amazon menggunakan elasticbeanstalk, bukan mesin buruh pelabuhan, karena elasticbeanstalk memiliki banyak manfaat (seperti penskalaan otomatis dan restart mesin). Saya ingin mendaftarkan mereka dengan mesin buruh pelabuhan dan mengontrol mereka menggunakan buruh pelabuhan-swarm.

Mengupgrade mesin-mesin itu agar memiliki buruh pelabuhan 1.9 itu sepele, tetapi mereka menjalankan beberapa linux amazon (garpu centos kuno) dan generik tidak bekerja dengan mereka. Karena mesin buruh pelabuhan di sana tidak memiliki TLS, trik yang saya gunakan untuk mengelolanya dari jarak jauh dengan buruh pelabuhan biasa adalah dengan mengekspos buruh pelabuhan.sock di localhost: 2375 menggunakan socat (seperti di https://github.com/sequenceiq/docker- socat) dan lakukan terowongan ssh dari mesin lokal saya dengan sesuatu seperti ssh -i id_rsa [email protected] -L 2375: localhost: 2375 -N. Kemudian saya dapat terhubung melalui jaringan dengan buruh pelabuhan --tls = false -H tcp: // localhost : 2375.

Itu banyak senam. Kombinasi akses ssh dan pengaturan buruh pelabuhan yang berfungsi (bahkan tanpa ssl) harus menjadi semua yang dibutuhkan mesin buruh pelabuhan untuk banyak kasus menarik (tidak ada peningkatan, restart seperti yang diperhatikan lainnya, tetapi saya tidak pernah menggunakannya).

Semoga bermanfaat.

@bonitao Senang Anda mengatakannya. Saya juga memiliki kasus penggunaan "terowongan melalui ssh" dalam beberapa keterlibatan perusahaan.

Saya baru mulai mencoba lagi untuk menggunakan mesin Docker dengan host yang ada ... Saya setuju dengan pernyataan @metasim tentang sekitar none driver ... Hari ini memiliki nilai bagi komunitas, karena generic belum melakukan apa maksudnya ... Saya menghabiskan berjam-jam mencoba untuk mendapatkan none bekerja untuk mengetahui bahwa ada proposal untuk mengubah namanya menjadi test . @nathanleclaire Adakah rencana untuk membuat pengemudi generic bekerja seperti yang dijelaskan tentang ???

Saya menghabiskan banyak waktu di https://github.com/docker/machine/issues/2628 dan ini adalah kasus penggunaan yang kami miliki ... Mendukung tim yang ada di seluruh perusahaan dengan buruh pelabuhan ...

Saya telah googling, dengan asumsi saya benar-benar kehilangan pemahaman, mencoba mencari cara untuk menghubungkan ke mesin buruh pelabuhan biru dari server CI saya yang saya buat di tempat lain. Saya berakhir di sini dan terkejut ini sebenarnya tidak mungkin (tanpa peretasan).

Saya membuat dan mendapatkan instance mesin buruh pelabuhan biru yang sepenuhnya aktif dan berjalan dari workstation dan saya hanya ingin dapat mengontrolnya dan menerapkannya dari skrip CI, yang dapat dijalankan dari sejumlah instance slave CI. Benarkah tidak ada cara resmi untuk mewujudkan hal ini?

Saya telah memperbarui buruh pelabuhan saya dan sekarang saya tidak dapat lagi terhubung ke contoh mesin buruh pelabuhan lama saya. saya mendapat

Error running connection boilerplate: Error checking and/or regenerating the certs: There was an error validating certificates for host "xxxxx:2376": open : no such file or directory
You can attempt to regenerate them using 'docker-machine regenerate-certs [name]'.
Be advised that this will trigger a Docker daemon restart which will stop running containers.

perintah regeenrate-certs memberi saya

Regenerate TLS machine certs?  Warning: this is irreversible. (y/n): y
Regenerating TLS certificates
Detecting the provisioner...
Installing Docker...
Copying certs to the local machine directory...
Copying ca.pem to machine dir failed: open : no such file or directory

lucunya aku bisa

docker-machine ssh

tanpa masalah ..

ada perbaikan?

Skenario: Server yang ada dan berfungsi dengan Docker dan TLS diaktifkan.

Tambahkan server / mesin yang ada ke mesin buruh pelabuhan:

docker-machine --tls-ca-cert path/to/ca.pem --tls-ca-key path/to/ca-key.pem --tls-client-cert path/to/client.pem --tls-client-key path/to/client-key.pem create --driver none --url tcp://HOST:2376 NAME

Dalam direktori pengguna Anda (~ / .docker / mesin / mesin / NAME) tambahkan sertifikat klien yang sama sebagai "cert.pem" dan "server.pem" dan kunci sertifikat klien sebagai "key.pem" dan "server-key. pem "juga menyesuaikan config.json Anda untuk menyertakan pengaturan SSH yang relevan ...

Saya telah mengangkat masalah ini. Saya baru-baru ini membuat ini berfungsi dan saya telah meletakkan instruksinya di sini (https://sreeninet.wordpress.com/2015/05/31/docker-machine/) jika ada yang ingin merujuk.

Inilah skrip yang cukup berhasil untuk saya:
https://github.com/docker/machine/issues/3344#issuecomment -212536797

@devcrust di mana tepatnya itu:

path/to/ca.pem
path/to/ca-key.pem
path/to/client.pem
path/to/client-key.pem

???

$ ls certs/
ca-key.pem  ca.pem  cert.pem  key.pem
$ ls machines/adhoc/
ca.pem  cert.pem  config.json  id_rsa  id_rsa.pub  key.pem  server-key.pem  server.pem

Saya tidak dapat mengaturnya dengan benar. Saya memiliki masalah ini juga:

Copying ca.pem to machine dir failed: open : no such file or directory

setelah memutakhirkan ke 0.6.0 .... Saya kehilangan akses tcp ke 12 mesin

@nathanleclaire Ada pembaruan tentang ini? Saya mencoba mencari cara untuk menyambung ke Host Docker yang berjalan di Microsoft Azure, yang saya buat dari komputer lain, menggunakan docker-machine . Saat ini, saya tidak punya solusi.

Solusi: _ (Anda mau) _

docker-machine tambahkan <🖥️ name> --driver <☁️️ provider driver>

Sangat menyedihkan bahwa begitu banyak waktu berlalu dan masih belum ada fitur yang diperkenalkan untuk mengatasi masalah ini.

Untuk apa nilainya. Anda dapat membuat mesin menggunakan driver generik tetapi itu akan memulai ulang semua container Anda.
Menambahkan restart: selalu di penampung Anda akan menjamin bahwa mereka tidak berhenti. Aku setuju dengan opsi

Saya juga senang memiliki opsi tambah mesin buruh pelabuhan.

Berikut dua proyek dengan pendekatan berbeda untuk berbagi mesin:

@tokopedia

Apa milikmu ? Mari kita buat daftar.

Ide saya adalah menghubungkan mesin lokal saya ke server fisik yang ada dengan beban kontainer yang berjalan. Melakukan docker-machine create --driver generic kemungkinan besar akan menghentikan mereka, dan banyak lagi . Saya bertanya-tanya mengapa perlu merestart buruh pelabuhan ...

Yah, saya bisa menjalankan perintah melalui ssh, tetapi dari deskripsinya sepertinya docker-machine bisa digunakan.

Tapi kemudian, jika Anda membuat VM dari komputer, dan ingin mengelolanya dari komputer lain. Atau Anda menginstal ulang OS lokal Anda ... Atau ingin mendelegasikan kontrol atas VM ke orang lain ...

NB Saya membuat langkah pertama saya dengan Docker, jadi mungkin ada poin yang saya lewatkan ...

@ x-yuri Untuk "membuat" mesin secara manual, cukup salin file-nya dari .docker/machine/machines dan sesuaikan jalurnya.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat