Machine: 【Diselesaikan】 Bagaimana buruh pelabuhan menambahkan host buruh pelabuhan yang ada?

Dibuat pada 21 Mar 2016  ·  63Komentar  ·  Sumber: docker/machine

Ini masalah lama, tetapi saya tidak dapat menemukan jawaban yang berguna.

Saya memiliki env berikut:
Host Lokal (Laptop Saya) Nama: Chris-Laptop
docker-machine sudah diinstal, versi 0.6.0, build e27fb87, Mac OS X 10.11
Host Jarak Jauh (VPS Saya) Nama: li845-130 (139.162.3.130)
buruh pelabuhan sudah terpasang, CentOS 7.0

Proses 1.Docker daemon di Remote Host
[ root @ li845-130 ~] # ps -ef | grep buruh pelabuhan |
root 12093 1 0 02:09? 00:00:00 / usr / bin / docker daemon -H tcp: //0.0.0.0 : 2376

2. Konfigurasi koneksi ssh tanpa kata sandi
[ tdy218 @ Chris-Laptop .ssh] $ ssh [email protected]
Terakhir gagal masuk: Sen 21 Mar 02:54:06 UTC 2016 dari 125.88.177.95 di ssh: notty
Ada 54 upaya login yang gagal sejak login terakhir yang berhasil.
Terakhir masuk: Senin 21 Maret 02:25:25 2016 dari 114.248.235.223
[ root @ li845-130 ~] #

3. Tambahkan host buruh pelabuhan jarak jauh ke mesin buruh pelabuhan lokal
[ tdy218 @ Chris-Laptop .ssh] $ docker-machine create --driver none -url = tcp: //139.162.3.130 : 2376 linodevps
Menjalankan pemeriksaan pra-buat ...
Membuat mesin ...
Untuk melihat cara menghubungkan Klien Docker Anda ke Mesin Docker yang berjalan di mesin virtual ini, jalankan: docker-machine env linodevps
[ tdy218 @ Chris-Laptop .ssh] $ docker-machine ls
NAMA DRIVER AKTIF NEGARA URL KESALAHAN DOKTER SWARM
default * virtualbox Menjalankan tcp: //192.168.99.100 : 2376 v1.10.3
linodevps - tidak ada Menjalankan tcp: //139.162.3.130 : 2376 Tidak diketahui Tidak dapat melakukan kueri versi buruh pelabuhan: Tidak dapat membaca TLS config: buka /Users/tdy218/.docker/machine/machines/linodevps/server.pem: tidak ada file atau direktori seperti itu
[ tdy218 @ Chris-Laptop .ssh] $
[ tdy218 @ Chris-Laptop .ssh] $ docker-machine -D regenerate-certs linodevps
Versi Mesin Docker: 0.6.0, build e27fb87
Buat kembali sertifikat mesin TLS? Peringatan: ini tidak dapat diubah. (y / n): y
Membuat kembali sertifikat TLS
Ditemukan jalur biner di / usr / local / bin / docker-machine
Meluncurkan server plugin untuk driver none
Server plugin mendengarkan di alamat 127.0.0.1:54648
() Memanggil .GetVersion
Menggunakan API Versi 1
() Memanggil .SetConfigRaw
() Memanggil .GetMachineName
perintah = mesin configureAuth = linodevps
Menunggu SSH tersedia ...
Masuk ke fungsi WaitForSSH ...
(linodevps) Memanggil .GetSSHHostname
(linodevps) Memanggil .GetSSHPort
(linodevps) Memanggil .GetSSHKeyPath
(linodevps) Memanggil .GetSSHUsername
Menggunakan jenis klien SSH: eksternal
{[-o BatchMode = yes -o PasswordAuthentication = no -o StrictHostKeyChecking = tidak -o UserKnownHostsFile = / dev / null -o LogLevel = tenang -o ConnectionAttempts = 3 -o ConnectTimeout = 10 -o ControlMaster = tidak -o ControlPath = tidak ada @ -p 0] / usr / bin / ssh}
Akan menjalankan perintah SSH:
keluar 0
SSH cmd err, keluaran: status keluar 255: penggunaan: ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b
..................

Kesalahan mendapatkan perintah ssh 'exit 0': Terjadi kesalahan saat menjalankan perintah SSH!
perintah: keluar 0
err: status keluar 255
keluaran: penggunaan: ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
.....................

Ini melaporkan "Terlalu banyak percobaan ulang menunggu SSH tersedia. Kesalahan terakhir: Jumlah percobaan ulang maksimum (60) terlampaui ..." pada akhirnya.

Kenapa? saya telah mengkonfigurasi koneksi ssh antara host lokal dan host buruh pelabuhan jarak jauh tanpa kata sandi.

Bagaimana cara mengekspor host buruh pelabuhan ke baris perintah mesin buruh pelabuhan lokal?

Komentar yang paling membantu

@dweomer Bukankah menambahkan mesin buruh pelabuhan yang ada dari komputer lain merupakan kasus penggunaan yang sangat umum dan mendasar?

Semua 63 komentar

Apakah dukungan mesin buruh pelabuhan menambahkan host buruh pelabuhan yang ada?

Saat saya mencari dokumen selama 5 jam terakhir, sebenarnya, ada opsi "--driver = none" (tidak berdokumen). Lihat https://github.com/docker/machine/issues/2270 .

@ tdy218 @atemerev Seingat saya, opsi --driver none sengaja dikuburkan (dan saya pikir dihapus dari eksekusi yang dirilis) karena hanya digunakan untuk tujuan pengujian.

Masalah terkait: Saya memiliki tetesan di samudra digital yang dibuat dengan mesin buruh pelabuhan. Bagaimana cara mengelola sebuah instance dari laptop lain?

Seorang kolega membuat ulang sertifikat dari laptopnya menggunakan docker-machine regenerate-certs [name] . dan sekarang saya tidak dapat mengakses instance saya lagi. Apakah saya harus menyalin sertifikat baru di suatu tempat secara manual? Dokumentasi tentang ini sangat membingungkan.

$ docker-machine ls
NAME           ACTIVE   DRIVER         STATE     URL                        SWARM   DOCKER    ERRORS
default        -        virtualbox     Stopped                                      Unknown   
gapp-sandbox   *        digitalocean   Running   tcp://xx.xxx.xxx.xx:2376           Unknown   Unable to query docker version: Get https://xx.xxx.xxx.xx:2376/v1.15/version: x509: certificate signed by unknown authority

Saya telah menemukan solusi: https://github.com/docker/machine/issues/2270

Edit config.json mesin agar mengarah ke CA dan kunci klien untuk mesin tertentu itu, bukan yang mesin global.

Jadi saya menyalin semua file dari folder kolega saya dan mengganti semua jalur dengan yang ada di mesin saya. Dalam kasus saya jalur terakhir adalah /Users/mturatti/.docker/machine/machines/gapp-sandbox/ .
Solusi buruk, tetapi tampaknya berhasil.

ca.pem
cert.pem
config.json
id_rsa
id_rsa.pub
key.pem
server-key.pem
server.pem

@dweomer Bukankah menambahkan mesin buruh pelabuhan yang ada dari komputer lain merupakan kasus penggunaan yang sangat umum dan mendasar?

@dweomer Bukankah menambahkan mesin buruh pelabuhan yang ada dari komputer lain merupakan kasus penggunaan yang sangat umum dan mendasar?

@atemerev : Tidak, menurut saya tidak demikian. Seperti yang saya pahami, Mesin Docker ada untuk membuat / menyediakan host yang mendukung Docker.

Karena itu, ada driver generic yang agak kurang jelas yang menurut saya harus digunakan @ tdy218 . Driver generic akan mengambil alih sebuah host dan menyediakannya kembali. Yang dibutuhkan hanyalah host yang berjalan dengan daemon ssh dan pengguna pada host itu dengan akses tanpa kata sandi sudo (atau hanya root). Penyediaan ulang ini tidak merusak karena penginstalan Docker yang ada paling banyak akan diupgrade.

@bayu_joo
Saya mencoba menggunakan driver generik untuk menambahkan host buruh pelabuhan yang ada dalam pengujian berikut.
Host Lokal (Laptop Saya) Nama: Chris-Laptop
docker-machine sudah diinstal, versi 0.6.0, build e27fb87, Mac OS X 10.11
Host Jarak Jauh (VPS Saya) Nama: li845-130 (139.162.3.130)
buruh pelabuhan sudah terpasang, CentOS 7.0

Proses 1.Docker Daemon di Remote Host
[ root @ li845-130 ~] # ps -ef | grep buruh pelabuhan |
root 12093 1 0 02:09? 00:00:00 / usr / bin / docker daemon -H tcp: //0.0.0.0 : 2376

2. Konfigurasi koneksi ssh tanpa kata sandi
[ tdy218 @ Chris-Laptop ~] $ ssh [email protected]
Terakhir masuk: Senin 28 Maret 03:06:07 2016 dari 111.193.199.188

3. Tambahkan host buruh pelabuhan jarak jauh ke mesin buruh pelabuhan lokal
[ tdy218 @ Chris-Laptop ~] $ docker-machine -D create --driver generic --generic-ip-address 139.162.3.130 --generic-ssh-user root linodevps
Versi Mesin Docker: 0.6.0, build e27fb87
Ditemukan jalur biner di / usr / local / bin / docker-machine
Meluncurkan server plugin untuk driver generik
Server plugin mendengarkan di alamat 127.0.0.1:50319
() Memanggil .GetVersion
Menggunakan API Versi 1
() Memanggil .SetConfigRaw
() Memanggil .GetMachineName
(flag-lookup) Memanggil .GetMachineName
(flag-lookup) Memanggil .DriverName
(flag-lookup) Memanggil .GetCreateFlags
Ditemukan jalur biner di / usr / local / bin / docker-machine
Meluncurkan server plugin untuk driver generik
Server plugin mendengarkan di alamat 127.0.0.1:50323
() Memanggil .GetVersion
Menggunakan API Versi 1
() Memanggil .SetConfigRaw
() Memanggil .GetMachineName
(linodevps) Memanggil .GetMachineName
(linodevps) Memanggil .DriverName
(linodevps) Memanggil .GetCreateFlags
(linodevps) Memanggil .SetConfigFromFlags
Menjalankan pemeriksaan pra-buat ...
(linodevps) Memanggil .PreCreateCheck
(linodevps) Memanggil .GetConfigRaw
Membuat mesin ...
(linodevps) Memanggil .Create
(linodevps) Memanggil .GetConfigRaw
(linodevps) Tidak ada kunci SSH yang ditentukan. Menghubungkan ke mesin ini sekarang dan di masa depan akan membutuhkan agen ssh untuk memuat kunci yang sesuai.
(linodevps) DBG | IP: 139.162.3.130
(linodevps) Memanggil .DriverName
(linodevps) Memanggil .DriverName
Menunggu mesin untuk dijalankan, ini mungkin memerlukan beberapa menit ...
(linodevps) Memanggil .GetState
Mendeteksi sistem operasi dari instance yang dibuat ...
Menunggu SSH tersedia ...
Masuk ke fungsi WaitForSSH ...
(linodevps) Memanggil .GetSSHHostname
(linodevps) Memanggil .GetSSHPort
(linodevps) Memanggil .GetSSHKeyPath
(linodevps) Memanggil .GetSSHUsername
Menggunakan jenis klien SSH: eksternal
{[-o BatchMode = yes -o PasswordAuthentication = no -o StrictHostKeyChecking = tidak -o UserKnownHostsFile = / dev / null -o LogLevel = tenang -o ConnectionAttempts = 3 -o ConnectTimeout = 10 -o ControlMaster = tidak -o ControlPath = tidak ada [email protected] -p 22] / usr / bin / ssh}
Akan menjalankan perintah SSH:
keluar 0
SSH cmd err, keluaran::
Mendeteksi penyedia ...
(linodevps) Memanggil .GetSSHHostname
(linodevps) Memanggil .GetSSHPort
(linodevps) Memanggil .GetSSHKeyPath
(linodevps) Memanggil .GetSSHUsername
Menggunakan jenis klien SSH: eksternal
{[-o BatchMode = yes -o PasswordAuthentication = tidak -o StrictHostKeyChecking = tidak -o UserKnownHostsFile = / dev / null -o LogLevel = tenang -o ConnectionAttempts = 3 -o ConnectTimeout = 10 -o ControlMaster = tidak -o ControlPath = tidak ada [email protected] -p 22] / usr / bin / ssh}
Akan menjalankan perintah SSH:
cat / etc / os-release
SSH cmd err, keluaran:: NAME = "CentOS Linux"
VERSI = "7 (Inti)"
ID = "centos"
ID_LIKE = "rhel fedora"
VERSION_ID = "7"
PRETTY_NAME = "CentOS Linux 7 (Inti)"
ANSI_COLOR = "0; 31"
CPE_NAME = "cpe: / o: centos: centos : 7"
HOME_URL = " https://www.centos.org/ "
BUG_REPORT_URL = " https://bugs.centos.org/ "

CENTOS_MANTISBT_PROJECT = "CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION = "7"
REDHAT_SUPPORT_PRODUCT = "centos"
REDHAT_SUPPORT_PRODUCT_VERSION = "7"

Tidak dapat menyetel kunci CPE_NAME, tidak ditemukan bidang struct yang sesuai
Tidak dapat menyetel kunci, tidak ditemukan bidang struct terkait
Tidak dapat menyetel kunci CENTOS_MANTISBT_PROJECT, tidak ditemukan bidang struct terkait
Tidak dapat menyetel kunci CENTOS_MANTISBT_PROJECT_VERSION, tidak ditemukan bidang struct yang sesuai
Tidak dapat menyetel kunci REDHAT_SUPPORT_PRODUCT, tidak ditemukan bidang struct terkait
Tidak dapat menyetel kunci REDHAT_SUPPORT_PRODUCT_VERSION, tidak ditemukan bidang struct terkait
Tidak dapat menyetel kunci, tidak ditemukan bidang struct terkait
menemukan host yang kompatibel: centos
Menyediakan dengan centos ...
Tidak ada storagedriver yang ditentukan, menggunakan devicemapper

(linodevps) Memanggil .GetMachineName
(linodevps) Memanggil .GetSSHHostname
(linodevps) Memanggil .GetSSHPort
(linodevps) Memanggil .GetSSHKeyPath
(linodevps) Memanggil .GetSSHUsername
Menggunakan jenis klien SSH: eksternal
{[-o BatchMode = yes -o PasswordAuthentication = tidak -o StrictHostKeyChecking = tidak -o UserKnownHostsFile = / dev / null -o LogLevel = tenang -o ConnectionAttempts = 3 -o ConnectTimeout = 10 -o ControlMaster = tidak -o ControlPath = tidak ada [email protected] -p 22] / usr / bin / ssh}

4. Baris perintah host buruh pelabuhan jarak jauh.
[ root @ linodevps ~] # ps -ef | grep buruh pelabuhan |
root 17079 1 0 03:06? 00:00:00 / usr / bin / docker daemon -H tcp: //0.0.0.0 : 2376
root 17185 1 0 03:06? 00:00:00 sudo versi buruh pelabuhan
root 17190 17185 0 03:06? 00:00:00 versi buruh pelabuhan

Proses docker daemon di-restart, tetapi ada dua proses versi docker lagi, kemudian saya mencoba menjalankan perintah versi docker secara manual, hang.

Sangat sulit untuk menambahkan host buruh pelabuhan yang ada ke baris perintah mesin buruh pelabuhan ...

Jika remote host tanpa mesin buruh pelabuhan di dalamnya, mudah untuk membuat host buruh pelabuhan (instal mesin buruh pelabuhan) dari baris perintah mesin buruh pelabuhan, tetapi seperti masalah di atas, mesin buruh pelabuhan terbatas.

@dweomer Ini benar, tetapi jika saya menyediakan docker-machine atau docker-swarm, bagaimana saya, katakanlah, memungkinkan pengembang lain untuk menyebarkan kontainer di sana? Bagaimana cara mentransfer konfigurasi / variabel env antar mesin? Sejauh ini, saya hanya dapat menggunakan host mesin galangan yang disediakan, dan hanya dari satu mesin (bagaimana jika rusak? Bagaimana cara memulihkan konfigurasi di mesin lain?).

Bagi saya, docker-machine / docker-swarm sangat jauh dari produksi siap, dan setidaknya harus ditandai beta. Atau saya ingin mendengar dari siapa pun yang benar-benar menggunakannya dalam produksi ...

FWIW, jika Anda hanya menjatuhkan ~ / .docker dari host workstation itu ke yang baru (dengan asumsi direktori home adalah jalur yang sama), itu akan berfungsi. Jika direktori home berbeda, Anda perlu mengedit file .json di beberapa tempat (kunci dan sertifikat, dsb) untuk mengubah misalnya /Users/macuser/.docker menjadi /home/linuxuser/.docker .

Tampaknya pertanyaan ini telah ditangani secara menyeluruh dan / atau mencakup dasar yang telah ditetapkan dalam masalah lain. Terima kasih semuanya.

@nathanleclaire Untuk memperjelas, apakah pendekatan resmi untuk menambahkan host buruh pelabuhan yang ada (baik yang dibuat oleh mesin buruh pelabuhan atau sebaliknya) untuk menyalin folder ~ / .docker antara mesin klien? Jika ya, apakah ada subset tertentu dari file / file yang perlu kita salin?

Jika pendekatan resminya adalah menggunakan driver generik, akan berguna untuk mengatasi masalah @ tdy218 yang diuraikan dalam komentar di sini .

Saya tidak berpikir bahwa pertanyaan ini telah dijawab sama sekali. Saya mencoba untuk memasukkan kode ke mesin baru dan jawaban terbaik bahwa siapa pun dapat menemukannya untuk menemukan orang yang membuat mesin dan menyalin file-nya ke milik saya.

Saya tidak yakin apakah ada yang pernah mencobanya di sini di dunia nyata, tetapi itu menyebalkan.

@TheSeanBrady Mari terus berdiskusi tentang masalah sipil. Jika Anda memiliki proposal untuk solusi yang ingin Anda lihat, silakan bagikan. Mari tetap fokus pada solusi atas masalah.

Saya hanya jujur. Anda mencoba mengirim email untuk meminta file, karena sejauh ini tidak berfungsi untuk saya. Ini ditutup tanpa membahas masalah tersebut.

Saya hanya jujur. Anda mencoba mengirim email untuk meminta file, karena sejauh ini tidak berfungsi untuk saya. Ini ditutup tanpa membahas masalah tersebut.

Anda tidak merasa bahwa mengatakan sesuatu yang "menyebalkan" dan menyiratkan bahwa kita semua tidak hidup "di dunia nyata" itu kasar dan tidak konstruktif?

Kami mencoba membina komunitas di mana kolaborasi dan kepositifan didorong. Saya meminta jika Anda ingin berperan serta, Anda juga mengikuti asas-asas ini.

Karena penggunaan kredensial API yang disimpan, kunci SSH, dan sertifikat yang berbagi docker-machine s di seluruh komputer adalah masalah manajemen rahasia / ACL yang sangat besar, hal-hal serupa yang telah diciptakan untuk mengatasi seluruh kelas teknologi lainnya. Ini masalah yang cukup besar dalam cakupannya. Langkah-langkah yang berpotensi dapat diambil untuk menguranginya yang membantu kasus penggunaan Anda, jadi mengapa tidak menyarankan beberapa solusi proaktif untuk diterapkan?

Jika Anda ingin mengajukan proposal untuk menangani ini, silakan. Jika Anda juga ingin membuat proposal yang didukung oleh kode dalam permintaan tarik, saya juga mendorong Anda untuk melakukannya. Tapi bagaimanapun juga, tolong fokuskan diskusi pada solusi dan tetap positif.

Anda tidak merasa bahwa mengatakan sesuatu yang "menyebalkan" dan menyiratkan bahwa kita semua tidak hidup "di dunia nyata" itu kasar dan tidak konstruktif?

Tidak juga ketika menindaklanjuti ...

Tampaknya pertanyaan ini telah ditangani secara menyeluruh dan / atau mencakup dasar yang telah ditetapkan dalam masalah lain. Terima kasih semuanya.

Itulah yang saya sebut pemecatan ringkasan. Dan yang dimaksud dengan "dunia nyata", yang saya maksud adalah lingkungan tempat kami menggunakan barang ini, bukan tempat Anda melewati salah satu pengembang di aula.

Ini akan menjadi jawaban yang lebih tepat ...

Karena penggunaan kredensial API yang disimpan, kunci SSH, dan sertifikat yang berbagi mesin buruh pelabuhan di seluruh komputer adalah masalah manajemen rahasia / ACL yang sangat besar, yang sejenis dengan semua kelas teknologi lainnya telah diciptakan untuk diatasi.

... meskipun teknologi tersebut telah ditemukan dan kebanyakan adalah open source.

Namun, karena Anda bertanya, bagaimana dengan docker-machine add <hostname> , menggunakan otentikasi kunci SSH untuk memberikan sertifikat yang diperlukan untuk koneksi TLS?

bagaimana dengan menambahkan mesin buruh pelabuhan, menggunakan autentikasi kunci SSH untuk meneruskan sertifikat yang diperlukan untuk koneksi TLS?

Itu bisa menyelesaikan masalah ... setidaknya untuk lingkungan pengembang

Pilihan lain adalah menggunakan soket buruh pelabuhan pada host yang tersedia melalui SSH, yang sangat disukai bagi saya karena menggunakan mekanisme otentikasi SSH yang ada (yang dalam kasus saya dicadangkan dengan HSM) dan tidak memerlukan penyesuaian port / firewall ke mendukung TLS.

Saya telah meretas solusi saya sendiri untuk ini menggunakan socat, tetapi akan sangat baik jika mesin galangan dapat mendukungnya. Tidak sulit untuk melakukan ssh ke host, menginstal socat jika belum diinstal, dan menggunakan socat untuk mengubah sesi ssh menjadi soket lokal untuk berkomunikasi dengan remote /var/lib/docker.sock. Ini juga berarti mesin buruh pelabuhan tidak perlu tahu apa-apa tentang otentikasi atau sertifikat atau TLS dalam mode driver ini, meskipun itu bergantung pada socat secara lokal untuk membuat soket lokal ...

Akan menyenangkan untuk melihat mode driver yang melakukan pengaturan soket lokal semacam ini seperti cara driver ssh yang ada mengatur semua hal TLS. Banyak organisasi yang sudah menyelesaikan distribusi kunci / portforwarding SSH, dan mengharapkan mereka sekarang mendistribusikan / mengelola PKI untuk TLS (dan membuka port lain) itu memberatkan.

tyrell:~▻ cat Library/Local/bin/ber1docker 
#!/bin/bash

DOCKER_REMOTE_HOST="ber1.local"
DOCKER_SOCK="$TMPDIR/docker.sock"
export DOCKER_HOST="unix://$DOCKER_SOCK"
rm $DOCKER_SOCK

socat UNIX-LISTEN:$DOCKER_SOCK,reuseaddr,fork \
   EXEC:"ssh root@$DOCKER_REMOTE_HOST 'socat STDIO UNIX-CONNECT:/var/run/docker.sock'" &

Jadi, tidak ada "mesin buruh pelabuhan menambahkan ..."?

+1 untuk docker-machine add ...

Kami ingin memiliki keindahan eval $(docker-machine env mymachine) untuk semua anggota tim kami (untuk lingkungan pengembang bersama, tentu saja).

Saya memutar tetesan dengan driver digitalocean dan membuat situs aktif dan berjalan menggunakan docker-compose dari workstation saya.

Kemudian saya harus melakukan pekerjaan di situs tetapi dari lokasi yang sama sekali berbeda, jauh dari tempat kerja saya di mana saya melakukan perintah mesin buruh pelabuhan asli.

Bukankah ini situasi yang cukup umum?

Ini adalah solusi yang sangat umum. Apalagi jika Anda bekerja dalam sesuatu yang disebut "tim". Tetapi mereka menghindari topik ini selama sekitar 18 bulan sekarang. Yang mereka lakukan hanyalah menutup masalah seperti ini dan kemudian mengatakan sesuatu seperti "sangat rumit untuk mengimplementasikan fitur seperti itu" dan Anda dapat melakukannya sendiri dan mengajukan permintaan tarik kapan saja.
Menurut saya, mereka bahkan belum mulai mengerjakan solusi selama 18 bulan terakhir.

Terima kasih atas balasan Anda, meskipun belum ada cara mudah untuk mewujudkannya.

Simpan kredensial dan yang lainnya di cloud.

Beri saya petunjuk cara menggunakan dropbox atau google drive saya untuk menyimpannya.

Izinkan saya menanyakan info dari digitalocean, karena itulah driver yang saya gunakan.

Ini benar-benar tidak sesulit itu.

Ya kedengarannya aman.
Pada Rabu, 9 Nov 2016 pukul 09:28 Michael Schwartz [email protected]
menulis:

Simpan kredensial dan yang lainnya di cloud.

Beri saya petunjuk cara menggunakan dropbox atau google drive saya untuk menyimpannya.

Ini benar-benar tidak sesulit itu.

-
Anda menerima ini karena Anda disebutkan.
Balas email ini secara langsung, lihat di GitHub
https://github.com/docker/machine/issues/3212#issuecomment -259457472,
atau nonaktifkan utasnya
https://github.com/notifications/unsubscribe-auth/ABxbKbZQLUfK9ENnWpNKiF207ZGpXFs2ks5q8fSagaJpZM4H07I2
.

Tidak kurang aman daripada mengirim perintah dan semua kode saya melalui internet untuk DILAKUKAN di tempat pertama.

Atau mengunggah semua barang milik saya ke hub buruh pelabuhan atau github, bahkan repo pribadi.

Bagi mereka yang mencoba menambahkan mesin buruh pelabuhan ke lingkungan dev, Anda dapat melakukan seperti ini:

docker-machine buat -d "tidak ada" --url http://192.168.10.100 : 4243 bla

ini jika Anda memiliki HTTP dan bukan otentikasi TSL yang diaktifkan pada host.

Saya telah menghabiskan banyak waktu menemukan barang-barang yang tidak berdokumen ini

Saya pikir tampaknya agak picik untuk mengizinkan hanya satu mesin untuk mengelola cluster buruh pelabuhan juga. Lebih dari sekadar berbagi tanggung jawab mengelola cluster dengan tim Anda, bagaimana jika memiliki lebih dari satu titik kegagalan atau mengizinkan beberapa agen otomatis dapat berinteraksi dengan cluster buruh pelabuhan?

1 untuk perintah ekspor.

Itu bisa mengekspor semua pengaturan dan sertifikat ke dalam file tar atau zip aman yang dapat diimpor mesin galangan dengan kata sandi.

Sepertinya permintaan yang masuk akal.

@bmmathe Perintah itu sudah tar -c ~/.docker/machine | bzip2 > docker-machine-config.tbz2 .

Inilah cara lxd menangani ini. Mungkin kata sandi atau kunci dapat dikonfigurasi pada mesin yang memungkinkannya untuk menyalin atau membuat ulang sertifikat.

Itu sangat menyedihkan 😖. Mesin jarak jauh saya sekarang menunjukkan status lokal timeout saat menjalankan docker-machine ls , sesuatu yang mengacaukan konfigurasi mesin. Sepertinya tidak dapat menemukan cara untuk mengkonfigurasi ulang / memperbaikinya di folder mesin Docker lokal. Tidak ada lagi penyediaan lokal? Haruskah saya menghapus VM & membuatnya kembali?

Memilih opsi untuk menambahkan mesin jarak jauh ke mesin Docker lokal:

mesin buruh pelabuhan menambahkan--sopir

⏳🤒

Ini adalah fitur yang sangat penting. Saya tidak mengerti mengapa begitu sulit. Bahkan, Jika saya perlu membuat ulang sertifikat tidak akan menjadi masalah bagi saya, tetapi saya ingin ini didokumentasikan dan perintah untuk bekerja dengannya.

Jika saya dapat mengingatnya dengan benar, masalah saya disebabkan oleh memiliki izin yang salah dan / atau nama pengguna lokal tidak cocok dengan yang jauh (Pengguna default adalah docker-user ). Ini masalah atas nama Anda mungkin, Anda perlu menggali lebih dalam.
Driver generik untuk docker-machine perintah berfungsi dengan baik untuk penyedia yang berbeda misalnya google.

Periksa ini:
https://github.com/docker/machine/issues/3522#issuecomment -280275707
https://docs.docker.com/machine/drivers/generic/
• Tidak dapat menemukan percakapan lain yang saya lakukan tentang topik ini yang membawa saya ke solusi.

Hari ini, saya menemukan penyebab kegagalan menambahkan host buruh pelabuhan jarak jauh dalam kasus saya.
[ root @ linodevps ~] # ps -ef | grep buruh pelabuhan | grep -v grep
root 17079 1 0 03:06? 00:00:00 / usr / bin / docker daemon -H tcp: //0.0.0.0 : 2376 // Gaya penulisan ini tidak mengizinkan komunikasi soket fd atau unix lokal antara klien dan server buruh pelabuhan, sehingga hang di sudo buruh pelabuhan versi perintah saat menjalankan add docker-machine.

Untuk memperbaikinya, cukup edit file konfigurasi layanan buruh pelabuhan (defaultnya adalah /usr/lib/systemd/system/docker.service), ubah nilai parameter ExecStart dari / usr / bin / docker daemon -H tcp: // 0.0.0.0 : 2376 ke / usr / bin / docker daemon -H tcp: //0.0.0.0 : 2376 -H unix: ///var/run/docker.sock (standarnya adalah / usr / bin / docker daemon -H fd: //) atau / usr / bin / docker daemon -H tcp: //0.0.0.0 : 2376 -H fd: // atau ekspor DOCKER_HOST = tcp: //0.0.0.0 : 2376,
dan kemudian sudo systemctl daemon-reload && sudo systemctl restart docker, jalankan kembali perintah tambah docker-machine, tunggu sebentar, itu akan berhasil ditambahkan. Dalam proses penambahan, mesin buruh pelabuhan akan menghasilkan sertifikat ssl untuk host buruh pelabuhan target dan menghasilkan file konfigurasi layanan buruh pelabuhan baru 10-machine.conf di bawah direktori baru yang bernama /etc/systemd/system/docker.service.d

tdy218 @ Chris-Laptop $ dm ls
NAMA DRIVER AKTIF NEGARA URL KESALAHAN DOKTER SWARM
docker-vm119 - Menjalankan umum tcp: //192.168.135.119 : 2376 v17.03.1-ce
docker-vm120 - generik Berhenti Tidak Diketahui

docker-vm119 adalah host buruh pelabuhan yang ada sebelum menambahkan.

Dari kasus ini, kami tahu bahwa galangan-mesin didukung menambahkan host galangan yang ada, terima kasih

docker-machine create --driver none -url=tcp://123.123.123.123:2376 dockerhost1 adalah hal terbaik yang pernah saya pelajari tentang buruh pelabuhan dalam waktu yang lama!

Akan lebih mudah untuk membagikan mesin pengembangan di antara pengguna.

// cc @nathanleclaire

perbarui: agar jelas: secara khusus, saya tidak keberatan membagikan sertifikat sebelumnya kepada anggota tim lainnya. Ada ruang untuk perbaikan di sana juga ..

@dhrp proses apa yang Anda ikuti untuk preshare sertifikat? Dimana mereka bisa ditemukan?

Ya Tuhan, tidak percaya selama lebih dari satu setengah tahun tidak ada yang mau memecahkan masalah ini 😞 😞 😞

@thaJeztah @AkihiroSuda @albers @tianon apakah menurut Anda ini bukan persyaratan yang sangat umum dan kritis?

Saya mencoba untuk menyediakan kembali host buruh pelabuhan yang ada ( docker-machine create --driver=generic --generic-ip-address <ip> <name> dan tampaknya bekerja tanpa membatalkan sertifikat yang ada. Ini dilakukan dari mesin yang sama yang awalnya menyediakan host buruh pelabuhan ... apakah ini hasil yang diharapkan?

Bisakah Anda membuka kembali masalah ini? Saya rasa ini belum terselesaikan.

Tersandung pada ini secara tidak sengaja.

Nah, @nathanleclaire memperjelas intinya: ini BUKAN tujuan menambahkan fitur do docker-machine, melainkan titik berbagi kunci yang TIDAK seharusnya disimpan di tempat lain selain mesin klien asli. Persis seperti inilah yang seharusnya dilakukan dan beberapa orang di sini menjadi marah tanpa menghabiskan cukup banyak pemikiran tentang masalah ini.

Jika Anda benar-benar ingin membagikan kunci dengan tim, lanjutkan saja dengan repo pribadi kontrol sumber apa pun dan terima risiko yang Anda ambil. Untuk mengekspor kunci yang diperlukan, ada skrip yang sudah dibuat seseorang: https://gist.github.com/schickling/2c48da462a7def0a577e

"Tidak ada alasan kita tidak bisa bersikap sopan" - Leonidas

Saya masih berpikir bahwa mesin buruh pelabuhan harus berperilaku lebih seperti scp. Apa yang mencegah untuk menambahkan dukungan untuk banyak kunci?

Satu solusi untuk ini, yang baru saja saya temukan.
Jika Anda memiliki mesin buruh pelabuhan yang ada di platform yang sama (milik saya adalah google) dan Anda dapat ssh / scp ke mesin itu tanpa memerlukan mesin buruh pelabuhan, Anda dapat menyalin mesin lain dan membuatnya berfungsi.
Aku melakukannya:

mkdir ~/.docker/machine/machines/new-machine
cp -r ~/.docker/machine/machines/old-machine/* ~/.docker/machine/machines/new-machine/

#then replace all instances of "old-machine" with "new-machine" in ~/.docker/machine/machines/new-machine/config.json

#then add the public key from your new-machine folder into the authorized_keys file for the docker-user on the new machine, e.g.
scp ~/.docker/machine/machines/new-machine/id_rsa.pub docker-user<strong i="8">@new_machine</strong>:/home/docker-user
ssh docker-user<strong i="9">@new_machine</strong> -c "cat ~/id_rsa.pub >>~/.ssh/authorized_keys"

(Jangan salin perintah ssh kata demi kata, cari cara melakukannya dengan benar - https://encrypted.google.com/search?hl=id&q=ssh%20copy%20public%20key)

1 untuk perintah ekspor / impor.
1 untuk dukungan multi kunci.

Tidak dapat memindahkan workstation manajemen tidak dapat diterima dan menciptakan satu titik kegagalan yang sangat besar.

misalnya Komputer hilang, pencurian, kebakaran, kerusakan perangkat keras, kegagalan perangkat lunak, masalah akses tim, masalah admin, dll ...

Docker-machine tidak dibuat dengan pemikiran itu - ini adalah alat makanan cepat saji untuk penyediaan pengembang tunggal. Ini dia, jelas dan sederhana, dan berhasil - dan gratis!

Beberapa fitur yang disebutkan di sini diimplementasikan dalam penawaran Docker EE (seperti tim dan RBAC).

Jika orang tidak bisa bersyukur, cobalah setidaknya bersikap masuk akal.

Saya belum percaya machine-share telah disebutkan di utas ini:

machine-export <machine-name>
>> exported to <machine-name>.zip
machine-import <machine-name>.zip
>> imported

Hei @andg

Maaf jika saya tampak tidak berterima kasih. Saya sangat menyukai mesin buruh pelabuhan dan berpikir ini akan membuatnya lebih baik.
Saya pikir kemampuan bagi pengembang tunggal untuk berpindah antar komputer dengan mudah akan sangat membantu.

Jika jadwal saya kosong, saya mungkin mencoba mempelajari GO dan mencoba menambahkan fitur ini.

Hai @ dmitry

Menurut saya tiket ini lebih difokuskan pada kurangnya kemampuan untuk terhubung ke host buruh pelabuhan jarak jauh yang ada.
Itu dikatakan berbagi-mesin tampaknya berguna saat memindahkan host buruh pelabuhan lokal.
Terima kasih untuk sarannya.

@ Jared-Harrington-Gibbs machine-share secara khusus memecahkan masalah "_menambahkan host-host mesin-buruh pelabuhan yang ada_". Kami menerapkan berbagai aplikasi melalui docker-compose, dan itu berfungsi dengan baik untuk kami. Kami mengekspor set sertifikat dengan machine-share dan mendistribusikannya ke semua anggota tim yang membutuhkannya. Ini tidak ideal tetapi berfungsi dengan baik.

Saya mencoba menggunakan driver generik untuk menambahkan host buruh pelabuhan yang ada, itu akan berhasil ditambahkan setelah beberapa kali coba lagi.

@sneak Solusi ini tampaknya tidak berhasil untuk saya, karena jalur di config.json tidak akan mengarah ke file yang benar. Saya akan berasumsi docker-machine bergantung pada file config.json , tetapi saya bisa saja salah, belum mengujinya.

Ini menimbulkan masalah bagi saya, karena saya mungkin mengeksekusi dari lingkungan di mana saya mungkin tidak tahu di mana tepatnya lokasi penyimpanan file. Mungkin ada opsi untuk jalur relatif?

Kalau masalahnya tenaga manusia, saya bisa menyisihkan beberapa hari untuk mencoba memberikan solusi bagi masyarakat. Lebih suka memiliki beberapa arahan dari pengelola sekalipun. Apakah [Resolved] dalam kasus ini menunjukkan keputusan untuk tidak mendukung fitur ini secara native, atau sudah didukung di tempat yang tidak saya lihat?

Ini adalah fitur yang TIDAK DIMAKSUDKAN untuk diterapkan sama sekali. Tidak masuk akal untuk mengharapkan mesin jarak jauh menyimpan kunci pribadi yang seharusnya tidak ada di mana pun kecuali di mesin pengembang asli.

Bahkan Docker EE memastikan bahwa "bundel klien" yang berbeda dibuat setiap kali diminta, dan tidak menyimpannya di host.

Orang-orang di sini meminta fitur yang mudah diimplementasikan, tetapi tidak masuk akal untuk diterapkan karena batasan keamanan yang wajar.

@andrevtg Permintaannya bukan untuk VM itu sendiri untuk menyimpan kunci (yang akan membuat kunci sama sekali tidak berguna), tetapi untuk klien mesin galangan kapal (yang terbuat dari kode, ini adalah aplikasi sebenarnya), untuk menyediakan cara bagi pengguna untuk mengirimkan kunci secara sukarela dari satu klien ke klien lain.

Salah satu cara sederhana untuk melakukannya adalah dengan memberikan perintah docker-machine export yang menggabungkan kunci ke dalam arsip, dan perintah docker-machine import untuk penerima arsip ini untuk mengimpor mesin yang dijelaskan di arsip. Enkripsi / dekripsi pada batas-batas transmisi kunci kemudian menjadi urusan pengguna (mereka dapat menggunakan email PGP, SFTP, apapun yang mereka inginkan).

Tepat docker-machine create membuat file konfigurasi besar dan kunci yang tidak dipahami atau diketahui oleh pemula. Mungkin membuat kunci ssh sesederhana menambahkan kunci ke file host, tetapi itu tidak didokumentasikan. Penampung mana yang kita tambahkan? Dan bagaimana kita menyiapkannya di mesin lain dan memberi tahu docker-machine tentangnya? Bisakah kita tetap menggunakan docker-machine use atau apakah kita harus mengatur semua variabel lingkungan secara manual.

Idealnya, harus ada docker-machine add [name] untuk menambahkan kunci, docker-machine export untuk mengekspor file konfigurasi, dan docker-machine import untuk mengimpor file konfigurasi tersebut ke komputer lain. Akan menyenangkan juga memiliki docker-machine rm [name] untuk mencabut akses ke kunci.

@dhrp Saya mendapat server buruh pelabuhan yang berjalan di rpi. Saya ingin mengaksesnya dari localhost saya dengan mesin buruh pelabuhan. Jadi yang harus saya lakukan adalah:
docker-machine create --driver none -url=tcp://raspberry.local:22 rpihost
Apakah ini berhasil?

Jadi @ 360disrupt , bukan? Saya berjuang dengan kasus penggunaan yang sama.

Jadi @ 360disrupt , bukan? Saya berjuang dengan kasus penggunaan yang sama.

Tidak, belum.

Halo semuanya. Ini belum terpecahkan? Kami menggunakan buruh pelabuhan untuk setiap aplikasi di perusahaan tempat saya bekerja. Masalah terbesar kami terkait dengan berbagi mesin. Saya mencoba menggunakan driver generik beberapa kali, tetapi masalah dengan pendekatan itu adalah ketika Anda membuat mesin dengan driver generik dan menghubungkannya dengan server yang ada, pembuatan hanya menjatuhkan kontainer yang saat ini berjalan di server.

Satu-satunya cara yang kami temukan adalah membuat skrip sederhana dengan Python yang hanya mengimpor dan mengekspor mesin yang ingin diakses oleh pengembang. Skrip ini bertanggung jawab untuk menyalin semua file konfigurasi dan sertifikat dari pemilik mesin ke sumber baru. Ini berfungsi dengan baik dan kami tidak mengalami masalah dengan itu, hanya saja saya tidak percaya bahwa tidak ada cara resmi untuk berbagi mesin tanpa harus membagikan sertifikat pribadi kami.

Saya sedang mengerjakan sebuah proyek dan saya akan menerbitkannya di GitHub untuk menyelesaikan masalah ini dengan cara yang berbeda. Pada dasarnya, saya hanya membangun PaaS yang akan memusatkan semua sertifikat dari semua mesin yang kami miliki di perusahaan kami. Dan ketika seseorang ingin menerapkan atau melakukan sesuatu seperti itu, Anda hanya perlu terhubung dengan PaaS, dan bukan dengan server. Ini seperti terowongan. Sebentar lagi saya akan merilis versi pertama PaaS ini.

+1 untuk docker-machine add atau docker-machine create --existing

ini memecahkan masalah saya: machine-share : computer:: rabbit2:

@dweomer Bukankah menambahkan mesin buruh pelabuhan yang ada dari komputer lain merupakan kasus penggunaan yang sangat umum dan mendasar?

@atemerev : Tidak, menurut saya tidak demikian. Seperti yang saya pahami, Mesin Docker ada untuk membuat / menyediakan host yang mendukung Docker.

Karena itu, ada driver generic yang agak kurang jelas yang menurut saya harus digunakan @ tdy218 . Driver generic akan mengambil alih sebuah host dan menyediakannya kembali. Yang dibutuhkan hanyalah host yang berjalan dengan daemon ssh dan pengguna pada host itu dengan akses tanpa kata sandi sudo (atau hanya root). Penyediaan ulang ini tidak merusak karena penginstalan Docker yang ada paling banyak akan diupgrade.

Saya tahu ini tampaknya menjadi masalah yang diselesaikan, tetapi saya hanya ingin menyatakan bahwa saya harus setuju dengan @atemerev : sebagai tim pengembangan, kami harus terhubung ke mesin yang disediakan lainnya hampir setiap minggu .

ini memecahkan masalah saya: mesin-share 💻 🐇

Saya dapat mengonfirmasi bahwa paket npm ini berfungsi.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat