使用docker容器

时间:2017-11-27 07:56:25

标签: docker docker-compose

我'我是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容器中启动firewall / ssh?

3 个答案:

答案 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图像

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/

答案 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仅公开必要的公共服务。