systemctl bus'a bağlanamadı - liman işçisi ubuntu: 16.04 container


72

Bu systemctlkomutu ubuntu:16.04liman işçisi konteynerinde kullanmaya çalışıyorum . Aşağıdaki komutu çalıştırıyorum ...

systemctl status ssh

Ancak hatayı alıyorum ...

Failed to connect to bus: No such file or directory

Bu neden çalışmıyor? Bunun bir liman işçisi konteynerinde çalışan Ubuntu ile ilgisi var mı? systemctlDoğru çalışmaya nasıl başlayabilirim ?


2
Kullanınservice ssh start
Bidyut

Yanıtlar:


50

Liman işçisi konteynerine böyle bir şeyle başladığını varsayıyorum

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

Şimdi sorun şu ki, init işleminiz PID 1 /bin/bashsistemli değil. İle onaylayın ps aux.

Buna ek olarak dbus ile eksik olan iletişim kurmak için yol olacaktır. Bu, hata mesajınızın geldiği yer. Ancak PID 1'iniz sistemli olmadığı için dbus'un kurulumuna yardımcı olmaz.

En iyisi liman işçisi kullanmayı planladığınızı yeniden düşünmek olacaktır. Bir işlem yöneticisi olarak sisteme güvenmeyin, ancak liman konteynerinin istediğiniz uygulamayı ön planda çalıştırmasını sağlayın.


Openssh-server gibi servisler varsayılan syslog tesisine giriş yapacak şekilde yapılandırılmıştır. Systemctl'ye güvenmeden sshd loglarını nasıl alabilirim?
Parth Shah

@ParthShah Lütfen sshd man sayfasını kontrol edin. Mine aşağıdaki seçeneklere sahiptir: -D ile perdahlayarak ön planda tutabilirsiniz. -e ile doğrudan günlükleri yazdırmasını isteyin. bunlar daha sonra liman işçisi ile birlikte denetlenebilir docker log.
user228505

[FYI], /sbin/initPID = 1 işlemi olmakla bu hatayı alıyordu . --privileged=trueAşağıda @ sonjaya sonjaya tarafından önerildiği gibi ekleme sorunu çözdü.
DimG

güzel cevap !!
Sachin Verma

11

Diğerleri de benzer bir sorun olduğunu bildirdi. Terminali başlatın ve şunu yazın:

$ env

Böyle bir ortam değişkeni görüyor musunuz?

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

Nerede id -uters tırnakların değil tek tırnak içine alınır. Bu değişken genellikle 1000normal kullanıcılar ve 0süper kullanıcılar (sudo) için bir sayıya yeniden yorumlanır .

Ortam değişkeni XDG_RUNTIME_DIRyoksa, oluşturmanız gerekir. Tam tartışma, fırlatma panelinin sistem cevaplarında bulunmaktadır .


2
Bunu başarı olmadan denedim. Ubuntu 16.04 örneğim bir docker konteyner biçiminde olduğundan ve çalıştığım herhangi bir kullanıcıyı ayarlamadım root, bu yüzden değişkeni XDG_RUNTIME_DIR=/run/root/0başarı olmadan kullandım . Sonra klasörü kontrol ettim /runve alt klasör olmadığını gördüm /run/root. Yine de daha ayrıntılı bir hata mesajı alabilir miyim? Bir baktım systemctl --helpama ayrıntılı hata iletilerini almanın bir yolunu göremedim.
Duncan Gravill

1
Aynı sorunu yaşıyorum ve bu da sorunumu çözmedi. Hiç @DuncanGravill bu bir anlamaya mı
Roeland

3
@Rolanda Evet. Benzer bir soruyu SO'da daha güçlü bir yanıt veren bir soru sordum . Ayrıca Docker web sitesinde Self-Paced eğitimlerini izlemenizi öneririm. Bu videolarda PID 1, genellikle systemdbir Docker kabında, Entrypoint kabı ile değiştirilen videolarda açıklanmaktadır .
Duncan Gravill

Mükemmel, teşekkürler! Bir kullanıcı birimini bir sistem biriminden başlatmak / yönetmek için buna ihtiyacım vardı.
Adrian Günter

5

Bu hatayı Linux için Windows Alt Sisteminde (WSL) alıyorsanız, bunun nedeni Docker'ın desteklenmediği oldu. Bu, grupların ve diğer ön koşulların bulunmamasından kaynaklanmaktadır.


3

Bunu dene:

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

veya

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

aynı sonuç olacak.

İşte Docker'ın doktorundan geliyorum :

Varsayılan olarak, Docker kapsayıcıları “ayrıcalıklı” dır ve örneğin bir Docker kapsayıcısının içinde bir Docker arka plan programı çalıştıramaz. Bunun nedeni, varsayılan olarak bir konteynerin herhangi bir cihaza erişmesine izin verilmemesidir, ancak tüm cihazlara “ayrıcalıklı” bir konteyner verilmesi sağlanır (cgroups cihazlarının belgelerine bakın).

Operatör liman işçisi - ayrıcalıklı çalıştırmayı yürütürse, Docker, ana makinedeki tüm cihazlara erişime izin verir ve AppArmor veya SELinux’de bazı yapılandırmaları ayarlayarak kabın ana makinede çalışan dış kapsayıcıların dışında çalışan işlemler ile hemen hemen aynı erişimine izin verir . --Privileged ile çalışma hakkında ek bilgiler Docker Blog’da bulunabilir.


2
Komutunuzu ve kabul edilen soruya olan farkı açıklayabilir misiniz ?
Melebius

AskUbuntu'ya Hoşgeldiniz! Yardım etmeye çalıştığın için teşekkürler! Belgelerin hızlı bir şekilde gözden geçirilmesi , bu komutta bir hata veya 2 yapmış olabileceğime inanmamı sağlar. Düzenlemek ve ne yaptığınızı ve sorunu nasıl çözdüğünü açıklamak kadar nazik olursanız, bana ping atıp geri gelip size bir oy vereceğim!
Elder Geek

İmages_docker derken, vanilya ubuntu: 16.04'ü kastediyor musunuz? Veya başka bir şey?
Parth Shah

1

16.04'te varsayılan init uygulaması olan systemd'yi çalıştırmıyor olabilirsiniz . 14.04'ten yükselttiyseniz, muhtemelen hala başlangıçta çalışıyorsunuz ve systemctl komutunu çalıştırmanın sonucu elde ettiğiniz çıktıdır .

Daha fazla bilgi için systemctl: comand adresindeki cevabımı görün .


Ancak bu, varsayılan olarak sistemde olmayan ve başlatılmayacak bir Ubuntu kabıdır.
Stefan Lasiewski,

ne? ubuntu varsayılan olarak
sistemd'e

Stefan: Docker konusunda haklı olduğuna inanıyorum.
Hugh Buntu,

knocte: Yorumum 14.04'ten (Başlamadan) 16.04'e (sistemd) yükseltme durumunu kapsar. Sürüm yükseltme işlemi yapılırken, anlaşılır nedenlerden dolayı Upstart yerine systemd kullanılmaz (örneğin: sistemi bozmamak). Geçmişe bakıldığında, sürüm yükseltme işleminin Docker'da kullanılmayacağını anladım. Aradığım bağlantıya bakın. Bir takım cevapların ve yorumların Docker'ın belirli bir durumunu dikkate almadığını görüyorum ve gelecekte cevap verirken bunu arayacağım.
Hugh Buntu,

1

Sadece dbusservisi başlatın :

/etc/init.d/dbus start

0

Liman işçisi konteyneri içinde, eğer hala systemd ile uğraşıyorsanız -dc.d komutunu güncelleyebileceğinizi düşünüyorum. Rd.c güncellemesini denedim ve işe yarıyor.


0

Aynı hatayı alıyordum ve sonra başarılı bir şekilde çalıştırdım. sudo

sudo systemctl status ssh

1
Buna ihtiyacın olmamalı sudo. Tesadüf gibi görünüyor. Lütfen tekrar test edebilir misiniz?
Zanna

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
Saif

Neden -1? Az önce benim için çalışanı yayınladım.
Saif

Oy kullanmayan benim değildi ...
Zanna
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.