Dalam posting sebelumnya, saya berbicara tentang bagaimana SSHeller membantu Anda dengan cepat dan mudah menggunakan server OpenVPN. Di versi 1.1.0 , plugin lain telah ditambahkan - Docker .
Saya ingin segera memperingatkan Anda bahwa jika tangan Anda diasah di bawah konsol, dan mengendalikan Docker melalui baris perintah tampaknya nyaman dan intuitif, Anda tidak perlu membaca lebih lanjut, Anda tidak perlu menulis apa pun di komentar, saya sudah tahu bahwa Anda tidak memerlukan SSHeller.
Dan siapa yang membutuhkannya? Pertama-tama, pengembang aplikasi web, serta semua orang yang perlu dengan cepat dan mudah meningkatkan semacam layanan, baik itu situs web, blog, atau layanan berbagi file dadakan.
Bagaimana cara kerjanya
Kami membutuhkan server dengan hampir semua distribusi Linux modern. Tapi, tidak seperti OpenVPN, untuk Docker saya akan merekomendasikan Debian 9
atau Ubuntu 18.04
. Dengan Fedora
dan Centos
sedikit lebih buruk, karena Anda perlu menginstal lebih banyak paket, mengkonfigurasi autorun tambahan, dan bekerja dengan penyimpanan sedikit berbeda.
Yang paling penting adalah bahwa itu harus berupa mesin fisik atau virtual, tetapi bukan wadah (LXC, OpenVZ tidak akan berfungsi). Dan Anda memerlukan akses SSH. Dalam publikasi terakhir ada deskripsi rinci tentang cara mendaftar dan memulai server di DigitalOcean, dan pada akhirnya - instruksi yang sedikit kurang rinci untuk Linode. Kedua layanan ini menawarkan mesin sederhana seharga $ 5 / bulan dan bonus saat mendaftar dengan tautan rujukan. Untuk memulainya, ini sudah cukup.
Setelah kami memiliki IP, nama pengguna, dan kata sandi untuk server, Anda dapat menginstal SSHeller. Anda dapat mengunduhnya dari rilis di GitHub , ada versi untuk macOS, Windows dan Linux. Setelah memulai, tambahkan server kami, sambungkan ke sana dan buka plugin Docker .

Jika Docker belum diinstal di server, Anda dapat melakukan ini dengan mengklik tombol Install
.
Dalam waktu kurang dari satu menit, instalasi selesai, laporan terbuka yang Anda bisa tidak baca dan tutup, dan di jendela utama akan ada daftar kontainer, volume dan bentuk peluncuran wadah baru.

Fungsi utama
Peluncuran kontainer
Di bagian paling bawah ruang kerja adalah blok peluncuran wadah baru. Ini menampilkan:
- volume yang dipilih dari daftar di atas yang akan terhubung ke wadah, jika mendukungnya
- kata sandi yang akan ditetapkan ke aplikasi dalam wadah, sekali lagi, jika mendukungnya
- pemilihan gambar kontainer
- dan pemilihan tag gambar
Anda dapat memilih gambar Docker resmi dan beberapa gambar tambahan. Daftar mereka diatur dalam file https://github.com/delfer/ssheller/blob/master/plugins/docker-profiles.json dan pada saat publikasi adalah:
- jwilder / nginx-proxy - secara otomatis mengkonfigurasi Nginx untuk mengakses kontainer melalui nama domain, bukan port
- panubo / vsftpd - Server FTP
- coderaiser / cloudcmd - WEB-interface untuk mengakses file
- webdevops / php-apache-dev - membangun modul Apache + PHP + untuk pengembangan (menampilkan kesalahan)
- webdevops / php-apache - membangun modul Apache + PHP + untuk "penjualan" (tidak menampilkan kesalahan)
- webdevops / php-nginx-dev - build Nginx + PHP + modules untuk pengembangan (menampilkan kesalahan)
- webdevops / php-nginx - build Nginx + PHP + modules untuk "selling" (tidak menampilkan kesalahan)
Sebagian besar kontainer akan mengabaikan isi bidang Kata Sandi , kecuali yang tercantum dalam docker-profiles.json (bagian parameter ):
- panubo / vsftpd - kata sandi untuk koneksi FTP sebagai admin
- coderaiser / cloudcmd - kata sandi untuk login sebagai admin
- mysql / mariadb / postgres / influxdb - kata sandi untuk menghubungkan ke database db sebagai admin
- rabbitmq / couchdb / orientdb - kata sandi untuk menghubungkan sebagai admin
Fitur penting:
- Tag dimuat secara otomatis setelah memilih gambar. Cari tersedia
- Wadah akan tersedia di pelabuhan yang ditunjukkan oleh penulisnya. Jika port sibuk, port bebas pertama akan dipilih.
- Wadah akan tersedia di <nama wadah>. <Server domain> jika ada entri yang sesuai dalam DNS
- Volume akan dibuat untuk wadah jika mereka ditentukan oleh penulis gambar, atau mereka ditentukan dalam docker-profiles.json ( volume bagian)
Petunjuk bermanfaat:
- jwilder / nginx-proxy harus dijalankan terlebih dahulu sehingga menempati port 80
- panubo / vsftpd perlu dijalankan terakhir, karena ketika dimulai, ia mengubah izin folder agar memiliki akses penuh ke sana
- hampir selalu lebih baik menggunakan gambar dengan tag
alpine
atau latest-alpine
- mereka bekerja seperti yang biasa, tetapi memuat lebih cepat karena bobot yang lebih sedikit - jika Anda memerlukan MySQL - gunakan MariaDB lebih baik, kecuali, tentu saja, Anda pasti tidak yakin bahwa MariaDB tidak cocok untuk Anda
- jika Anda menjalankan sesuatu dengan PHP , maka Anda mungkin tidak perlu
fpm
, tetapi Anda membutuhkan apache
Informasi tambahan
Setelah mengklik tombol RUN
, segera setelah wadah diluncurkan, jendela laporan akan muncul, di mana docker run
selesai akan ditunjukkan. Dia akan menceritakan banyak hal menarik tentang bagaimana semuanya sebenarnya diatur.
Akses Nama Domain
Jika Anda menjalankan beberapa wadah dengan antarmuka web, misalnya, Wordpress dan NextCloud, dan ingin akses ke sana bukan dengan menentukan IP dan port, tetapi dengan nama domain, maka Anda harus memenuhi dua syarat sederhana:
- Jadilah yang pertama menjalankan jwilder / nginx-proxy
- Memiliki Catatan DNS Wildcard

Yaitu jika, misalnya, Anda memiliki domain example.com, maka Anda perlu menambahkan catatan *
tipe A
ke sana dan menentukan IP server. Dalam hal ini, wadah worpdress yang sedang berjalan akan tersedia di http://wordpress.example.com
Dan jika tidak ada domain - tidak masalah, Anda dapat menggunakan layanan nip.io - Anda tidak perlu mendaftar atau menambah entri. Jika, misalnya, server Anda memiliki IP 172.104.129.183 dan jwilder / nginx-proxy dan nextcloud sedang berjalan di atasnya , maka yang terakhir akan tersedia di http://nextcloud.172.104.129.183.nip.io
Menjalankan dua wadah dengan satu volume
Sering terjadi, misalnya, bahwa satu wadah menerbitkan file ( nginx ), dan yang kedua mengunduh ( panubo / vsftpd ). Atau yang kedua diperlukan untuk melihat / mengunduh konten yang pertama.
Misalnya, Jenkins setelah mulai meminta kata sandi yang direkam dalam file.

- Luncurkan Jenkins
jenkins_var_jenkins_home
volumenya- Tentukan kata sandi untuk akses
- Luncurkan coderaiser / cloudcmd
- Buka http: // coderaiser-cloudcmd . <domain>, masukkan login
admin
dan kata sandi dari langkah 3 - Kami melihat kata sandi dari Jenkins


Interaksi kontainer
Juga, Anda mungkin perlu terhubung ke yang lain dari satu wadah. Misalnya, wordpress selama instalasi akan meminta Anda untuk menentukan parameter untuk menghubungkan ke database: alamat server ( host ) dan port.
localhost
tidak akan berfungsi untuk interaksi antar wadah.
Secara umum, Anda perlu menentukan alamat IP eksternal dari server dan port yang ditampilkan
sebelum panah ( ->
) dalam daftar wadah. Untuk kesederhanaan, kemampuan untuk menentukan hanya kata host
ditambahkan daripada alamat IP server.
Selain MySQL, PostgreSQL, MongoDB, Redis, memcached, Tomcat, InfluxDB, CouchDB, dll dapat berguna.
Contoh Penggunaan
Berbagi file
- Jalankan nginx: alpine
- Masukkan kata sandi administrator untuk antarmuka web
- Pilih volume
nginx_usr_share_nginx_html
- Luncurkan coderaiser / cloudcmd: latest-alpine
Sekarang Anda dapat pergi ke http: // <alamat server>: 8000 untuk mengunduh file dengan otorisasi, dan tautan langsung akan tersedia melalui http: // <alamat server> . Anda hanya perlu menentukan path lengkap ke file.
Wordpress
- Kami menemukan dan memasukkan kata sandi untuk basis data
- Mariadb meluncurkan
- Jalankan wordpress: apache
- Kami pergi ke alamat http: // <alamat server> , mulai instalasi dan tentukan parameter untuk menghubungkan ke DBMS:
- Nama Basis Data:
db
- Nama pengguna:
admin
- Kata sandi - yang dimasukkan pada paragraf 1
- Server Database:
host
- Awalan Tabel - Apa saja
Lampu
- Kami menemukan dan memasukkan kata sandi untuk basis data
- Mariadb meluncurkan
- Jalankan webdevops / php-apache-dev: alpine
- Pilih volume
webdevops-php-apache-dev_app
- Kami menemukan dan memasukkan kata sandi untuk server FTP
- Jalankan panubo / vsftpd
Sekarang Anda dapat mengunggah file .php
ke ftp: // <alamat server> dan menjalankannya dengan membuka alamat http: // <alamat server>
PS
Tidak semua wadah tersedia di aplikasi, dan beberapa yang tersedia tidak berfungsi tanpa pengaturan tambahan - edit file di GitHub dan kirim Permintaan Tarik Anda. Jika Anda tidak tahu caranya - buka Masalah . Ini akan membantu Anda mengembangkan proyek.
Cara lain untuk mendukung proyek, serta banyak informasi bermanfaat, ada dalam file README .