访问容器的方式 —— docker attach/exec

  1. 进入容器默认运行的session:

    docker attach $pid

     Usage:  docker attach [OPTIONS] CONTAINER
    	
     Attach to a running container
    	
     Options:
      --detach-keys string   Override the key sequence for detaching a container
      --help                 Print usage
      --no-stdin             Do not attach STDIN
      --sig-proxy            Proxy all received signals to the process (default true)
    
  2. 进入容器环境并运行新的命令:

    docker exec -it $pid /bin/bash // 对指定的容器执行bash

     docker exec --help
    	
     Usage:  docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
    	
     Run a command in a running container
    	
      -d, --detach         Detached mode: run command in the background
       --detach-keys        Override the key sequence for detaching a container
       --help               Print usage
       -i, --interactive    Keep STDIN open even if not attached
       --privileged         Give extended privileges to the command
       -t, --tty            Allocate a pseudo-TTY
       -u, --user           Username or UID (format: <name|uid>[:<group|gid>])
    

简单的 python http 服务器

运维人员常需要在内网环境中传输文件,除了使用scp外,还有一个比较灵活的办法就是 http 服务。而如果你在容器中临时需要传输文件进行测试,这几乎是最好的方式了。

python 中临时启动一个 http 服务也特别简单,只需要1行命令:

python -m SimpleHTTPServer

访问你服务器的 8000 端口即可。

如果需要自定义端口,则在后边添加端口参数即可,例如自定义为8080端口:

python -m SimpleHTTPServer 8080

参考资料


Linux 下导入和导出.sql文件

mysqldump 导出

  1. 导出数据和表结构:

     mysqldump -u用户名 -p密码 数据库名 > 数据库名.sql
    
  2. 只导出表结构

     mysqldump -u用户名 -p密码 -d 数据库名 > 数据库名.sql
    

二、导入数据库

方法一:

  1. 登陆

     mysql -u用户名 -p密码
    
  2. 建空数据库

     create database abc;
    
  3. 导入数据库

    • 选择数据库

        mysql>use abc;
      
    • 设置数据库编码

        mysql>set names utf8;
      
    • 导入数据(注意sql文件的路径)

        mysql>source /init.sql;
      

方法二:

mysql -u用户名 -p密码 数据库名 < 数据库名.sql

什么是 Autonomous System Number(自治系统号)

简而言之:运营商之间会使用BGP(Border Gateway Protocol) 路由协议来交换各自的IP路由表,AS号就是BGP协议用来辨识邻国的一个身份证。

百度百科

全球的互联网被分成很多个 AS 自治域,每个国家的运营商、机构、甚至公司等都可以申请AS号码,AS号码是有限的,最大数目是65536。各自分配的IP地址被标清楚属于哪个AS号码,在全球互联网上,假如一封email从一个a IP地址发往另外一个b IP地址,这封email必须要知道a IP地址属于的AS号码A到b IP地址属于的AS号码 B如何走,然后就沿着这条路到达目的IP地址。这个过程叫数据包的路由,当然,过程要复杂的多。

BGP(边界网关协议)协议主要用于互联网AS(自治系统)之间的互联,BGP的最主要功能在于控制路由的传播和选择最好的路由。中国网通与中国电信都具有AS号(自治系统号),全国各大网络运营商多数都是通过BGP协议与自身的AS号来互联的。使用此方案来实现双线路需要在CNNIC(中国互联网信息中心)申请IDC自己的IP地址段和AS号,然后通过BGP协议将此段IP地址广播到网通、电信等其它的网络运营商,使用BGP协议互联后网通与电信的所有骨干路由设备将会判断到IDC机房IP段的最佳路由,以保证网通、电信用户的高速访问。

知乎

https://www.zhihu.com/question/21024981

自治系统(Autonomous System),用通俗的语言来形容,就是一个互联网的独立王国,这一个个独立王国互联起来,就组成了互联网(Internet)。

每个王国有自己独立的国号,以区别于别的王国,这个国号用自治系统号ASN(Autonomous System Number),ASN 由两个字节组成,理论上取值范围为 1- 65535,末尾的1024个ASN是私有自治号,用于王国内部的下属郡国使用,不能外泄(类似私有IP,如果不小心外泄,别人也会忽略)。

每一个互联网用户都置身于AS内,比如中国电信的AS号 为 4809,那么中国电信的用户就置身于4809 的独立王国,如果用户访问的服务器也是在这个AS内,那双向的流量都在王国里来回溜达。

但如果服务器IP位于中国移动AS内,如何跨运营商访问呢? 运营商之间会使用BGP(Border Gateway Protocol) 路由协议来交换各自的IP路由表,AS号就是BGP协议用来辨识邻国的一个身份证,同时在交换的路由表信息里,会附上各自的AS号。

既然中国电信通过BGP学习到中国移动的路由信息,就会把用户的访问请求转发给中国移动的边界路由器,既然IP包进入中国移动的地界,接下来就任由中国移动的设备来处理了,假设顺利到达服务器,回程检查客户IP,发现是电信的IP,就会转发到电信的边界路由器,并到达用户。

运营商属于合作、竞争关系,关系微妙 如果运营商之间不互联,那运营商将会变成一个个孤岛,所以需要互联链路(桥梁)将孤岛连接起来,连接起来就会产生竞争关系。蛋糕就那么大,谁多吃一口,别人就会少吃一口,所以跨运营商的流量服务不会太好,带宽不足,容易丢包,延迟大。所以对于财大气粗的公司的服务器会提供多个运营商的入口IP,依据客户端IP归属哪个运营商(AS),智能DNS Server 会返回和客户端位于相同AS的服务器IP,这样客户端访问服务器就会低延迟、低丢包、快速响应。

不光运营商可以拥有AS号,一些大型企业如 Google , Amonzon, Apple , EBay 都拥有自己的AS号,一个AS号通常足够使用,但运营商通常会有多个AS号,用于不同的独立的网络。

以北美地区为例,首次注册 ASN 的费用是 $550,其后的运营成本是每年 (IPv4地址块数量+IPv6地址块数量+1)*$100。任何实体,只要有可以提供证明材料的合理使用需求都可以申请,并不需要一定是 ISP。