GNU/Linux >> Belajar Linux >  >> Linux

Mengarahkan output perintah di buruh pelabuhan

Sekadar pelengkap, saat menggunakan docker-compose , Anda juga dapat mencoba:

command: bash -c "script_or_command > /path/to/log/command.log 2>&1"


Saat Anda menentukan daftar JSON sebagai CMD dalam Dockerfile , itu tidak akan dieksekusi di shell, jadi fungsi shell yang biasa, seperti pengalihan stdout dan stderr, tidak akan berfungsi.

Dari dokumentasi:

Formulir exec diuraikan sebagai larik JSON, yang berarti Anda harus menggunakan tanda kutip ganda (" ) di sekitar kata bukan tanda kutip tunggal (' ).

Berbeda dengan bentuk shell, bentuk exec tidak menjalankan perintah shell. Ini berarti pemrosesan shell normal tidak terjadi. Misalnya, CMD [ "echo", "$HOME" ] tidak akan melakukan penggantian variabel pada $HOME . Jika Anda ingin pemrosesan shell, gunakan formulir shell atau jalankan shell secara langsung, misalnya:CMD [ "sh", "-c", "echo", "$HOME" ] .

Apa yang sebenarnya dilakukan oleh perintah Anda adalah mengeksekusi index.py Anda skrip dan meneruskan string "1>server.log" dan "2>server.log" sebagai argumen baris perintah ke dalam skrip python itu .

Gunakan salah satu dari berikut ini (keduanya harus berfungsi):

  1. CMD "python index.py > server.log 2>&1"
  2. CMD ["/bin/sh", "-c", "python index.py > server.log 2>&1"]

Untuk menggunakan docker run dalam pipa shell atau di bawah pengalihan shell, membuat run terima stdin dan keluarkan ke stdout dan stderr dengan tepat, gunakan mantra ini:

docker run -i --log-driver=none -a stdin -a stdout -a stderr ...

misalnya untuk menjalankan alpine gambar dan jalankan perintah UNIX cat di lingkungan yang terkandung:

echo "This was piped into docker" |
  docker run -i --log-driver=none -a stdin -a stdout -a stderr \
    alpine cat - |
  xargs echo This is coming out of docker: 

memancarkan:

This is coming out of docker: This was piped into docker

Linux
  1. Bagaimana Cara Menetapkan Output Perintah Ke Variabel Shell?

  2. Menyimpan Output Perintah Dalam Variabel Shell?

  3. Apa Perbedaan Get Command Output Menggunakan`command`dan $(command) Di Shell??

  1. Memahami Output Perintah "statistik buruh pelabuhan"

  2. Melihat output penuh dari perintah PS

  3. Bagaimana saya bisa mengulang output dari perintah shell?

  1. Bagaimana cara Menghapus baris 'n' Pertama/Terakhir dari output perintah di Shell?

  2. Bagaimana Mengenalinya Jika Output Dari Perintah Atau Skrip Shell Adalah Stdout Atau Stderr?

  3. perintah buruh pelabuhan tidak ditemukan