前言:
现在你们对“ubuntu下端口映射”可能比较着重,小伙伴们都需要了解一些“ubuntu下端口映射”的相关内容。那么小编同时在网上收集了一些关于“ubuntu下端口映射””的相关资讯,希望同学们能喜欢,同学们快快来了解一下吧!一.已经下载好了docker镜像,如何利用这个镜像创建一个容器?
二.创建容器成功后,里面有一些服务是通过提供的端口号和外部进行通信的,但是有一个问题是容器内部的端口号是不能直接和外部客户端如xshell进行通信的,而是需要将容器里面服务的端口号映射到宿主机(物理机)上,外部客户端如xshell和宿主机上的这个端口进行通信
现在使用ubuntu镜像创建一个容器,并且在容器里使用ssh服务和外部进行通信为例子进行讲解。
具体做法:
管理员账号进入系统,使用docker ps查看目前正在运行的容器有哪些以及这些容器是使用什么镜像创建的
可以看到里面有很多正在运行的容器及对应的信息,看最后一个容器hansifan,其使用的镜像是ubuntu:18.04-full,那么,我们现在使用这个镜像再创建一个名为hsftrial的容器,但是这一步要注意,端口映射是在创建容器这一步完成的,所以我们要首先知道这个容器里将要提供什么服务,以及这个服务的默认端口号是多少,并且在创建容器的时候做好端口映射,我们这里就在容器里提供ssh服务,ssh服务的默认端口号是22,我们这里将它和宿主机做端口映射的时候将它映射为20001,使用命令docker run -it -p 想要映射到宿主机上的端口号:容器内部服务的端口号 --name hsftrial 镜像名称 /bin/bash进行操作。
这个时候回车,不显示任何信息,操作完成。要注意的是,这条命令中的/bin/bash的作用是创建完容器后自动进入该容器,所以可以看到上述创建完成后自动进入了该容器。
此时,搭建ssh服务
具体两条命令
apt update
apt install -y openssh-server
再启动容器里的ssh服务,为了方便,可以再使用管理员账号用xshell连接一次服务器,进入后用docker ps查看正在运行的容器
可以发现刚刚创建并下载安装了ssh的容器hsftrial正在运行,此时用docker exec -it 容器名/容器ID bash进入这个容器,并用service ssh status查看容器中的ssh服务是否已经启动,若没有启动则使用service ssh start进行启动
此时发现容器里的ssh服务已经启动。
再切出来,用docker ps发现hsftrial停止了,那么使用docker start 容器名启动容器
此时可以发现,容器启动,ssh服务也搭建好了,并且端口映射也做好了(容器里的ssh服务端口映射到宿主机20001端口供外部访问),最后,再给容器设置个密码
此时,一切都设置好了,那么,是否就可以用xshell进行连接了呢?
在连接前可以在容器中使用whoami确定用户名以便于待会儿登录
可知用户名是root
进行登录
发现登录失败
这是因为还要对/etc/ssh/sshd_config进行修改配置文件才能通过密码登录,具体修改如下
找到这两行,如果注释就放开注释并将其改为yes
PasswordAuthentication yes
PermitRootLogin yes
为了让ssh配置文件生效要用service ssh restart进行重载
此时再尝试登录
成功进入系统!!
注:要点是在进行端口映射的时候要预先知道将要提供的服务的默认端口才能在创建容器的时候做好端口映射。
最后,不想要了的容器可以先停止它,再删除它
docker stop 容器名字
docker rm 容器名字
注:docker ps -a可以查看所有容器包括存在但是不正在运行的容器
可以发现刚刚的容器确实删除了!
标签: #ubuntu下端口映射 #ubuntu查看端口映射