基于Docker引擎启动Nginx WEB容器,默认以None方式启动Docker容器,此处使用pipework工具手工给容器指定桥接网卡,并且手工配置IP地址,操作指令如下:
#查看镜像列表;
docker images
#运行新的容器
docker run -itd --net=none docker.io/nginx:latest
#查看启动的nginx容器
docker ps
##查看nginx容器的IP地址;(没有IP地址)
docker inspect 265a3745752e|grep -i ipaddr
- 安装pipework IP配置脚本工具,方法如下:
安装pipework
yum install -y git
以下命令必须在空白目录执行
git clone https://github.com/jpetazzo/pipework
或者
wget https://github.com/jpetazzo/pipework/archive/refs/heads/master.zip
cp ~/pipework/pipework /usr/local/bin/
查看pipework工具是否配置正确;
pipework -h
基于pipework工具手工指定容器的IP,并且设置容器为桥接方式上网,命令如下:(docker0为网桥名称,172.17.0.18/16为容器IP和掩码,172.17.0.1为容器网关)
pipework docker0 265a3745752e 172.17.0.18/16@172.17.0.1
ping 172.17.0.18 -c 2
curl -I http://172.17.0.18/
none模式(二)
基于Docker引擎启动Nginx WEB容器,以none方式启动Docker容器,而且Docker0的网桥IP为172.17.0.0/16网段,默认局域网的其他物理机是不能直接访问Docker容器的。
为了实现Docker容器跟局域网通信,并且实现局域网其他的物理机也可以访问容器的IP(不配置NAT映射),可以自定义桥接网络br0,将br0跟物理网卡eth0或者ens33桥接。
操作方法如下:
添加ens33网卡指定bridge桥接网卡名称br0;
cd /etc/sysconfig/network-scripts/
#查看ifcfg-ens33网卡IP地址;
cat ifcfg-ens33
TYPE="Ethernet"
DEVICE="ens33"
ONBOOT="yes"
BRIDGE="br0"
IPADDR=10.0.0.122
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
#查看ifcfg-br0网卡IP地址;
cat ifcfg-br0
DEVICE="br0"
BOOTPROTO=static
ONBOOT=yes
TYPE="Bridge"
IPADDR=10.0.0.122
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
##重启network网络服务;
service network restart
#修改docker引擎,使其读取br0网桥;
cat /etc/sysconfig/docker-network
DOCKER_NETWORK_OPTIONS="-b=br0"
#启动Docker容器,设置为none模式,然后使用br0网桥,指令如下:
(br0为网桥名称,192.168.0.11/24为容器IP和掩码,10.0.0.122为容器网关)
docker run -itd --net=none --name=nginx-v1 docker.io/nginx
pipework br0 nginx-v1 192.168.0.11/24@10.0.0.122