西数超哥博客
运维经验教程分享

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

西数超哥博客www.ysidc.top原创文章,转载请注明出处。

之前我们讲解了如何通过主机本身进入的服务器管理容器,这种方法需要我们进去宿主机才可以进行操作。现在我们可以通过镜像中搭建安装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
查看容器启动情况:

[root@21yunwei ~]# 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服务并查看端口监听情况:

[root@a955391bd0b4 /]# /usr/sbin/sshd
[root@a955391bd0b4 /]# 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

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

好了,登录成功:

[root@a955391bd0b4 ~]# 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容器提交一个新的镜像,比如:

[root@21yunwei ~]# docker commit  ssh-centos    centos7-ssh
[root@21yunwei ~]# 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”];

转载请注明:西数超哥博客www.ysidc.top» Docker容器如何进行远程管理-搭建基于ssh服务的镜像和容器

https://www.ysidc.top 西数超哥博客,数据库,西数超哥,虚拟主机,域名注册,域名,云服务器,云主机,云建站,ysidc.top

赞(0)
声明:本站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,若涉及侵权请及时告知,将会在第一时间删除。本站原创内容未经允许不得转载:西数超哥博客 » Docker容器如何进行远程管理-搭建基于ssh服务的镜像和容器