systemctl बस से कनेक्ट करने में विफल रहा - docker ubuntu: 16.04 कंटेनर


72

मैं systemctlएक ubuntu:16.04डॉकटर कंटेनर में कमांड का उपयोग करने की कोशिश कर रहा हूं । मैं निम्नलिखित कमांड चला रहा हूँ ...

systemctl status ssh

हालाँकि मुझे त्रुटि मिल रही है ...

Failed to connect to bus: No such file or directory

यह काम क्यों नहीं कर रहा है? क्या यह डॉकटर कंटेनर में उबंटू से संबंधित है? मैं systemctlसही तरीके से काम कैसे कर सकता हूं ?


2
उपयोगservice ssh start
बिद्युत '’

जवाबों:


50

मुझे लगता है कि आप अपने डॉकटर कंटेनर को कुछ इस तरह से शुरू करते हैं

docker run -t -i ubuntu:16.04 /bin/bash

अब समस्या यह है कि आपकी init प्रक्रिया PID 1 है /bin/bash, न कि सिस्टमड। के साथ पुष्टि करें ps aux

इसके अलावा आप के साथ गुमशुदा हैं जो संवाद करने का तरीका होगा। यह वह जगह है जहाँ से आपका त्रुटि संदेश आ रहा है। लेकिन जैसा कि आपका पीआईडी ​​1 सिस्टमड नहीं है, यह डब स्थापित करने में मदद नहीं करेगा।

सबसे अच्छा यह होगा कि आप जिस तरह से डॉकटर का उपयोग करने की योजना बना रहे हैं, उस पर फिर से विचार करें। एक प्रक्रिया प्रबंधक के रूप में सिस्टमड पर भरोसा न करें लेकिन क्या डॉकटर कंटेनर आपके वांछित एप्लिकेशन को अग्रभूमि में चलाता है।


ओपनश-सर्वर जैसी सेवाओं को डिफ़ॉल्ट syslog सुविधा में लॉग करने के लिए कॉन्फ़िगर किया गया है। मैं systemctl पर भरोसा किए बिना sshd लॉग कैसे प्राप्त कर सकता हूं?
पार्थ शाह

@ParthShah कृपया sshd मैन पेज देखें। मेरा निम्नलिखित विकल्प हैं: -D के साथ इसे शांत करके आप इसे अग्रभूमि में रख सकते हैं। -e के साथ आप इसे सीधे लॉग को प्रिंट करने का निर्देश देते हैं। ये बाद में के साथ docker तरीके का निरीक्षण किया जा सकता है docker log
14:22 बजे user228505

[FYI करें] /sbin/initPID = 1 प्रक्रिया होने के कारण यह त्रुटि हो रही थी । जोड़ने --privileged=trueसे @sonjaya sonjaya नीचे isssue हल का सुझाव दिया है।
डिमजी

सुन्दर उत्तर !!
सचिन वर्मा

11

अन्य लोगों ने इसी तरह की समस्या बताई है। टर्मिनल शुरू करें और टाइप करें:

$ env

क्या आप इस तरह से एक पर्यावरण चर देखते हैं?

XDG_RUNTIME_DIR=/run/user/`id -u`

जहां id -uएक भी उद्धरण नहीं backticks में संलग्न है। यह चर आमतौर पर 1000नियमित उपयोगकर्ताओं और 0सुपर उपयोगकर्ता (sudo) के लिए एक संख्या में पुनर्व्याख्या है ।

यदि पर्यावरण चर XDG_RUNTIME_DIRमौजूद नहीं है, तो आपको इसे बनाने की आवश्यकता है। पूरी चर्चा लॉन्चपैड सिस्टमड के उत्तरों में है


2
मैंने बिना सफलता के यह कोशिश की। जैसा कि मेरे उबंटू 16.04 उदाहरण में एक डॉक कंटेनर का रूप है और मैंने उन किसी भी उपयोगकर्ता को सेट नहीं किया है जिनके रूप में मैं काम कर रहा हूं root, इसलिए मैंने XDG_RUNTIME_DIR=/run/root/0सफलता के बिना चर का उपयोग किया । फिर मैंने फ़ोल्डर की जाँच की /runऔर पाया कि कोई सबफ़ोल्डर नहीं है /run/root। वैसे भी क्या मुझे एक और क्रिया त्रुटि संदेश मिल सकता है? मेरे पास एक नज़र थी, systemctl --helpलेकिन विस्तृत त्रुटि संदेश प्राप्त करने का तरीका नहीं देख सकी।
डंकन ग्रेविल

1
मैं एक ही मुद्दा रहा हूँ और यह भी मेरी समस्या का समाधान नहीं किया। क्या आपने कभी @DuncanGravill
Roeland

3
@Roeland हाँ। मैंने एसओ पर एक समान प्रश्न पूछा था, जिसकी तीव्र प्रतिक्रिया थी। इसके अलावा, मैं डॉकर वेबसाइट पर सेल्फ-पोस्ड ट्यूटोरियल देखने की सलाह देता हूं। यह उन वीडियो में समझाया गया है (थोड़ा अस्पष्ट) PID 1जो आमतौर पर systemdएक डॉक कंटेनर में कंटेनर एंट्रीपॉइंट के साथ बदल दिया जाता है ।
डंकन ग्रेविल 19

शानदार, धन्यवाद! सिस्टम यूनिट से उपयोगकर्ता इकाई शुरू करने / प्रबंधन करने के लिए मुझे इसकी आवश्यकता थी।
एड्रियन गुंटर

5

यदि आपको लिनक्स (WSL) के लिए विंडोज सबसिस्टम में यह त्रुटि मिल रही है, तो मैंने पाया है कि डॉकर असमर्थित है। यह cgroups और अन्य पूर्वापेक्षाओं की कमी के कारण है।


3

इसे इस्तेमाल करे:

docker run -ti -d --privileged=true images_docker  "/sbin/init"

या

docker run -ti -d --privileged=true images_docker

वही परिणाम होगा।

यहाँ मुझे डॉकर के डॉक से मिलता है :

डिफ़ॉल्ट रूप से, डॉकर कंटेनर "अनप्रोविलेज" हैं और उदाहरण के लिए, डॉकर कंटेनर के अंदर डॉकर डेमन चला सकते हैं। ऐसा इसलिए है क्योंकि डिफ़ॉल्ट रूप से एक कंटेनर को किसी भी उपकरण का उपयोग करने की अनुमति नहीं है, लेकिन "विशेषाधिकार प्राप्त" कंटेनर को सभी उपकरणों तक पहुंच प्रदान की जाती है (cgroups उपकरणों पर प्रलेखन देखें)।

जब ऑपरेटर डॉक-रन को निष्पादित करता है, तो डॉकर होस्ट पर सभी डिवाइसों तक पहुंच को सक्षम करेगा और साथ ही AppArmor या SELinux में कुछ कॉन्फ़िगरेशन सेट करेगा ताकि कंटेनर को होस्ट तक लगभग सभी समान पहुंच की अनुमति मिल सके, क्योंकि मेजबान पर कंटेनर के बाहर की प्रक्रिया होती है। । डॉकरी ब्लॉग पर --privileged के साथ चलने के बारे में अतिरिक्त जानकारी उपलब्ध है।


2
क्या आप अपने आदेश और स्वीकृत प्रश्न का अंतर बता सकते हैं ?
मेलेबियस

AskUbuntu में आपका स्वागत है! मदद करने की कोशिश करने के लिए धन्यवाद! प्रलेखन की एक त्वरित समीक्षा मुझे विश्वास दिलाती है कि आपने इस आदेश में त्रुटि या 2 की हो सकती है। यदि आप इसे संपादित करने के लिए इतने दयालु होंगे और यह बताएंगे कि आप क्या कर रहे हैं और यह समस्या को कैसे हल करता है, तो मुझे पिंग करें और मैं वापस आकर आपको एक उत्थान दूंगा!
एल्डर गीक

जब आप images_docker कहते हैं, तो क्या आपका मतलब वेनिला ubuntu: 16.04 है? या कुछ और?
पार्थ शाह

1

आप नहीं चल सकता है systemd , के डिफ़ॉल्ट कार्यान्वयन है जो init 16.04 पर। आप 14.04 से उन्नत बनाया है, तो आप सबसे अधिक अभी भी चल रहा संभावना है नवोदय , और चलाने का परिणाम systemctl आदेश उत्पादन आप मिल गया है।

Systemctl पर मेरा जवाब देखें : comand को अधिक के लिए 16.04 सर्वर नहीं मिला


लेकिन यह उबंटू कंटेनर है, जो डिफ़ॉल्ट रूप से सिस्टमड नहीं है और ऊपर की ओर नहीं होगा।
स्टेफन लासवर्स्की

क्या? ubuntu डिफ़ॉल्ट रूप से
सिस्टमडेड है

स्टीफन: मेरा मानना ​​है कि आप डॉकर के मामले में सही हैं।
ह्यूग बंटू

knocte: मेरी टिप्पणी 14.04 (अपस्टार्ट) से 16.04 (सिस्टमड) में अपग्रेड करने के मामले को कवर करती है। संस्करण उन्नयन करते समय, उपस्टार्ट को समझने योग्य कारणों के लिए सिस्टमड के साथ प्रतिस्थापित नहीं किया जाता है (जैसे: सिस्टम को नहीं तोड़ना)। रेट्रोस्पेक्ट में, मुझे पता चलता है कि रिलीज़ अपग्रेड प्रक्रिया का इस्तेमाल डॉकटर में नहीं किया जाएगा। लिंक देखें जिसे मैंने कॉल किया था। मैं देखता हूं कि बहुत से उत्तर और टिप्पणियां डोकर के विशिष्ट मामले पर विचार करने में विफल रहती हैं, और मैं भविष्य में इसका उत्तर देते समय खोजूंगा।
ह्यूग बंटू


0

डॉकटर कंटेनर के अंदर, मुझे लगता है कि आप अपडेट-आरडीडी कर सकते हैं यदि आप अभी भी सिस्टमड के साथ संघर्ष कर रहे हैं। मैंने अपडेट-rd.c के साथ प्रयास किया और यह काम करता है।


0

मुझे ठीक वही त्रुटि मिल रही थी और फिर मैंने इसे सफलतापूर्वक चलाया sudo

sudo systemctl status ssh

1
आपको उसके sudoलिए जरूरत नहीं होनी चाहिए एक संयोग की तरह लगता है। क्या आप पुन: परीक्षण कर सकते हैं?
ज़न्ना

1
@Zannasaif@sr-server:~$ systemctl status ssh Failed to connect to bus: No such file or directory saif@sr-server:~$ sudo systemctl status ssh [sudo] password for saif: ● ssh.service - OpenBSD Secure Shell server Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2018-01-19 23:38:14 PKT; 4min 4s ago Main PID: 18222 (sshd) Tasks: 15 Memory: 32.7M CPU: 488ms
सैफ

क्यों -1 मैंने सिर्फ वही पोस्ट किया जो मेरे लिए काम करता है।
सैफ

downvote मेरा नहीं था ...
Zanna
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.