प्रश्न स्वयं व्याख्यात्मक है लेकिन केवल कुछ विवरण जोड़ना चाहता था। मैं एक उबंटू कंटेनर चला रहा हूं जिसमें कुछ पायथन फ्लास्क कोड हैं:

FROM ubuntu:latest
ADD app/ /app
WORKDIR /app
RUN apt-get update -y && \
    apt-get install -y python3-pip python-dev build-essential
RUN pip3 install -r requirements.txt
RUN pip3 install flask
EXPOSE 50000
ENTRYPOINT ["python3"]
CMD ["app.py"]

डॉकर कंपोज़ फ़ाइल कुछ इस तरह दिखती है:

version: "2"
services:
  app:
    container_name: flask-app
    restart: always
    build:
      context: ./
      dockerfile: app/Dockerfile
    volumes:
      - "./app:/app"
    ports:
      - "5000:5000"
    stdin_open: true
    tty: true

मैं कंटेनर से कैसे जुड़ूं और एक इंटरैक्टिव बैश शेल कैसे चलाऊं? वर्तमान में अटैच कमांड बिना वापस लौटे ही हैंग हो जाता है।

0
BallmersLeak 7 अक्टूबर 2020, 23:56

1 उत्तर

सबसे बढ़िया उत्तर

डॉकर अटैचमेंट:

चल रहे कंटेनर में स्थानीय मानक इनपुट, आउटपुट और त्रुटि स्ट्रीम संलग्न करें
...
नोट: अटैच कमांड ENTRYPOINT/CMD प्रक्रिया के आउटपुट को प्रदर्शित करेगा। ऐसा प्रतीत हो सकता है जैसे अटैच कमांड लटका हुआ है जब वास्तव में प्रक्रिया उस समय टर्मिनल के साथ इंटरैक्ट नहीं कर रही है।

Docker exec:

docker exec कमांड एक रनिंग कंटेनर में एक नया कमांड चलाता है।

TL;DR: आप चाहते हैं कि docker exec -it [docker-instance-id] /bin/sh एक टर्मिनल पर पहुंचे। docker attach उस बिंदु से आपको केवल stdout आपके फ्लास्क ऐप से दिखाएगा (जो कुछ भी नहीं हो सकता है, यही कारण है कि यह लटका हुआ प्रतीत होता है)।

2
jeremysprofile 8 अक्टूबर 2020, 00:05