Saya menggunakan GUI pihak ketiga (paket Synology Docker) untuk menyiapkan wadah buruh pelabuhan. Namun, keterbatasan itu membuat saya perlu menjalankan container dari command line. (Saya ingin memetakan ip host lain untuk mengikat port)
Sekarang, karena ada banyak pengaturan yang sudah dilakukan, saya ingin mengambil perintah jalankan asli yang memulai penampung ini, kemudian saya dapat mengubah port pemetaan port ke yang baru. misalnya. " docker run -p 80:8080 gitlab
"
Saya tidak dapat menemukan cara untuk melakukannya, acara menggunakan "buruh pelabuhan inspeksi", tidak ada informasi yang diberikan.
Mohon berikan beberapa saran untuk mengatasi masalah ini.
Jawaban:
Ada repositori github yang mencoba membalikkan perintah jalankan buruh pelabuhan rekayasa, tetapi saat ini tidak sempurna, versinya
0.1.2
. Anda harus mengikutinya untuk memperbarui. Mungkin suatu hari Anda bisa menggunakannya untuk mendapatkan perintah jalankan yang benar dengannya.Repositori Github: runlike
Pembaruan :
Jalankan tanpa menginstal (Terima kasih @tilo)
atau setel alias
sumber
docker run -v /var/run/docker.sock:/var/run/docker.sock \ assaflavie/runlike YOUR-CONTAINER
Gunakan buruh pelabuhan memeriksa :
Anda secara terprogram dapat mengurai ini dengan jq :
sumber
docker inspect <CONTAINER> | jq ".[0].Config.Cmd"
"Cmd": null,
Mungkin ini hanya berfungsi jika kontainer tidak dimulai secara otomatis menjadi daemon buruh pelabuhan?Saya menulis alat CLI berbasis Node sederhana untuk menghasilkan
docker run
perintah dari wadah yang ada.https://www.npmjs.com/package/rekcod
Berikut contohnya:
Juga menangani tautan dan volume yang dipasang dan hal-hal lainnya.
Tidak super kuat saat ini, tetapi menangani lebih dari beberapa hal lain yang disebutkan, dan itu lebih dari apa yang saya cari.
EDIT: Dalam satu perintah, tanpa menginstal perangkat lunak apa pun:
sumber
Alternatif yang lebih sederhana (?) Adalah dengan menjalankan template inspeksi buruh pelabuhan ini , yang menggunakan kapabilitas pembuatan template Go bawaan untuk mengeluarkan
docker run
perintah yang kompatibel. Template hanya mencakup opsi baris perintah yang paling umum, tetapi dapat dengan mudah diperpanjang.Solusi ini tidak memiliki ketergantungan pada alat lain, kecuali buruh pelabuhan itu sendiri.
sumber
Gunakan perintah berikut untuk mendapatkan argumen untuk semua container docker inspect -f "{{.Name}} {{.Path}} {{.Args}}" $ (docker ps -a -q)
sumber
Saat ini tampaknya kita harus 'memeriksa buruh pelabuhan' dan kemudian secara manual membuat ulang perintah run.
Saya menemukan seseorang mencoba menulis skrip bash untuk melakukan ini: https://gist.github.com/miracle2k/c85b7b077fdb8d54bc89
tetapi tidak lengkap dan bergantung pada jq.
sumber
Apa yang bisa menjadi opsi yang lebih sederhana (kuat) akan menggunakan sesuatu seperti bash-preexec untuk menangkap perintah yang dimulai dengan "docker run". Anda kemudian dapat menyimpan perintah ini di suatu tempat dan mengambilnya nanti.
Misalnya, Anda dapat menambahkan sesuatu seperti ini di profil bash Anda:
Kemudian Anda bisa menjalankan barang-barang Anda:
Output mana:
sumber
Jika Anda tidak ingin menginstal apa pun ke dalam pengaturan server Docker yang sedang berjalan, Anda dapat menjalankannya (ganti
$CONTAINER_NAME
dengan nama container yang Anda inginkan untuk argumen run):(untuk
rekcod
metode )atau
(untuk
runlike
metode )sumber
Perintah jalankan buruh pelabuhan itu tidak ditentukan di Dockerfile atau dokumen terkait buruh pelabuhan lainnya.
Entah Anda menemukan contoh dalam dokumentasi yang terkait dengan penampung Anda, atau Anda dapat menyimpulkan bahwa pekerja galangan berjalan dengan (setidaknya untuk perintah dan pemetaan port) a
docker ps -a
(tetapi itu tidak akan memberi Anda kemungkinan--volumes-from
opsi yang )Periksa juga
/usr/syno/etc/packages/Docker-GitLab/config
Ini berbeda dari konfigurasi gitlab itu sendiri, yang di Synology tersedia di
/usr/syno/etc/packages/Docker/synology_gitlab.config
sumber
Untuk membalikkan perintah jalankan buruh pelabuhan ada juga paket npm berikut.
https://github.com/nexdrew/rekcod
sumber
Semua file buruh pelabuhan ada di sini Anda dapat menemukan cmd dan mount misalnya
ls -la /proc/1
hanya cat sajasumber