คำถามติดแท็ก docker

นักเทียบท่าเป็นโครงการโอเพนซอร์ซที่ปรับใช้งานแอพพลิเคชั่นอัตโนมัติภายในคอนเทนเนอร์ซอฟต์แวร์

6
ตรวจสอบว่าเป็นคอนเทนเนอร์ / บริการทำงานด้วยนักเทียบท่าเขียน
docker-composeฉันใช้ คำสั่งบางคนชอบup -d service_nameหรือจะกลับทันทีและนี่คือประโยชน์สวยถ้าคุณไม่ต้องการภาชนะที่ใช้ขึ้นอยู่กับสถานะของเปลือกเช่นที่พวกเขาทำกับปกติstart service_name up service_nameกรณีใช้เดียวกำลังเรียกใช้จากเซิร์ฟเวอร์การรวม / การจัดส่งบางประเภท แต่วิธีการทำงาน / เริ่มบริการนี้ไม่ได้ให้ข้อเสนอแนะใด ๆ เกี่ยวกับสถานะที่แท้จริงของบริการในภายหลัง การอ้างถึงupคำสั่งDocker Compose CLI สำหรับคำสั่งไม่พูดถึงตัวเลือกที่เกี่ยวข้อง แต่สำหรับรุ่น1.7.1นั้นจะไม่สามารถใช้ร่วมกับ-d: --abort-on-container-exit Stops all containers if any container was stopped. *Incompatible with -d.* ฉันสามารถตรวจสอบด้วยตนเองได้ว่าภาชนะนั้นทำงานจริงและยังไม่หยุดเพราะข้อผิดพลาดบางอย่าง?

4
การกำหนดค่า Docker เพื่อไม่ใช้ช่วง 172.17.0.0
เนื่องจากปัญหาเกี่ยวกับ Captive Port และช่วง Docker IP เริ่มต้นฉันพยายามทำให้ Docker ใช้ช่วง 198.18.0.0 แทนที่จะเป็น 172.17.0.0 ซึ่งปะทะกับ Captive Port ที่ใช้กับรถไฟที่ฉันอาศัยอยู่ ต่อไปนี้เอกสารฉันสร้าง/etc/docker/daemon.jsonและวางต่อไปในมัน { "bip":"198.18.0.0/16" } สิ่งนี้ใช้ได้กับ docker0 แต่ดูเหมือนว่าจะไม่ได้รับผลกระทบใด ๆ ของเครือข่ายอื่น ๆ และการใช้นักเทียบท่าเขียนเครือข่ายแรกที่สร้างขึ้นคือ 172.17.0.0 ซึ่งสร้างความขัดแย้งขึ้นใหม่ ฉันจะทำอย่างไรเพื่อเปลี่ยนซับเน็ตเริ่มต้นสำหรับทุกเครือข่ายนักเทียบท่า (โดยไม่ต้องระบุช่วง IP ที่กำหนดเองของฉันในทุกไฟล์ที่เขียน)

4
ขั้นตอนสำหรับ จำกัด การเชื่อมต่อนอกไปยังคอนเทนเนอร์นักเทียบท่าด้วย iptables?
เป้าหมายของฉันคือ จำกัด การเข้าถึงคอนเทนเนอร์ของนักเทียบท่าที่อยู่ IP สาธารณะเพียงไม่กี่แห่ง มีกระบวนการที่เรียบง่ายและทำซ้ำได้เพื่อบรรลุเป้าหมายของฉันหรือไม่ ทำความเข้าใจกับพื้นฐานของ iptables ในขณะที่ใช้ตัวเลือกเริ่มต้นของ Docker ฉันพบว่ามันยากมาก ฉันต้องการเรียกใช้คอนเทนเนอร์ทำให้เห็นอินเทอร์เน็ตสาธารณะ แต่อนุญาตเฉพาะการเชื่อมต่อจากโฮสต์ที่เลือก ฉันคาดว่าจะตั้งค่านโยบายอินพุตเริ่มต้นของ REJECT แล้วอนุญาตเฉพาะการเชื่อมต่อจากโฮสต์ของฉัน แต่กฎและโซ่ NAT ของ Docker เข้ามาขวางและกฎ INPUT ของฉันจะถูกละเว้น ใครบางคนสามารถเป็นตัวอย่างของวิธีการบรรลุเป้าหมายของฉันตามสมมติฐานดังต่อไปนี้? โฮสต์ IP สาธารณะ 80.80.80.80 บน eth0 โฮสต์ IP ส่วนตัว 192.168.1.10 บน eth1 docker run -d -p 3306:3306 mysql บล็อกการเชื่อมต่อทั้งหมดไปยังโฮสต์ / คอนเทนเนอร์ 3306 ยกเว้นจากโฮสต์ 4.4.4.4 และ 8.8.8.8 …
20 iptables  docker 

2
ระบบปฏิบัติการใดกำลังทำงานอยู่ในคอนเทนเนอร์ Docker ของฉัน
ส่วนใหญ่ใช้หนึ่งในสองอย่างนี้ฉันสามารถบอกได้ว่าระบบปฏิบัติการใดกำลังทำงานอยู่ในคอนเทนเนอร์ Docker ของฉัน (อัลไพน์ CentOS ฯลฯ ) แต่คราวนี้ฉันบอกไม่ได้: bash-4.2$ uname -a Linux 6fe5c6d1451c 2.6.32-504.23.4.el6.x86_64 #1 SMP Tue Jun 9 20:57:37 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux bash-4.2$ more /etc/issue \S Kernel \r on an \m มีวิธีใดบ้างที่จะได้รับรุ่นที่เป็นข้อความของระบบปฏิบัติการที่ใช้อยู่

5
chmod ทำงานไม่ถูกต้องใน Docker
ฉันกำลังสร้างอิมเมจ Docker สำหรับSymfonyแอปของฉันและฉันต้องให้สิทธิ์เซิร์ฟเวอร์ apache เพื่อเขียนลงในแคชและโฟลเดอร์บันทึก #Dockerfile FROM php:7-apache RUN apt-get update \ && apt-get install -y libicu-dev freetds-common freetds-bin unixodbc \ && docker-php-ext-install intl mbstring \ && a2enmod rewrite COPY app/php.ini /usr/local/etc/php/ COPY app/apache2.conf /etc/apache2/apache2.conf COPY ./ /var/www/html RUN find /var/www/html/ -type d -exec chmod 755 {} \; RUN find …

2
Iptables ตั้งค่ากฎเพื่อให้คอนเทนเนอร์นักเทียบท่าสามารถเข้าถึงบริการบนโฮสต์ IP
ฉันมีปัญหาในการเข้าถึงโฮสต์ private interface (ip) จาก container docker ฉันค่อนข้างแน่ใจว่าเกี่ยวข้องกับกฎ Iptables ของฉัน (หรืออาจกำหนดเส้นทาง) เมื่อฉันเพิ่มการ--net=hostตั้งค่าสถานะdocker runทุกอย่างทำงานตามที่คาดไว้ ในทำนองเดียวกันเมื่อฉันระบุว่านโยบายการป้อนข้อมูลกำลังติดตามเสรีนิยม-P INPUT ACCEPTสิ่งต่าง ๆ ก็ทำงานได้ตามที่ฉันคาดหวัง อย่างไรก็ตามสิ่งเหล่านี้เป็นตัวเลือกที่ไม่พึงประสงค์และไม่ปลอดภัยที่ฉันต้องการหลีกเลี่ยง เนื่องจากมันไม่ได้เฉพาะเจาะจงกับบริการของฉัน (DNS) ฉันได้แยกสิ่งนั้นออกจากปัญหาเนื่องจากการค้นหาสิ่งนั้นร่วมกับนักเทียบท่าให้ผลในพื้นที่ปัญหาที่แตกต่างกัน (เป็นที่นิยม) เพิ่มเสียงให้กับผลการค้นหา การเชื่อมโยงคอนเทนเนอร์ Docker นั้นไม่ใช่ตัวเลือกที่ใช้งานได้เนื่องจากคอนเทนเนอร์บางตัวจำเป็นต้องรันด้วยตัวเลือก --net = host เพื่อป้องกันการเชื่อมโยงและฉันต้องการสร้างสถานการณ์ที่สอดคล้องกันหากเป็นไปได้ ฉันมีกฎ Iptables ต่อไปนี้ การรวมกันของ CoreOS, Digital Ocean และ Docker ฉันถือว่า -P INPUT DROP -P FORWARD ACCEPT -P OUTPUT ACCEPT …
18 iptables  docker 

4
ส่งจดหมายจาก Docker container พร้อมกับ Postfix ของโฮสต์
ฉันใช้เซิร์ฟเวอร์ Ubuntu 14.04 (Linux) ฉันได้ติดตั้งและกำหนดค่าPostfixและOpenDKIMอย่างดีบนเซิร์ฟเวอร์ ฉันสามารถส่งอีเมลไปยังตัวเองด้วยคำสั่งเช่นecho hi | sendmail rootและ postfix / opendkim จะเพิ่มส่วนหัวเช่นMessage-Id, DateและDKIM-Signatureส่งต่ออีเมลไปยังที่อยู่อีเมลส่วนตัวของฉันและทุกอย่างใช้งานได้ดี ตอนนี้ฉันต้องการสร้างแอปพลิเคชันที่ทำงานในDocker container และสามารถส่งอีเมลได้อย่างง่ายดาย โดยเฉพาะอย่างยิ่งฉันไม่ต้องการกังวลเกี่ยวกับการเพิ่มส่วนหัวเช่นMessage-Idกันและฉันไม่ต้องการทำการกำหนดค่ามากหรือติดตั้งซอฟต์แวร์ภายในคอนเทนเนอร์เอง วิธีที่ดีที่สุดในการทำเช่นนี้คืออะไร? มีวิธีใดที่จะให้คอนเทนเนอร์รันsendmailexectuable บนโฮสต์หรือไม่? ฉันพยายามทำการเชื่อมต่อกับ Postfix จากคอนเทนเนอร์โดยใช้โปรโตคอล SMTP บนพอร์ต 25 แต่ Postfix ดูเหมือนว่าจะรักษาข้อความที่ได้รับแตกต่างกัน ฉันคิดว่ามันไม่ได้เพิ่มส่วนหัวใด ๆ ดังนั้นข้อความที่ถูกปฏิเสธทันทีว่าเป็นจดหมายขยะโดย gmail (มันยังไม่ดีพอที่จะวางไว้ในโฟลเดอร์สแปมของฉัน) นี่คือเนื้อหาของ maillog Sep 28 23:35:52 dantooine postfix/smtpd[4306]: connect from unknown[172.17.0.95] Sep 28 23:35:52 dantooine …

2
ฉันจะปรับใช้คอนเทนเนอร์นักเทียบท่าและที่เก็บข้อมูลที่เกี่ยวข้องรวมถึงเนื้อหาได้อย่างไร
ฉันจะเริ่มด้วยการยอมรับว่าฉันค่อนข้างใหม่กับ Docker และฉันอาจกำลังเข้าใกล้ปัญหานี้จากข้อสันนิษฐานที่ไม่ถูกต้อง ... แจ้งให้เราทราบหากเป็นเช่นนั้น ฉันได้เห็นการถกเถียงกันมากมายเกี่ยวกับวิธีที่นักเทียบท่ามีประโยชน์สำหรับการปรับใช้ แต่ไม่มีตัวอย่างของวิธีการทำจริง นี่คือวิธีที่ฉันคิดว่ามันใช้งานได้: สร้างที่เก็บข้อมูลเพื่อเก็บข้อมูลถาวรบางอย่างบนเครื่อง A สร้างแอปพลิเคชันคอนเทนเนอร์ซึ่งใช้โวลุ่มจากดาต้าคอนเทนเนอร์ ทำงานบางอย่างอาจเปลี่ยนข้อมูลในที่เก็บข้อมูล หยุดคอนเทนเนอร์แอ็พพลิเคชัน กระทำ & ติดแท็กที่เก็บข้อมูล ผลักดันภาชนะบรรจุข้อมูลไปยังพื้นที่เก็บข้อมูล (ส่วนตัว) ดึงและเรียกใช้รูปภาพจากขั้นตอนที่ 6 บนเครื่อง B รับที่ที่คุณทิ้งไว้บนเครื่อง B ขั้นตอนสำคัญที่นี่คือขั้นตอนที่ 5 ซึ่งฉันคิดว่าจะบันทึกสถานะปัจจุบัน (รวมถึงเนื้อหาของระบบไฟล์) จากนั้นคุณสามารถผลักดันสถานะนั้นไปยังที่เก็บและดึงมันจากที่อื่นเพื่อให้คุณมีคอนเทนเนอร์ใหม่ที่เหมือนกับต้นฉบับ แต่ดูเหมือนว่าจะไม่ได้ผล สิ่งที่ฉันพบคือว่าขั้นตอนที่ 5 ไม่ได้ทำในสิ่งที่ฉันคิดหรือขั้นตอนที่ 7 (การดึงและเรียกใช้รูปภาพ) "รีเซ็ต" คอนเทนเนอร์เป็นสถานะเริ่มต้น ฉันได้รวบรวมชุดของอิมเมจและคอนเทนเนอร์สามตัวเพื่อทดสอบสิ่งนี้: data container, นักเขียนที่เขียนสตริงสุ่มลงในไฟล์ใน data container ทุก 30 วินาทีและผู้อ่านที่เพียงแค่echoใส่ค่าในข้อมูล ไฟล์คอนเทนเนอร์และออก ที่เก็บข้อมูล สร้างด้วย docker …
18 docker 

3
การแบ่งปันซ็อกเก็ตยูนิกซ์ผ่านทางนักเทียบท่าปริมาณ - สิทธิ์ถูกปฏิเสธ
ฉันพยายามแชร์php5-fpmซ็อกเก็ตของฉันผ่านไดรฟ์ข้อมูลกับnginxเว็บเซิร์ฟเวอร์ของฉัน Fpm และ nginx กำลังทำงานในคอนเทนเนอร์ที่แตกต่างกันและฉันต้องการให้พวกเขาทำงานผ่านไดรฟ์ข้อมูลที่ใช้ร่วมกันที่ฉันวางไฟล์ซ็อกเก็ตจาก fpm 2014/04/13 10:53:35 [crit] 33#0: *1 connect() to unix:/container/fpm/run/php5-fpm.sock failed (13: Permission denied) while connecting to upstream, client: 192.168.8.2, server: docker.dev, request: "GET /test.php HTTP/1.1", upstream: "fastcgi://unix:/container/fpm/run/php5-fpm.sock:", host: "docker.dev" ฉันพยายามแล้วตั้งค่าสิทธิ์ 777 และการเปลี่ยนแปลงของกลุ่มที่จะphp5-fpm.socketwww-data Dockerfile ของคอนเทนเนอร์ fpm FROM ubuntu:13.10 RUN apt-get update RUN apt-get upgrade -y RUN …
18 nginx  socket  docker 

3
วิธีรับ php-fpm เพื่อเข้าสู่ระบบ stdout / stderr เมื่อทำงานในคอนเทนเนอร์นักเทียบท่า
ฉันมี php-fpm ในคอนเทนเนอร์ docker และในDockerfileฉันแก้ไขไฟล์ config fpm ( /etc/php5/fpm/pool.d/www.conf) เพื่อตั้งค่าบันทึกการเข้าถึงเพื่อไปที่/var/log/fpm-access.logและบันทึกข้อผิดพลาดเพื่อไปที่/var/log/fpm-php.www.log: # Do some php-fpm config # Redirect worker stdout and stderr into main error log # Activate the fpm access log # Enable display errors # Enable the error log RUN sed -i '/^;catch_workers_output/ccatch_workers_output = yes' /etc/php5/fpm/pool.d/www.conf && \ sed …

1
อินสแตนซ์ของ FreeBSD Jails หรือ Docker
อะไรคือความแตกต่างที่สำคัญระหว่างคุกบน FreeBSD และ Docker บน Linux มีความปลอดภัยมากกว่าหรือมีประสิทธิภาพมากกว่าผู้อื่นหรือไม่ คุกมีอายุมากกว่าอินสแตนซ์ของนักเทียบท่าดังนั้นตัวรหัสอาจมีความปลอดภัยมากกว่า แต่คุกไม่เคย "ติด" ดังนั้นบางทีพวกเขาอาจไม่ดีเท่า Docker อินสแตนซ์? หรือเป็นเพราะ Linux เป็นที่นิยมมากกว่า FreeBSD มาก?
18 docker  freebsd  jail 

3
“ อุปกรณ์อินพุตไม่ใช่ TTY” หมายถึงอะไรในเอาต์พุต“ นักเทียบท่าเรียกใช้”?
นี่คือคำสั่งที่ใช้งานได้: $ echo 'hi there' | docker run -i ubuntu cat hi there นี่คือคำสั่งที่ตอบสนองด้วยข้อความแสดงข้อผิดพลาด: $ echo 'hi there' | docker run -it ubuntu cat the input device is not a TTY ฉันต้องการทราบว่าเกิดอะไรขึ้นที่นี่ ไม่ใช่แค่ "ลบ -t และมันจะได้รับการแก้ไข" ฉันรู้ว่าdocker run's -tตัวเลือกที่ย่อมาจาก 'จัดสรรหลอก TTY' และฉันได้อ่านภาพรวมประวัติศาสตร์ของสิ่ง TTY ย่อมาแต่มันก็ไม่ได้ช่วยให้ฉันเข้าใจสิ่งที่ชนิดของสัญญาการละเมิดที่นี่
18 linux  docker  tty 

9
Amazon ECS - คุณจะเริ่มงานบริการทั้งหมดได้อย่างไร
เรามีงานที่โหลดไฟล์การกำหนดค่าบางอย่างจากแหล่งข้อมูลภายนอก หลังจากอัปโหลดการตั้งค่าแล้วเราต้องการที่จะสามารถเริ่มต้นภารกิจทั้งหมดในบริการเพื่อให้การตั้งค่าแพร่กระจายไปยังอินสแตนซ์ทั้งหมด วิธีที่ดีที่สุดในการเริ่มบริการทั้งหมดใหม่คืออะไร เรามี 'วิธีแก้ปัญหา' ที่เกี่ยวข้องกับการตั้งค่า 'จำนวนงาน' เป็น 0 แล้วสำรองข้อมูล แต่นี่ไม่ใช่วิธีที่ควรทำและมีการหยุดทำงาน

4
การสร้างคอนเทนเนอร์นักเทียบท่า mysql ด้วยแบบแผนฐานข้อมูลที่เตรียมไว้
ฉันต้องการสร้างภาพนักเทียบท่าที่ด้านบนของ mysql ที่มีรูปแบบที่จำเป็นสำหรับแอพของฉันอยู่แล้ว ฉันพยายามเพิ่มบรรทัดลงใน Dockerfile ที่จะนำเข้าโครงร่างของฉันเป็นไฟล์ sql ฉันทำเช่นนั้น (Dockerfile ของฉัน): FROM mysql ENV MYSQL_ROOT_PASSWORD="bagabu" ENV MYSQL_DATABASE="imhere" ADD imhere.sql /tmp/imhere.sql RUN "mysql -u root --password="bagabu" imhere < /tmp/imhere.sql" เพื่อความเข้าใจของฉันที่ไม่ทำงานเพราะภาพนักเทียบท่า mysql ไม่ได้มีลูกค้า mysql (ปฏิบัติที่ดีที่สุดรัฐ "อย่าเพิ่มสิ่งเพียงเพราะพวกเขาจะดีที่จะมี") (ฉันผิดเกี่ยวกับเรื่องนี้?) สิ่งที่อาจเป็นวิธีที่ดีในการทำเช่นนี้? ฉันมีบางสิ่งที่อยู่ในใจ แต่พวกเขาทั้งหมดดูเหมือนการแก้ไขปัญหายุ่ง ติดตั้งไคลเอนต์ mysql ทำในสิ่งที่ฉันต้องทำจากนั้นลบ / กำจัดมัน คัดลอกไบนารีไคลเอนต์ mysql ไปยังรูปภาพทำสิ่งที่ฉันต้องทำแล้วลบออก สร้างสคีมาในเซิร์ฟเวอร์ sql อื่นและคัดลอกไฟล์ db โดยตรง …
17 mysql  docker 

6
Apache in Docker: ฉันจะ“ access.log” ได้อย่างไร?
ฉันเพิ่งเริ่มต้นใช้งานนักเทียบท่าและรวยตอนนี้ฉันกำลังพยายามหาวิธีตั้งค่าสภาพแวดล้อม Apache 2 / PHP ชุดแรกของฉัน ถึงตอนนี้ฉันใช้ Linux VM แบบเต็มโดยที่ฉันใช้ล็อกไฟล์ที่เขียนไปยัง / var / log / apache2 จากนั้นใช้ "logrotate" เพื่อกระโดดไปยังไฟล์ใหม่ในแต่ละวัน Logfiles ส่วนใหญ่จะใช้สำหรับการตรวจจับข้อผิดพลาดทันที (เช่นเข้าสู่เซิร์ฟเวอร์และใช้น้อยกว่าเพื่อเปิดไฟล์ access.log และ error.log ปัจจุบัน) และสำหรับ fail2ban หากฉันถูกต้องที่ไม่สามารถใช้งานได้ในสภาพแวดล้อมของ Docker - ส่วนใหญ่เป็นเพราะคุณมักจะไม่สามารถเข้าสู่ระบบคอนเทนเนอร์เพื่อดูบันทึก ล็อกจะสูญหายเช่นกันหากลบคอนเทนเนอร์ ดังนั้น: วิธีใดที่ใช้กันมากที่สุดในการทำงานกับ / จำลอง / แทนที่ access.log / error.log ในสถานการณ์นั้น อะไรคือโซลูชันทั่วไปสำหรับทั้งสภาพแวดล้อมการผลิตและการพัฒนา ความคิดของฉันรวมถึงการใช้การแบ่งปัน NFS (ช้าและอาจทำให้เกิดการชนกันของชื่อไฟล์ถ้าไม่ระวัง) และlogstash (ไม่แน่ใจว่าคุ้มค่ากับความพยายามและสามารถใช้งานได้สำหรับไซต์ขนาดเล็กหรือแม้แต่สภาพแวดล้อม dev)? …

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.