docker创建容器时指定容器ip,实现远程访问容器

docker创建容器时默认采用bridge网络,自行分配ip,不允许自己指定;

在实际部署中,我们需要指定容器ip,不允许其自行分配ip,尤其是搭建集群时,固定ip是必须的。

查看网络模式,docker network ls

 

 我们可以创建自己的bridge网络:yinong;创建容器的时候指定网络为yinong并指定ip即可;

创建一个新的bridge网络;

docker network create --driver bridge --subnet=171.17.12.0/16 --gateway=171.17.1.1 yinong

 

 查看yinong网络信息

docker network inspect yinong

需要使用特权模式运行容器,不然容器中启动服务报错(如下图);可参考:https://blog.csdn.net/zhenliang8/article/details/78330658

 

 镜像相当于可读的文本,容器是可以读写的文本;假如你在某镜像centos7运行的容器下,安装ifconfig,再次使用该镜像运行容器(如,容器id为b),则容器b下无ifconfig;

 创建容器并指定容器ip;运行容器;

docker run -e TZ="Asia/Shanghai" -p 6001:22 --privileged -itd -h hadoop01.com --name hadoop01 --network=mynet --ip 172.18.12.1 centos /usr/sbin/init (linux本地端口6001:容器22端口,若是希望通过远程访问centos生成的容器,使用这种命令;假如是阿里云服务器,记得将6001端口开启)

下图中,不可以使用xshell远程访问centos7生成的容器;

 

 centos7下未安装ifconfig命令,可通过yum进行安装;yum install -y net-tools

安装ssh服务

yum install -y openssh-server

yum install -y openssh-clients

systemctl start sshd.service

 linux远程登录;linux系统中是通过ssh服务实现的远程登录功能,默认ssh服务端口为22;

SSH为Secure Shell的缩写;

passwd root;根据提示设置容器中root的密码;

登录远程服务器ssh root@171.17.12.3 (root是用户名,171.17.12.3是服务器ip);

下图为linux本机,登录centos7的容器;

 

 下图为centos7的容器内登录本身;

 

 可以通过本地客户端访问centos7的容器

1)使用xshell访问;

 

 2)添加route路由,通过cmd访问;route add 需要访问的网关 MASK 子网掩码 本机ip;

可参考:https://blog.csdn.net/sjhfkhsf/article/details/83822839

 

 下面是cmd中,ping 171.17.12.3,已添加路由的提示0%丢失;未添加路由的提示100%丢失;[命令/?]查看帮助,如,route/?

 

越努力,越幸运!!! good good study,day day up!!!
原文地址:https://www.cnblogs.com/canglongdao/p/12662022.html