我'我是Docker的初学者; 我从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 ~]# 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容器中启动firewall / ssh?
答案 0 :(得分:0)
在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图像
答案 1 :(得分:0)
您可以避免&#34;无法获得D-Bus连接:不允许操作&#34; /又称使用https://github.com/gdraheim/docker-systemctl-replacement在docker中安装systemd ...之后,docker-exec的东西应该可以很好地在容器内做事。
答案 2 :(得分:0)
如果您确实需要 ssh 或 sftp 容器,那么您可以将Docker Image作为source image用于自己的容器或运行它直接:
如果使用官方CentOS-7 Image并且您需要systemd,则有关于如何启用它的说明&#34; Systemd integration&#34;。
但是,基于以下内容:
我需要从我的主机ssh到docker容器(CentOS 7)。
您可以使用docker exec在正在运行的(后台)容器中运行命令,因此,对于具有bash可用的图像,您可以访问交互式tty并从主机运行bash,如下所示 - 容器可以是名称或ID:
docker exec --tty --interactive <container> bash
OR
docker exec -ti <container> bash
最后,不太可能在您的映像中安装防火墙软件包,因为运营商将决定从公开的端口发布哪些端口,您可以使用Docker Networking仅公开必要的公共服务。