- 浏览: 3459085 次
- 性别:
- 来自: 珠海
-
文章分类
- 全部博客 (1633)
- Java (250)
- Android&HTML5 (111)
- Struts (10)
- Spring (236)
- Hibernate&MyBatis (115)
- SSH (49)
- jQuery插件收集 (55)
- Javascript (145)
- PHP (77)
- REST&WebService (18)
- BIRT (27)
- .NET (7)
- Database (105)
- 设计模式 (16)
- 自动化和测试 (19)
- Maven&Ant (43)
- 工作流 (36)
- 开源应用 (156)
- 其他 (16)
- 前台&美工 (119)
- 工作积累 (0)
- OS&Docker (83)
- Python&爬虫 (28)
- 工具软件 (157)
- 问题收集 (61)
- OFbiz (6)
- noSQL (12)
最新评论
-
HEZR曾嶸:
你好博主,这个不是很理解,能解释一下嘛//左边+1,上边+1, ...
java 两字符串相似度计算算法 -
天使建站:
写得不错,可以看这里,和这里的这篇文章一起看,有 ...
jquery 遍历对象、数组、集合 -
xue88ming:
很有用,谢谢
@PathVariable映射出现错误: Name for argument type -
jnjeC:
厉害,困扰了我很久
MyBatis排序时使用order by 动态参数时需要注意,用$而不是# -
TopLongMan:
非常好,很实用啊。。
PostgreSQL递归查询实现树状结构查询
方法一: pipwork工具
1. 安装
下载pipework工具, 然后配置到path路径.
$ git clone https://github.com/jpetazzo/pipework.git
$ sudo cp -rp pipework/pipework /usr/local/bin/
$ sudo yum -y install apring bridge-utils
2. 网络设定
# 删除容器之后删除网络
ip link set br0 down
brctl delbr br0
# 创建网络
brctl addbr br0;
ip link set dev br0 up;
ip addr add 192.168.2.1/24 dev br0;
docker stop db;
docker start db;
pipework br0 db 192.168.2.103/24;
3. 创建容器和设定IP
docker run -d -e SERVERADMIN="mail@domain.com" -e DEFAULT_LOGS_DIR="/logs/httpd/defaults" --name=apache -v /home/pandy/docker-resources/apache/conf:/etc/httpd/conf -v /home/pandy/docker-resources/apache/html:/var/www/html pandy/apache
pipework br0 apache 192.168.2.100/24;
方法二: Docker中使用固定IP: http://yaxin-cn.github.io/Docker/docker-container-use-static-IP.html
注意:重启电脑之后ip依然改变
创建容器
docker run -i -t --rm --net='none' --name test centos:centos7 /bin/bash
container id =>b3ae71122656
docker inspect -f "{{.State.Pid}}" b3ae71122656 //这个容器id对应的pid
输出:8948 , 注意, 记住这个符号
创建一个链接, 打开另一个终端, 输入
sudo mkdir -p /var/run/netns
sudo ln -s /proc/8948/ns/net /var/run/netns/8948
然后创建一对端到端的网卡,将veth_db84e747c3绑定到docker0网桥,并启动。将另一块网卡X放到container内部
sudo ip link add veth_db84e747c3 type veth peer name X
sudo brctl addif docker0 veth_db84e747c3
sudo ip link set veth_db84e747c3 up
sudo ip link set X netns 8948
在docker容器里面查看:ip addr
[root@b3ae71122656 /]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
6: X: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether c6:d8:5f:f6:fa:6a brd ff:ff:ff:ff:ff:ff
然后对container内部新添加的网卡进行配置(可以通过man ip-netns更详细查看)
sudo ip netns exec 8948 ip link set dev X name eth0 //重新命名容器内部的网卡叫eth0
sudo ip netns exec 8948 ip link set eth0 up
sudo ip netns exec 8948 ip addr add 172.17.111.10/16 dev eth0 //配置网卡
sudo ip netns exec 8948 ip route add default via 172.17.42.1
测试:
ping 172.17.111.10
PING 172.17.111.10 (172.17.111.10) 56(84) bytes of data.
64 bytes from 172.17.111.10: icmp_seq=1 ttl=64 time=0.097 ms
64 bytes from 172.17.111.10: icmp_seq=2 ttl=64 time=0.076 ms
命令组成的文件
1. 安装
下载pipework工具, 然后配置到path路径.
$ git clone https://github.com/jpetazzo/pipework.git
$ sudo cp -rp pipework/pipework /usr/local/bin/
$ sudo yum -y install apring bridge-utils
2. 网络设定
# 删除容器之后删除网络
ip link set br0 down
brctl delbr br0
# 创建网络
brctl addbr br0;
ip link set dev br0 up;
ip addr add 192.168.2.1/24 dev br0;
docker stop db;
docker start db;
pipework br0 db 192.168.2.103/24;
3. 创建容器和设定IP
docker run -d -e SERVERADMIN="mail@domain.com" -e DEFAULT_LOGS_DIR="/logs/httpd/defaults" --name=apache -v /home/pandy/docker-resources/apache/conf:/etc/httpd/conf -v /home/pandy/docker-resources/apache/html:/var/www/html pandy/apache
pipework br0 apache 192.168.2.100/24;
方法二: Docker中使用固定IP: http://yaxin-cn.github.io/Docker/docker-container-use-static-IP.html
注意:重启电脑之后ip依然改变
创建容器
docker run -i -t --rm --net='none' --name test centos:centos7 /bin/bash
container id =>b3ae71122656
docker inspect -f "{{.State.Pid}}" b3ae71122656 //这个容器id对应的pid
输出:8948 , 注意, 记住这个符号
创建一个链接, 打开另一个终端, 输入
sudo mkdir -p /var/run/netns
sudo ln -s /proc/8948/ns/net /var/run/netns/8948
然后创建一对端到端的网卡,将veth_db84e747c3绑定到docker0网桥,并启动。将另一块网卡X放到container内部
sudo ip link add veth_db84e747c3 type veth peer name X
sudo brctl addif docker0 veth_db84e747c3
sudo ip link set veth_db84e747c3 up
sudo ip link set X netns 8948
在docker容器里面查看:ip addr
[root@b3ae71122656 /]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
6: X: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
link/ether c6:d8:5f:f6:fa:6a brd ff:ff:ff:ff:ff:ff
然后对container内部新添加的网卡进行配置(可以通过man ip-netns更详细查看)
sudo ip netns exec 8948 ip link set dev X name eth0 //重新命名容器内部的网卡叫eth0
sudo ip netns exec 8948 ip link set eth0 up
sudo ip netns exec 8948 ip addr add 172.17.111.10/16 dev eth0 //配置网卡
sudo ip netns exec 8948 ip route add default via 172.17.42.1
测试:
ping 172.17.111.10
PING 172.17.111.10 (172.17.111.10) 56(84) bytes of data.
64 bytes from 172.17.111.10: icmp_seq=1 ttl=64 time=0.097 ms
64 bytes from 172.17.111.10: icmp_seq=2 ttl=64 time=0.076 ms
命令组成的文件
#!/usr/bin/env bash # filename: bind_addr.sh # 调用方式:[root@bogon pandy]# ./bind_addr.sh test 192.168.2.11 if [ `id -u` -ne 0 ]; then echo '必须使用root权限' exit fi if [ $# != 2 ]; then echo "使用方法: $0 容器名字 IP" exit 1 fi container_name=$1 bind_ip=$2 container_id=`docker inspect -f '{{.Id}}' $container_name 2> /dev/null` if [ ! $container_id ]; then echo "容器不存在" exit 2 fi bind_ip=`echo $bind_ip | egrep '^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$'` if [ ! $bind_ip ]; then echo "IP地址格式不正确" exit 3 fi container_minid=`echo $container_id | cut -c 1-10` container_netmask=`ip addr show docker0 | grep "inet\b" | awk '{print $2}' | cut -d / -f2` container_gw=`ip addr show docker0 | grep "inet\b" | awk '{print $2}' | cut -d / -f1` bridge_name="veth_$container_minid" container_ip=$bind_ip/$container_netmask #pid=`docker inspect -f '{{.State.Pid}}' salt-master 2> /dev/null` pid=`docker inspect -f '{{.State.Pid}}' $container_name 2> /dev/null` echo "pid=$pid" if [ ! $pid ]; then echo "获取容器$container_name的id失败" exit 4 fi if [ ! -d /var/run/netns ]; then mkdir -p /var/run/netns fi ln -sf /proc/$pid/ns/net /var/run/netns/$pid echo "开始设定IP" echo "=====================================================" ip link add $bridge_name type veth peer name X brctl addif docker0 $bridge_name ip link set $bridge_name up ip link set X netns $pid ip netns exec $pid ip link set dev X name eth0 ip netns exec $pid ip link set eth0 up ip netns exec $pid ip addr add $container_ip dev eth0 ip netns exec $pid ip route add default via $container_gw echo "====================================================="
- pipework.zip (3.4 KB)
- 下载次数: 3
发表评论
-
应用行为活动监测器 Sysdig Falco
2016-05-19 13:03 1315http://www.oschina.net/p/sysdig ... -
Fedora安装Redis
2016-05-04 08:56 1442管理工具: centos6.3下安装phpredisadmin ... -
redis-install.sh
2016-05-04 08:56 4#!/bin/bash # From here: http: ... -
服务器自动化操作 RunDeck
2016-05-03 14:04 1743http://www.oschina.net/p/rundec ... -
安装Hadoop, Hbase, Phoenix
2016-04-22 09:22 1508http://my.oschina.net/jrrx/blog ... -
shell中读写mysql数据库
2016-03-13 15:32 1425http://mingxinglai.com/cn/2013/ ... -
container和主机(host)之间的文件拷贝
2016-02-04 21:33 1407http://www.cnblogs.com/lemonbar ... -
在linux操作系统下注销、关机、重启的简单命令
2016-01-31 15:28 1277一、注销的命令——Logout 是登陆的相对操作,登陆系统后, ... -
Linux如何查找大文件或目录总结
2016-01-28 22:44 1308http://my.oschina.net/u/1034537 ... -
Linux 查看磁盘空间命令
2016-01-14 22:08 1262df、du、fdisk:Linux磁盘 ... -
Linux下的压缩和解压
2015-11-10 16:13 1117Linux下的压缩(zip)解压(unzip)缩命令 http ... -
Linux下安装FFmpeg
2015-10-29 14:00 1601在线安装: 在 Ubuntu/Debian/Fedora 系统 ... -
Linux的tmpfs文件系统
2015-10-27 22:39 1082详细看原文:http://futureinhands.itey ... -
linux shell 中"2>&1"含义
2015-10-26 15:09 1301export date_str=$(date "+% ... -
centos 6.5 普通用户 开启自动运行
2015-10-15 19:30 4CentOS tomcat普通用户执行配置安装 http:// ... -
linux 统计文件夹大小
2015-10-13 22:25 1328linux 统计文件夹大小 http://www.51tes ... -
Linux命令之远程登录/无密码登录-ssh,ssh-keygen,ssh-copy-id
2015-10-11 11:13 1126http://blog.csdn.net/wangjunjun ... -
Docker容器使用静态独立的外部IP(便于集群组建)
2015-10-07 16:14 4132http://my.oschina.net/gudaoxuri ... -
Centos 6.5设定IP
2015-09-30 08:50 1308参考: http://blog.csdn.net/sky663 ... -
docker下面tomcat执行startup.sh问题
2015-09-14 13:55 8226在做docker的时候,碰到了如果使用startup.sh是无 ...
相关推荐
由于工作需要,需要给Docker设置固定IP,在网上的查找了一些资料,自己试着实践一下,留个笔记。 经常用Docker模拟项目在生产环境中的部署,往往需要同时开好几台Docker容器,而且有时安装的软件需要绑定Docker...
本文主要围绕在CentOS 7环境下的Docker中使用pipework脚本分配固定IP的详细步骤和相关知识进行讨论。 首先,我们需要了解Docker提供了几种网络模式,它们分别是bridge、host、container和none。 1. bridge模式:这...
主要介绍了docker compose自定义网络实现固定容器ip地址,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
主要介绍了Docker 容器指定自定义网段的固定IP/静态IP地址的相关资料,需要的朋友可以参考下
本文将详细讨论如何在Docker中配置固定IP地址以及如何实现桥接。 Docker 默认采用的是 `bridge` 模式,这种模式下,Docker 会创建一个名为 `docker0` 的虚拟网桥,容器通过这个网桥连接到宿主机。容器内的IP地址是...
安装完docker,系统会自动添加一个供docker使用的网桥docker0,我们创建一个新的容器时,容器通过DHCP获取一个与docker0同网段的IP地址。并默认连接到docker0网桥,以此实现容器与宿主机的网络互通。如下: 2:host...
前段时间,我一直在研究如何给Docker分配静态ip,主要的用途是让thrift进来和出来都走一个ip,还有就是爬虫可以独立ip地址,这样就很好的实现了爬虫的多ip方式… 但是随着nginx tcp的加入和开发了一个基于Python ...
首先,如果主机使用无线网络,我们需要固定主机的IP地址,以便后续配置。这通常通过查看无线网的DHCP分配信息,然后手动在IPv4设置中输入相应的IP、子网掩码、默认网关和DNS服务器地址完成。在主机和虚拟机之间进行...
通过修改源码,用户可以设置 Seata Server 使用预定义的 IP 和端口进行注册,从而更好地适应这些特定场景。 要实现这一功能,开发者可能修改了以下几个关键部分: 1. **配置类**:增加对 IP 和端口的读取,这通常...
在使用Docker for Windows的过程中,有时我们需要容器内部的服务能够通过独立的IP地址被宿主机或局域网中的其他设备直接访问。默认情况下,Docker容器是通过端口映射与外部世界交互的,但这可能在某些场景下不够灵活...
### Docker容器内部端口映射到外部宿主机端口的...无论是固定的端口映射还是随机端口映射,甚至是针对特定IP地址的映射,Docker都能轻松应对。掌握这些端口映射技巧,对于高效地管理和部署Docker容器是非常有帮助的。
如果单机有多个 IP,你可以单机启动多个容器,并在 -P 中分别指定 IP。第四步:调用样例代码进入 examples 目录,运行go run zerg_crawl.go --endpoints http://<你的 etcd host:ip> --url ...