在docker容器内使用systemctl启动ssh

我是Docker的初学者, 我已经从Hub中拉出了一个CentOS 7映像并运行它;

我需要从我的主机ssh到docker集装箱(CentOS 7)。

使用docker inspect container-id获得docker集装箱的IP

我已经安装了以下使用

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

当我试图启动防火墙打开端口为ssh(22)

 [root@a6f3e3eb095c ~]# systemctl start firewall Failed to get D-Bus connection: Operation not permitted 

还试过,

 [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 

如何启动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集线器中用ssh拖动docker的镜像

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/

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

您可以避免使用https://github.com/gdraheim/docker-systemctl-replacement在Docker内部执行“无法获得D-Bus连接:不允许操作”/ aka docker-执行的东西应该都可以在容器内做事情。