Docker桥接并远程ssh连接

  • 桥接网络
  • 第一种方法:直接用命令
  • 第二种方法:改配置文件
  • 安装pipework
  • 启动docker容器
  • 最后就是进你的docker容器安装ssh客户端,然后用SSH工具连接你的docker容器啦


桥接网络

第一种方法:直接用命令

我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

  1. 安装网桥管理工具包:bridge-utile
    yum install bridge-utils -y
  2. 查看网桥命令;
#查看网桥命令
brctl show
  1. 关闭br0;
#关闭br0
 ifconfig br0 down
  1. 使用brctl命令删除网桥br0;
#使用brctl命令删除网桥br0
 brctl delbr br0
  1. 使用brctl命令添加网桥br0;
#使用brctl命令添加网桥br0
 brctl addbr br0
  1. 使用brctl命令将eno1网卡加入到 br0;
#使用brctl命令将eno1网卡加入到 br0
 brctl addif br0 eno1
  1. 添加默认IP;
#添加默认IP
 ifconfig br0 192.168.2.256/24
  1. 添加默认路由;
#添加默认路由
 ifconfig eno1 0.0.0.0
  1. 在添加默认网关;
#在添加默认网关
 route add default gw 192.168.2.1
  1. 重启network服务;
#重启network
 systemctl restart network
  1. 测试是否ping的通网关;
#测试
 ping 192.168.2.1

第二种方法:改配置文件

  1. 修改配置文件vim /etc/sysconfig/network-scripts/ifcfg-eno1;
TYPE=Ethernet #需要修改
 PROXY_METHOD=none
 BROWSER_ONLY=no
 BOOTPROTO=none #需要修改
 DEFROUTE=yes
 IPV4_FAILURE_FATAL=no
 IPV6INIT=no
 IPV6_AUTOCONF=yes
 IPV6_DEFROUTE=yes
 IPV6_FAILURE_FATAL=no
 IPV6_ADDR_GEN_MODE=stable-privacy
 NAME=eno1 #这儿保持你的主网卡名称
 UUID=f9f621e3-7e37-4d99-919a-3e19f8045186
 DEVICE=eno1 #这儿保持你的主网卡名称
 ONBOOT=yes #需要修改
 BRIDGE=br0 #修改成新建的虚拟网卡名称
  1. 添加br0配置文件vim /etc/sysconfig/network-scripts/ifcfg-br0;
DEVICE=br0
 TYPE=Bridge
 BOOTPROTO=static
 ONBOOT=yes
 IPADDR=192.168.2.200
 NETMASK=255.255.255.0
 GATEWAY=192.168.2.1
  1. 重启network服务;
#重启network
 systemctl restart network

安装pipework

  1. 如果机器上没有安装git先安装git ;
yum -y install git
  1. clone pipework到当前目录下;
git clone https:///jpetazzo/pipework.git
  1. 把pipework拷贝到bin目录下;
cp -rp pipework/pipework /usr/local/bin/
  1. pipework安装完成;

启动docker容器

  1. 启动docker;
docker run  -itd  -v /etc/localtime:/etc/localtime --privileged --network=none --name testos centos:7 usr/sbin/init
 #如果报错:
 /usr/bin/docker-current: Error response from daemon: oci runtime error: container_linux.go:235: starting container process caused "exec: \"/usr/sbin/init\": stat /usr/sbin/init: no such file or directory".
 #命令最后改为:/sbin/init
  docker run  -itd  -v /etc/localtime:/etc/localtime --privileged --network=none --name testos centos:7 /sbin/init
  1. PS:需要注意的是–privileged参数获取宿主机root权限(特殊权限)不然不能安装ssh
  2. 为docker容器设置IP;
pipework br0 testos 192.168.2.267/24@192.168.2.1

最后就是进你的docker容器安装ssh客户端,然后用SSH工具连接你的docker容器啦

  1. 进入容器;
docker exec -it testos bash
  1. 安装ssh;
yum install sshd  或  yum install openssh-server(由osc网友 火耳提供)
  1. 启动sshd;
systemctl start sshd
  1. 开机启动;
chkconfig sshd on 
 systemctl enable sshd.service
  1. 修改ssh配置,让其可以用密码登录;
vi /etc/ssh/sshd_config
 
 #根据实际情况修改以下配置
  
 # 运行密码登录
 PasswordAuthentication yes
 
 # 运行所有ip地址登录当然可以设定登录IP保证服务器安全
 ListenAddress 0.0.0.0 
 
 # 运行root账号登录因为root是最高权限根据个人使用习惯看开启此功能不基本的配置就完成了其他默认就好.
 PermitRootLogin yes
  1. 添加密码;
passwd root
  1. 最后用SSH工具连接