Saya menggunakan portainer dan tidak dapat mengelola titik akhir jarak jauh. Saya mencoba menggunakan baris perintah untuk terhubung ke node docker jarak jauh, tetapi mendapat pesan Cannot connect to the Docker daemon at tcp://<remote_ip>:<port>. Is the docker daemon running?
.
Ya, mereka sedang berlari. Saya telah menambahkan diri saya ke grup buruh pelabuhan dan dapat mengakses buruh pelabuhan dengan SSHing ke node. Namun saya tidak dapat mengakses node buruh pelabuhan dari jarak jauh.
Saya dimodifikasi /etc/default
untuk menambah / menghapus komentarDOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"
Saya juga memodifikasi /etc/init.d/docker
dan /etc/init/docker.conf
memasukkan DOCKER_OPTS="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"
.
Saya me-restart layanan buruh pelabuhan, keluar dan masuk beberapa kali dalam proses, tetapi masih tidak dapat terhubung ke node jarak jauh. Saya bahkan tidak dapat terhubung ke simpul lokal dengan melewatkan IP.
Apa yang saya lewatkan? Konfigurasi apa dalam file apa yang mengekspos API melalui TCP?
user@hostname:~$ docker -H tcp://<REMOTE_IP>:2375 info
Cannot connect to the Docker daemon at tcp://<REMOTE_IP>:2375. Is the docker daemon running?
user@hostname:~$ docker -H tcp://127.0.0.1:2375 info
Cannot connect to the Docker daemon at tcp://127.0.0.1:2375. Is the docker daemon running?
user@hostname:~$ docker -H tcp://<LOCAL_IP>:2375 info
Cannot connect to the Docker daemon at tcp://<LOCAL_IP>:2375. Is the docker daemon running?
user@hostname:~$
Edit:
Menjalankan ps aux | grep -i docker
mengembalikan ini -
root 3581 0.1 0.2 596800 41540 ? Ssl 04:17 0:35 /usr/bin/dockerd -H fd://
root 3588 0.0 0.0 653576 14492 ? Ssl 04:17 0:18 docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --shim docker-containerd-shim --runtime docker-runc
ss -ntl
ps aux
dalam jawaban saya jika itu membantu.Jawaban:
Saya menemukan solusi berkat posting Ivan Krizsan .
Saya harus mengedit
/lib/systemd/system/docker.service
pada sistem Ubuntu 16.04.2 LTS saya untuk memodifikasi bariskemudian
dan semuanya bekerja :-). Langkah selanjutnya adalah mencari cara untuk melindungi bentuk daemon buruh pelabuhan yang dibajak.
sumber
systemctl edit docker.service
dan systemctl akan membuat file baru dengan hasil edit Anda. Ini mencegah pembaruan menghapus perubahan Anda. SystemD akan menggabungkan dua file saat runtime. Dokumen bagus di sini: digitalocean.com/community/tutorials/…ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:4243
-H tcp://
pengaturan dengan sendirinya, tanpa-H fd://
pengaturan, saya tidak bisa mengeluarkan dan perintah klien, misalnya .., info buruh pelabuhan, versi buruh pelabuhan, dll.Direktori / etc / default adalah tempat pengelola distribusi meletakkan file konfigurasinya. Jika Anda memasang buruh pelabuhan langsung dari gudang Docker, direktori ini tidak akan digunakan.
Direktori / lib / systemd adalah tempat paket akan menginstal file systemd mereka, dan mereka akan menimpa setiap perubahan yang ada di upgrade. Jika Anda menggunakan ini, perubahan Anda akan hilang.
Untuk membuat perubahan Anda sendiri ke file unit systemd yang bertahan, Anda dapat membuat file unit di /etc/systemd/system/docker.service.d/, misalnya di sini adalah /etc/systemd/system/docker.service standar saya. d / override.conf:
Override itu hanya menghapus semua flag baris perintah ke daemon dockerd dari systemd. Setelah selesai, Anda dapat mengganti setiap pengaturan dari /etc/docker/daemon.json yang digunakan oleh buruh pelabuhan, dan tergantung pada pengaturannya, dapat dimuat ulang tanpa memulai ulang daemon. Misalnya, ini contoh /etc/docker/daemon.json:
Untuk keperluan Anda, Anda hanya perlu garis di sana untuk mengatur host.
Salah satu bagian yang sangat penting dari file konfigurasi di atas adalah pengaturan TLS. Jika Anda tidak mengonfigurasi TLS timbal balik antara klien dan server, dan Anda membuka buruh pelabuhan untuk mendengarkan di jaringan, Anda menjalankan yang setara dengan server telnet terbuka dengan login root diizinkan tanpa kata sandi. Jika Anda lebih suka ssh daripada telnet, atau jika Anda lebih suka memiliki kata sandi untuk akun root Anda, maka Anda harus mengonfigurasi TLS. Port API docker sering dipindai di internet, dan Anda akan menemukan malware terinstal di host Anda dalam waktu singkat jika Anda pernah melewatkan langkah konfigurasi ini.
Detail lengkap tentang cara mengkonfigurasi kunci TLS untuk klien dan server dapat ditemukan di: https://docs.docker.com/engine/security/https/
sumber
Jika Anda tidak ingin mengkonfigurasi ulang dan memulai kembali daemon docker Anda, Anda dapat dengan mudah menjembatani soket unix ke soket TCP menggunakan
ncat
(darinmap
paket):Sebagai alternatif, Anda bisa menggunakan socat atau alat lain .
sumber
nohup
dan&
Ada dokumentasi resmi yang menjelaskan cara Mengkonfigurasi tempat daemon Docker mendengarkan koneksi .
Mengkonfigurasi akses jarak jauh dengan file unit systemd
Gunakan perintah sudo systemctl edit docker.service untuk membuka file override untuk docker.service dalam editor teks.
Tambahkan atau modifikasi baris berikut, gantikan nilai Anda sendiri.
Simpan file.
Muat ulang konfigurasi systemctl.
Mulai ulang Docker.
Periksa untuk melihat apakah perubahan itu dihormati dengan meninjau output netstat untuk mengonfirmasi dockerd mendengarkan pada port yang dikonfigurasi.
Mengkonfigurasi akses jarak jauh dengan
daemon.json
Atur array hosts di /etc/docker/daemon.json untuk terhubung ke soket UNIX dan alamat IP, sebagai berikut:
Mulai ulang Docker.
Periksa untuk melihat apakah perubahan itu dihormati dengan meninjau output netstat untuk mengonfirmasi dockerd mendengarkan pada port yang dikonfigurasi.
Klien Docker akan menghormati
DOCKER_HOST
variabel lingkungan untuk mengatur-H
bendera untuk klien. Gunakan salah satu dari perintah berikut:atau
sumber