在docker容器中使用systemctl启动ssh

在docker容器中使用systemctl启动ssh,docker,docker-compose,Docker,Docker Compose,我是码头工人的新手; 我已经从Hub中提取了CentOS 7图像并运行了它 我需要通过ssh从主机连接到docker容器(CentOS 7) 使用docker inspect container id 我已使用 initscripts systemd.x86_64 systemd-libs.x86_64 open-ssh firewalld net-tools 当我试图启动防火

我是码头工人的新手; 我已经从Hub中提取了CentOS 7图像并运行了它

我需要通过ssh从主机连接到docker容器(CentOS 7)

使用
docker inspect container id

我已使用

 initscripts
 systemd.x86_64                           
 systemd-libs.x86_64                          
 open-ssh
 firewalld
 net-tools
当我试图启动防火墙为ssh打开端口时(22)

也试过,

[root@a6f3e3eb095c ~]# /usr/lib/systemd/systemd --system &
[1] 353
[root@a6f3e3eb095c ~]# 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
[root@a6f3e3eb095c~]#/usr/lib/systemd/systemd——系统&
[1] 353
[root@a6f3e3eb095c~]#systemd 219在系统模式下运行。(+PAM+AUDIT+SELINUX+IMA-APPARMOR+SMACK+SYSVINIT+UTMP+LIBCRYPTSETUP+GCRYPT+GNUTLS+ACL+XZ-LZ4-SECCOMP+BLKID+ELFUTILS+KMOD+IDN)
检测到虚拟化xen。
检测到架构x86-64。
欢迎使用CentOS Linux 7(Core)!
将主机名设置为。
无法确定正在运行的cgroup:没有这样的文件或目录
分配管理器对象失败:没有此类文件或目录
[1] +出口1/usr/lib/systemd/systemd——系统

如何在docker容器内启动防火墙/ssh?

如果使用docker CLI,则可以使用以下命令进入docker容器

docker exec -it containerId bash 

我不知道如何ssh到docker容器中,但是如果您想在docker容器中执行基本操作,可以使用上面的docker命令。

在docker容器中运行以下命令:

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
(或)

只需在docker hub中使用ssh即可提取centos的docker映像


您可以通过使用。。。在那之后,docker exec的东西应该可以在容器中进行操作。

如果您确实需要sshsftp容器,那么您可以使用my作为自己的容器,或者直接运行它:

如果使用官方软件并且您需要systemd,则在“systemd集成”一节中有关于如何启用该软件的说明

但是,根据以下情况:

我需要通过ssh从主机连接到docker容器(CentOS 7)

您可以使用在正在运行的(后台)容器中运行命令,因此,对于具有bash可用的图像,您可以从主机访问交互式tty并按如下方式运行bash-其中容器可以是名称或id:

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

docker exec-ti bash

最后,不太可能需要在您的映像中安装防火墙软件包,因为运营商将决定从公开的端口发布哪些端口,并且您可以利用这些端口仅公开必要的面向公众的服务。

您可能需要查看以下内容:from@jpetazzo.ok。如何使用
systemctl
在docker容器内启动应用程序我将@tgogos的注释翻了一番。很可能您不应该在容器内运行sshd、firewall或systemd。@soundarararajan.c您希望在容器内运行什么,为什么CMD或ENTRYPOINT不够?请使用service而不是systemctl
[root@a6f3e3eb095c/]#sshd服务启动;重定向到/bin/systemctl start sshd.service无法获得D总线连接:不允许操作
docker exec --tty --interactive <container> bash
docker exec -ti <container> bash