Docker容器如何进行远程管理-搭建基于ssh服务的镜像和容器 – 21运维
通知: .-...

Docker容器如何进行远程管理-搭建基于ssh服务的镜像和容器

Docker 21运维 5005浏览 0评论

21运维 原创文章,转载请注明出处。

之前我们讲解了如何通过主机本身进入的服务器管理容器,这种方法需要我们进去宿主机才可以进行操作。现在我们可以通过镜像中搭建安装ssh,这样以后启动容器的时候我们映射一个端口,这样可以通过外网管理该容器了,可以参考本站文章《Docker网络基础配置基础以及如何进行主机-容器端口映射和进行容器互联实现容器间通信》下边简单讲述下方法。
由于官网的镜像一般是最小化安装且没有安装ssh,今天我们以一个docker官网centos镜像为例安装ssh。

1,查看镜像是否有centos,如果有就进行后续操作,没有就去pull一个。
2,搭建ssh镜像。
创建容器,并映射主机端口22000到容器的22端口上:
docker  run  -d  -ti  –name ssh-centos -p 22000:22  centos /bin/bash
查看容器启动情况:

[[email protected] ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                       PORTS                           NAMES
a955391bd0b4        centos              "/bin/bash"              About a minute ago   Up About a minute            0.0.0.0:22000>22/tcp        ssh-centos

进入容器:
docker  exec  -ti ssh-centos /bin/bash
进去时候安装ssh:
yum install openssh-server  -y
安装完以后启动ssh服务并查看端口监听情况:

[[email protected] /]# /usr/sbin/sshd
[[email protected] /]# netstat  -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      27/sshd             
tcp6       0      0 :::22                   :::*                    LISTEN      27/sshd

好了,启动成功。 远程测试:
1

好了,登录成功:

[[email protected] ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.6  netmask 255.255.0.0  broadcast 0.0.0.0
        inet6 fe80::42:acff:fe11:6  prefixlen 64  scopeid 0x20
        ether 02:42:ac:11:00:06  txqueuelen 0  (Ethernet)
        RX packets 125  bytes 14200 (13.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 94  bytes 12693 (12.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

为了方便使用,使用ssh-centos容器提交一个新的镜像,比如:

[[email protected] ~]# docker commit  ssh-centos    centos7-ssh
[[email protected] ~]# docker images
REPOSITORY                              TAG                 IMAGE ID            CREATED             SIZE
centos7-ssh                             latest              1aa38242b4ec        22 minutes ago      330.2 MB

以后再去创建基于centos7-ssh的容器就自带有ssh,可以自己随意映射端口进去管理了。 

说明:

在容器中通过systemctl 命令启动sshd的时候会报Failed to get D-Bus connection: Operation not permitted错误, 解决办法就是在docker run 的时候运行/usr/sbin/init。比如

docker   run  -dti  --name  centos2  -p 22001:22 centos /usr/sbin/init

 

网上搜索资料,小伙伴遇到的情况如下:
    这样运行起来的container就可以使用systemctl来启动服务了,有的人说在CentOS7.2中解决了通过systemctl运行报错的问题,但是我在实际操作中还是遇到这样的问题。 还有一种解决办法,就是在通过Dockerfile生成镜像文件的时候,通过CMD来执行/usr/sbin/init这条命令,即:CMD [ “/usr/sbin/init”];

转载请注明:21运维 » Docker容器如何进行远程管理-搭建基于ssh服务的镜像和容器

发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址