Score:0

คอนเทนเนอร์ apache2 docker เขียนบันทึกบนโฮสต์ของฉันในฐานะผู้ใช้รูท

ธง cl

ฉันกำลังเรียกใช้คอนเทนเนอร์นักเทียบท่า apache2 บนกล่องอูบุนตูของฉัน แต่มันยังคงเขียนบันทึกไปยังระบบปฏิบัติการโฮสต์ของฉัน รายละเอียดด้านล่าง:

ตัวอย่าง/นักเทียบท่า/apache2/Dockerfile

จาก php:5.6.34-apache
คัดลอก ./sites-available/mysite.conf /etc/apache2/sites-available/mysite.conf
เรียกใช้ a2dissite 000-default.conf
#RUN a2dissite เริ่มต้น-ssl.conf
เรียกใช้ a2ensite mysite.conf

กับ:

ตัวอย่าง/นักเทียบท่า/apache2/sites-available/mysite.conf:

<VirtualHost *:80>
    ServerAdmin [email protected]
    ServerName localhost
    ServerAlias localhost
    #DocumentRoot /var/www/html
    DocumentRoot /var/www


    ErrorLog /dev/stderr
    CustomLog /dev/stdout combined

    #ErrorLog ${APACHE_LOG_DIR}/error.log
    #CustomLog ${APACHE_LOG_DIR}/access.log combined
    
</VirtualHost>

ที่ฉันสร้าง / รันด้วย:

ตัวอย่าง/นักเทียบท่า-compose.yaml:

รุ่น: '3.8'
บริการ:
  apache2-php:
    container_name: apache2-php-คอนเทนเนอร์
    รูปภาพ: apache2-php-image
    สร้าง:
      บริบท: ./docker/apache2
    พอร์ต:
      - "8082:80"

แต่ บันทึก, วิ่ง และ ล็อค โฟลเดอร์ถูกสร้างขึ้นบนโฮสต์ของฉันภายใต้ผู้ใช้รูทหนึ่งโฟลเดอร์ ข้างต้น ไฟล์ docker-compose.yaml ของฉัน:

$ ll
รวม 60
drwxrwxr-x 3 ผู้ใช้ ผู้ใช้ 4096 พ.ย. 58 09:22 ตัวอย่าง/
drwxr-xr-x 3 รูทรูท 4096 15 พ.ย. 10:40 ล็อค/
drwxr-xr-x 3 รูทรูท 4096 15 พ.ย. 10:40 น. บันทึก /
drwxr-xr-x 3 รูทรูท 4096 15 พ.ย. 10:40 run/

กับ:

âââ บันทึก
â âââ apache2
â âââ error.log
â âââ other_vhosts_access.log

ฉันได้ลองคำแนะนำที่นี่แล้ว:

กำลังเขียนบันทึก Apache2 ไปยัง stdout/stderr หรือไม่

แต่ก็ไม่มีผล

เหตุใดโฟลเดอร์/ไฟล์เหล่านั้นจึงถูกสร้างขึ้นที่ตำแหน่งนั้นบนโฮสต์ของฉัน และฉันจะกำหนดค่าคอนเทนเนอร์ apache2 ให้เขียนบันทึกภายในคอนเทนเนอร์เท่านั้น ไม่ใช่บนโฮสต์ของฉันได้อย่างไร

sgohl avatar
ca flag
คุณควรให้คำสั่งที่คุณดำเนินการเสมอ
Score:1
ธง ca

มันเป็นไปไม่ได้จริงๆ เว้นแต่คุณจะกำหนด ปริมาณ ใน docker-compose คอนเทนเนอร์ไม่สามารถเขียนอะไรลงในระบบไฟล์ของโฮสต์ได้

พิสูจน์ด้วย

> นักเทียบท่าตรวจสอบ apache2-php-container | jq .[].Mounts
> นักเทียบท่าตรวจสอบ apache2-php-container | jq .[].ปริมาณ

คุณยังสามารถพิสูจน์ย้อนกลับได้ด้วยการสร้างไฟล์ในโฟลเดอร์บันทึกของ Host ที่เป็นลางไม่ดี และลองค้นหาภายในคอนเทนเนอร์ (คุณไม่ได้ระบุว่าโฟลเดอร์นี้อยู่ที่ไหนหรือควรอยู่ในคอนเทนเนอร์ของคุณ หมายเหตุ: แม้ว่าคอนเทนเนอร์จะเขียน ไฟล์ไปยังโฮสต์ มันจะสามารถเข้าถึงได้จากภายในคอนเทนเนอร์ในบางเส้นทางแน่นอน - เพราะต้องติดตั้งที่อื่น)

ฉันได้ทำซ้ำลำดับชั้นของคุณและยืนยันว่าไม่มีการสร้างโฟลเดอร์

ตัวอย่าง > สร้างนักเทียบท่า-เขียน
สร้าง apache2-php
กำลังส่งบริบทบิลด์ไปยัง Docker daemon 3.584kB
...
ติดแท็ก apache2-php-image:latest เรียบร้อยแล้ว
ตัวอย่าง > docker-compose up -d
การสร้างเครือข่าย "samples_default" ด้วยไดรเวอร์เริ่มต้น
สร้าง apache2-php-container ... เสร็จแล้ว
> ต้นไม้
.
âââ ตัวอย่าง
    âââ นักเทียบท่า
    â âââ apache2
    â âââ ไฟล์นักเทียบท่า
    â  âââ ไซต์ที่มีอยู่
    â âââ mysite.conf
    âââ นักเทียบท่า-compose.yaml

4 ไดเร็กทอรี 3 ไฟล์

การบันทึกจะไปที่เอาต์พุตบันทึกนักเทียบท่า:

> curl -I http://localhost:8082/bla
ไม่พบ HTTP/1.1 404
เซิร์ฟเวอร์: Apache/2.4.10 (เดเบียน)

apache2-php-คอนเทนเนอร์ | 172.21.0.1 - - [17/พ.ย./2021:12:34:16 +0000] "HEAD /bla HTTP/1.1" 404 140 "-" "curl/7.69.1"

คุณอาจมีแคชบางอย่างอยู่ที่นั่น พยายามทำความสะอาดระบบของคุณ (ระบบนักเทียบท่าพรุน -a -f (ระวัง!)) หรือทดสอบกับระบบอื่นที่ยังไม่ถูกแตะต้อง

เคล็ดลับ: สร้างนักเทียบท่า - เขียน - ไม่มีแคช

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา