2017-11-27 9 views
2

Ich bin ein Anfänger im Docker; Ich habe ein CentOS 7 Image von Hub gezogen und habe es ausgeführt;Starten Sie ssh mit systemctl im Docker Container

Ich muss in den Docker Container (CentOS 7) von meinem Host ssh.

bekamen die IP-Adressen Docker Behälter docker inspect container-id

mit mir folgenden mit

initscripts 
systemd.x86_64       
systemd-libs.x86_64       
open-ssh 
firewalld 
net-tools 

installiert habe, wenn ich die Firewall zu starten versucht, den Port für SSH zu öffnen (22)

[[email protected] ~]# systemctl start firewall 
Failed to get D-Bus connection: Operation not permitted 

Auch versucht,

[[email protected] ~]# /usr/lib/systemd/systemd --system & 
[1] 353 
[[email protected] ~]# systemd 219 running in system mode. (+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN) 
Detected virtualization xen. 
Detected architecture x86-64. 

Welcome to CentOS Linux 7 (Core)! 

Set hostname to <a6f3e3eb095c>. 
Cannot determine cgroup we are running in: No such file or directory 
Failed to allocate manager object: No such file or directory 

[1]+ Exit 1     /usr/lib/systemd/systemd --system 

Wie starte ich die Firewall/ssh im Docker Container?

+1

Vielleicht möchten Sie sich das ansehen: [Wenn Sie SSHD in Ihren Docker-Containern ausführen, machen Sie es falsch!] (Https://jpetazzo.github.io/2014/06/23/docker- ssh-teached-evil /) von @jpetazzo. – tgogos

+0

ok. Wie starte ich eine Anwendung im Docker-Container mit 'systemctl' –

+0

Ich verdopple den Kommentar von @tgogos. Höchstwahrscheinlich sollten Sie weder sshd noch firewall noch systemd innerhalb des Containers ausführen. – mcsim

Antwort

0

Wenn Sie die Docker CLI verwenden, dann können Sie in den Behälter Docker erhalten mit dem folgenden Befehl

docker exec -it containerId bash 

Ich bin nicht sicher, wie in den Docker Behälter ssh, aber wenn Sie möchten grundlegende tun Innerhalb des Docker-Containers können Sie den obigen Docker-Befehl verwenden.

0

innerhalb des Behälters laufen Docker folgenden Befehle:

yum update -y glibc-common 

yum install -y sudo passwd openssh-server openssh-clients tar screen crontabs strace telnet perl libpcap bc patch ntp dnsmasq unzip pax which 

rpm -Uvh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm 

yum install -y hiera lsyncd sshpass rng-tools 

service sshd start; 

sed -i 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config; 

sed -i 's/#UsePAM no/UsePAM no/g' /etc/ssh/sshd_config; 

sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/' /etc/ssh/sshd_config; 

sed -i 's/enabled=0/enabled=1/' /etc/yum.repos.d/CentOS-Base.repo 

mkdir -p /root/.ssh/; 

rm -f /var/lib/rpm/.rpm.lock; 

echo "StrictHostKeyChecking=no" > /root/.ssh/config; 

echo "UserKnownHostsFile=/dev/null" >> /root/.ssh/config 

echo "root:password" | chpasswd 

(oder)

einfach können Sie Docker Bild von CentOS mit ssh in Docker Nabe

https://hub.docker.com/search/?isAutomated=0&isOfficial=0&page=1&pullCount=0&q=centos+ssh&starCount=0

https://hub.docker.com/r/kinogmt/centos-ssh/

ziehen

https://hub.docker.com/r/jdeathe/centos-ssh/

+0

'[root @ a6f3e3eb095c /] # Dienst sshd Start; Umleiten an/bin/systemctl starten sshd.service Konnte D-Bus-Verbindung nicht erhalten: Operation nicht erlaubt –

+0

versuchen, Docker Bild mit Centos mit SSH ziehen .. –

0

Sie die „D-Bus-Anschluss bekommen fehlgeschlagen: Operation nicht erlaubt“ vermeiden können/aka Installation von systemd in einem Docker durch die https://github.com/gdraheim/docker-systemctl-replacement mit ... danach die Docker-exec sollten Sachen alle in Ordnung zu tun Dinge in einem Container.

0

Wenn Sie wirklich brauchen eine ssh oder SFTP Container, dann können Sie meine Docker Image als eine source image für den eigenen Gebrauch oder direkt ausführen:

Wenn die offizielle CentOS-7 Image verwenden und benötigen systemd, Unter dem Abschnitt "Systemd Integration" finden Sie Anweisungen zur Aktivierung.

jedoch auf der Grundlage der folgenden:

Ich muss von meinem Host zum Docker Behälter (CentOS 7) ssh in.

können Sie docker exec verwenden, um Befehle in einem laufenden zu laufen, (backgrounded), Behälter so, für Bilder, die bash zur Verfügung haben, können Sie eine interaktive tty zugreifen und bash laufen wie von Ihrem Host folgt - wo Container sein entweder der Name oder ID:

docker exec --tty --interactive <container> bash 

oDER

docker exec -ti <container> bash 

Schließlich ist es unwahrscheinlich sein notwendig, um das Firewall-Paket in Ihrem Bild zu installieren, da der Bediener entscheidet, welcher Ports zu veröffentlichen Sie von denen, die ausgesetzt sind, und Sie können Docker Networking verwenden, um nur die erforderlichen öffentlich zugänglichen Dienste verfügbar zu machen.

Verwandte Themen