GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana saya bisa mengganti lsof di dalam Docker (asli, bukan berbasis LXC)

(CATATAN:tidak jelas dalam pertanyaan bagaimana penanya memasuki wadah buruh pelabuhan. Saya berasumsi docker exec -it CONTAINER bash digunakan.)

Saya mengalami masalah ini saat menggunakan gambar buruh pelabuhan berdasarkan centos:7 dengan versi buruh pelabuhan 1.9.0 dan untuk mengatasinya, saya hanya menjalankan:

docker exec --privileged -it CONTAINER bash

Perhatikan penyertaan --privileged .

Pemahaman naif saya tentang alasan mengapa hal ini diperlukan:tampaknya buruh pelabuhan berusaha agar wadah lebih "aman", seperti yang didokumentasikan di sini.


Hah, plotnya mengental. Jika seseorang memiliki jawaban yang lebih baik, silakan tulis dan saya akan menerimanya, jika dapat diterima. Tapi di sini alasan yang jelas. Betapa lalainya saya mengabaikan file log di host :

Jun 12 01:29:46 hostmachine kernel: [140235.718807] audit_printk_skb: 183 callbacks suppressed
Jun 12 01:29:46 hostmachine kernel: [140235.718810] type=1400 audit(1402536586.521:477): apparmor="DENIED" operation="ptrace" profile="docker-default" pid=3782 comm="lsof" requested_mask="trace" denied_mask="trace" peer="docker-default"
Jun 12 01:29:46 hostmachine kernel: [140235.718860] type=1400 audit(1402536586.521:478): apparmor="DENIED" operation="ptrace" profile="docker-default" pid=3782 comm="lsof" requested_mask="read" denied_mask="read" peer="docker-default"
Jun 12 01:29:46 hostmachine kernel: [140235.718886] type=1400 audit(1402536586.521:479): apparmor="DENIED" operation="ptrace" profile="docker-default" pid=3782 comm="lsof" requested_mask="read" denied_mask="read" peer="docker-default"
Jun 12 01:29:46 hostmachine kernel: [140235.718899] type=1400 audit(1402536586.521:480): apparmor="DENIED" operation="ptrace" profile="docker-default" pid=3782 comm="lsof" requested_mask="read" denied_mask="read" peer="docker-default"
Jun 12 01:29:46 hostmachine kernel: [140235.718921] type=1400 audit(1402536586.521:481): apparmor="DENIED" operation="ptrace" profile="docker-default" pid=3782 comm="lsof" requested_mask="read" denied_mask="read" peer="docker-default"
Jun 12 01:29:46 hostmachine kernel: [140235.718954] type=1400 audit(1402536586.521:482): apparmor="DENIED" operation="ptrace" profile="docker-default" pid=3782 comm="lsof" requested_mask="read" denied_mask="read" peer="docker-default"
Jun 12 01:29:46 hostmachine kernel: [140235.719001] type=1400 audit(1402536586.521:483): apparmor="DENIED" operation="ptrace" profile="docker-default" pid=3782 comm="lsof" requested_mask="read" denied_mask="read" peer="docker-default"
Jun 12 01:29:46 hostmachine kernel: [140235.719043] type=1400 audit(1402536586.521:484): apparmor="DENIED" operation="ptrace" profile="docker-default" pid=3782 comm="lsof" requested_mask="read" denied_mask="read" peer="docker-default"
Jun 12 01:29:46 hostmachine kernel: [140235.719086] type=1400 audit(1402536586.521:485): apparmor="DENIED" operation="ptrace" profile="docker-default" pid=3782 comm="lsof" requested_mask="read" denied_mask="read" peer="docker-default"
Jun 12 01:29:46 hostmachine kernel: [140235.719126] type=1400 audit(1402536586.521:486): apparmor="DENIED" operation="ptrace" profile="docker-default" pid=3782 comm="lsof" requested_mask="read" denied_mask="read" peer="docker-default"

Jadi apparmor tampaknya menjadi pelakunya, meskipun saya harus memikirkan cara meyakinkannya untuk mengizinkan ini tanpa mengorbankan keamanan host/wadah atau untuk melihat apakah itu mungkin tanpa mengorbankan keamanan.


Kemungkinan lain, kali ini dengan pengaturan keamanan yang lebih halus:berikan hak istimewa SYS_PTRACE ke wadah buruh pelabuhan:

docker run --cap-add=SYS_PTRACE ...

Linux
  1. Temukan File yang Tidak Dapat Dibaca Pengguna?

  2. Bisakah Skrip Dapat Dieksekusi Tetapi Tidak Dapat Dibaca?

  3. Bagaimana Cara Menjalankan Program Di Dalam Wadah Docker?

  1. Bagaimana saya bisa memeriksa file yang ada dan menjalankan perintah jika tidak?

  2. Bisakah read(2) mengembalikan nol saat tidak di EOF?

  3. Bagaimana saya bisa memeriksa apakah PostgreSQL diinstal atau tidak melalui skrip Linux?

  1. Bagaimana saya bisa membaca dokumentasi tentang perintah zsh bawaan?

  2. Bagaimana saya bisa membuat R membaca variabel lingkungan saya?

  3. Cara menjalankan tugas cron di dalam wadah buruh pelabuhan