centos tc?centos官网
如何在 Windows 操作系统中运行 Docker 客户端
下面是安装 Docker客户端并在上面运行容器的简单步骤。
1.下载 Boot2Docker
在我们开始安装之前,我们需要 Boot2Docker的可执行文件。可以从它的 Github下载最新版本的 Boot2Docker。在这篇指南中,我们从网站中下载版本 v1.6.1。我们从那网页中用我们喜欢的浏览器或者下载管理器下载了名为 docker-install.exe的文件。
2.安装 Boot2Docker
现在我们运行安装文件,它会安装 Window Docker客户端、用于 Windows的 Git(MSYS-git)、VirtualBox、Boot2Docker Linux ISO以及 Boot2Docker管理工具,这些对于开箱即用地运行全功能的 Docker引擎都至关重要。
3.运行 Boot2Docker
安装完成必要的组件之后,我们从桌面上的“Boot2Docker Start”快捷方式启动 Boot2Docker。它会要求你输入以后用于验证的 SSH密钥。然后会启动一个配置好的用于管理在虚拟机中运行的 Docker的 unix shell。
为了检查是否正确配置,运行下面的 docker version命令。
docker version
4.运行 Docker
由于 Boot2Docker Start自动启动了一个已经正确设置好环境变量的 shell,我们可以马上开始使用 Docker。请注意,如果我们要将 Boot2Docker作为一个远程 Docker守护进程,那么不要在 docker命令之前加 sudo。
现在,让我们来试试 hello-world例子镜像,它会下载 hello-world镜像,运行并输出"Hello from Docker"信息。
$ docker run hello-world
5.使用命令提示符(CMD)运行 Docker
现在,如果你想开始用命令提示符使用 Docker,你可以打开命令提示符(CMD.exe)。由于 Boot2Docker要求 ssh.exe在 PATH中,我们需要在命令提示符中输入以下命令使得%PATH%环境变量中包括 Git安装目录下的 bin文件夹。
set PATH=%PATH%;"c:\Program Files(x86)\Git\bin"
运行上面的命令之后,我们可以在命令提示符中运行 boot2docker start启动 Boot2Docker虚拟机。
boot2docker start
注意:如果你看到 machine does no exist的错误信息,就运行 boot2docker init命令。
然后复制上图中控制台标出命令到 cmd.exe中为控制台窗口设置环境变量,然后我们就可以像平常一样运行 docker容器了。
6.使用 PowerShell运行 Docker
为了能在 PowerShell中运行 Docker,我们需要启动一个 PowerShell窗口并添加 ssh.exe到 PATH变量。
$Env:Path="${Env:Path};c:\Program Files(x86)\Git\bin"
运行完上面的命令,我们还需要运行
boot2docker start
这会打印用于设置环境变量连接到虚拟机内部运行的 Docker的 PowerShell命令。我们只需要在 PowerShell中运行这些命令就可以和平常一样运行 docker容器。
7.用 PUTTY登录
Boot2Docker会在%USERPROFILE%.ssh目录生成和使用用于登录的公共和私有密钥,我们也需要使用这个文件夹中的私有密钥。私有密钥需要转换为 PuTTY的格式。我们可以通过 puttygen.exe实现。
我们需要打开 puttygen.exe并从%USERPROFILE%.ssh\id_boot2docker中导入("File"->"Load"菜单)私钥,然后点击"Save Private Key"。然后用保存的文件通过 PuTTY用 docker@127.0.0.1:2022登录。
8. Boot2Docker选项
Boot2Docker管理工具提供了一些命令,如下所示。
$ boot2docker
Usage: boot2docker.exe [<options>]{help|init|up|ssh|save|down|poweroff|reset|restart|config|status|info|ip|shellinit|delete|download|upgrade|version}[<args>]
总结
通过 Docker Windows客户端使用 Docker很有趣。Boot2Docker管理工具是一个能使任何 Docker容器能像在 Linux主机上平滑运行的很棒的应用程序。如果你更仔细的话,你会发现 boot2docker默认用户的用户名是 docker,密码是 tcuser。最新版本的 boot2docker设置了一个 host-only的网络适配器提供访问容器的端口。一般来说是 192.168.59.103,但可以通过 VirtualBox的 DHCP实现改变。
如果你有任何问题、建议、反馈,请在下面的评论框中写下来然后我们可以改进或者更新我们的内容。非常感谢!Enjoy:-)
如何在Ubuntu 14.10上安装WordPress?
Docker安装应用(CentOS 6.5_x64)
在 Docker中使用 MySQL
在Ubuntu Trusty 14.04(LTS)(64-bit)安装Docker
Docker安装应用(CentOS 6.5_x64)
Ubuntu 14.04安装Docker
阿里云CentOS 6.5模板上安装 Docker
docker镜像制作教程windows下安装docker详细步骤
前言:作为一个开发人员,每每在更换电脑或重装系统时,要重新安装开发工具搭建开发环境。所以有的人会封装一下系统(这里指windows),将平时用到的环境和工具全安装在里面,改改OEM,以后换了电脑就直接拿封装的系统安装就方便很多。同样但也不一样的,在开发完的应用程序在需要更换IDC或者部署分布式时。针对应用又要重新搭建环境,安装软件依赖等等。所以这时候可以将应用软件以及环境依赖一并作为docker镜像,部署的时候直接拉取镜像,启动后为容器就可以正常运行了。
Docker简介:
Docker是一个开源的应用容器引擎,基于 Go语言并遵从 Apache2.0协议开源。Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone的 app),更重要的是容器性能开销极低。
Docker与虚拟机的区别:
上面系统封装与镜像制作,我说过两者有相同但也一点不同。所以就以我的理解简单介绍一下Docker与虚拟机的区别。网上也有很多详细介绍两者架构的原理及原理图,这里就略过原理直接说差异。
使用场景:Docker适合隔离应用,虚拟机能隔离用户(更能隔离应用),因为有独立完整的操作系统。
技术方面:虚拟机是通过虚拟化硬件并CPU要支持虚拟化技术,Docker容器只是在宿主操作系统上开启了Docker引擎,比如一个CentOS镜像是一套文件系统,引擎将容器放入到一个进程中并相互隔离。各个容器共用同一套操作系统资源,不需要虚拟化硬件,启动快速。
Docker的安装:
在windows下有两个工具, docker toolbox针对win7, win8,工具集合了Virtual Box(虚拟机软件),Kitematic(docker图形化软件),和其他几个命令终端工具。针对win10的是 Docker for Windows Installer。
安装完毕后点击Docker Quickstart启动 Docker Toolbox终端。命令执行会先在Virtualbox创建一个名字为default的CentOS虚拟机并安装了Docker。CentOS默认账号docker,密码tcuser,Ip在启动toolbox时在命令板上显示,可以通过Xshell连接。
镜像下载&容器使用
最简单的就是打开Kitematic工具,网络正常时会展示主流的镜像,选择其中一个点击“create”就会下载并在左侧栏启动容器。容器的启动和停止重启在图形化界面中也很方便地操作。下面就下载PHP和 Nginx并运行在浏览器打开。
1. nginx,php容器设置与使用
server{listen 80;server_name localhost;#charset koi8-r;#access_log logs/host.access.log main;location/{root/var/www;index index.php index.html index.htm;if(!-e$request_filename){rewrite ^/(.*)$/index.php?/$1 last;}}location~\.php{ root/var/www; fastcgi_pass 192.168.99.100:9000; fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_param PATH_INFO$fastcgi_path_info; fastcgi_param SCRIPT_FILENAME$document_root$fastcgi_script_name; include fastcgi_params;}#error_page 404/404.html;# redirect server error pages to the static page/50x.html#error_page 500 502 503 504/50x.html;location=/var/www/index.html{root html;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location~\.php${# proxy_pass }# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location~\.php${# root html;# fastcgi_pass 192.168.99.100:9000;# fastcgi_index index.php;# fastcgi_param SCRIPT_FILENAME/scripts$fastcgi_script_name;# include fastcgi_params;#}# deny access to.htaccess files, if Apache's document root# concurs with nginx's one##location~/\.ht{# deny all;#}}2.镜像的制作
镜像制作就需要使用 Dockerfile,类似PHP项目中的composer.json,用于构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
这里仅讲解如何运行 Dockerfile文件来定制一个镜像,具体 Dockerfile文件内指令详解,将在下一节中介绍,这里你只要知道构建的流程即可。
(1)、下面以定制一个 nginx镜像(构建好的镜像内会有一个/usr/share/nginx/html/index.html文件)
在一个空目录下,新建一个名为 Dockerfile文件,并在文件内添加以下内容:
FROM nginxRUN echo'这是一个本地构建的nginx镜像'>/usr/share/nginx/html/index.html(2)、FROM和 RUN指令的作用
FROM:定制的镜像都是基于 FROM的镜像,这里的 nginx就是定制需要的基础镜像。后续的操作都是基于 nginx。
RUN:用于执行后面跟着的命令行命令。有以下俩种格式:
shell格式:
RUN#等同于,在终端操作的 shell命令。exec格式:
RUN ["可执行文件","参数1","参数2"]#例如:# RUN ["./test.php","dev","offline"]等价于 RUN./test.php dev offline注意:Dockerfile的指令每执行一次都会在 docker上新建一层。所以过多无意义的层,会造成镜像膨胀过大。例如:
FROM centosRUNyum installwgetRUNwget-Oredis.tar.gz""RUNtar-xvfredis.tar.gz以上执行会创建3层镜像。可简化为以下格式:FROM centosRUNyum installwget\&&wget-Oredis.tar.gz""\&&tar-xvfredis.tar.gz如上,以&&符号连接命令,这样执行后,只会创建 1层镜像。在 Dockerfile文件的存放目录下,执行构建动作。
以下示例,通过目录下的 Dockerfile构建一个 nginx:test(镜像名称:镜像标签)。
注:最后的.代表本次执行的上下文路径,下一节会介绍。
$ docker build-t nginx:test.
以上显示,说明已经构建成功。
$ docker build-t nginx:test.
镜像上传到远程镜像库
1.首先在docker hub官网注册一个账号,然后可以正在登陆,Kitematic也可以登陆试试。
2.打开docker cli命令面板,输入docker login,输入docker hub账号密码后,显示login success后,就可以准备自己本地的镜像文件了。
3. docker images查看本地的所有镜像文件,记住镜像完整名称,然后给要提交的镜像加标签,这时会生成两个镜像ID一样的镜像文件。然后通过docker push完整的镜像文件:包括标签名,最后就可以推送到自己的镜像库了。
上传至阿里云镜像库
1.首先有阿里云账户,登录成功后开通"容器镜像服务",设置账号密码,并建立空间和仓库,点击管理可以看到登录,拉取,推送的命令。
2.同样的方式打开docker cli命令面板或者xshell连接docker中登录阿里镜像账号,同样的方式找到本地做好的镜像然后推送。
3.拉取docker hub和阿里镜像都通过 docker pull完整的镜像名,就可以拉取到本地,然后通过docker images查看。
Linux下针对路由功能配置iptables的方法详解
作为公司上网的路由器需要实现的功能有nat地址转换、dhcp、dns缓存、流量控制、应用程序控制,nat地址转换通过iptables可以直接实现,dhcp服务需要安装dhcpd,dns缓存功能需要使用bind,流量控制可以使用tc,应用程序控制:例如对qq的封锁可以使用 netfilter-layer7-v2.22+17-protocols-2009-05-28.tar.gz来实现
1、网络规划
操作系统是centos5.8
2、安装dhcpd
代码如下:
yum install dhcp-3.0.5-31.el5
vim/etc/dhcp/dhcpd.conf
ddns-update-style interim;
ignore client-updates;
subnet 10.0.0.0 netmask 255.255.255.0{
option routers 10.0.0.1;
option subnet-mask 255.255.255.0;
option domain-name-servers 10.0.0.1;
range dynamic-bootp 10.0.0.100 10.0.0.200;
default-lease-time 21600;
max-lease-time 43200;
}
3、安装bind,实现dns缓存
代码如下:
yum install bind97.i386 bind97-libs.i386 bind97-utils.i386
vim/etc/named.conf
options{
directory"/var/named";
allow-recursion{ 10.0.0.0/24;};
recursion yes;
forward first;#将所有请求都进行转发
forwarders{ 114.114.114.114;};#定义转发服务器地址
};
zone"." IN{
type hint;
file"named.ca";
};
zone"localhost" IN{
type master;
file"named.localhost";
allow-transfer{ none;};
};
zone"0.0.127.in-addr.arpa" IN{
type master;
file"named.loopback";
allow-transfer{ none;};
};
创建根域文件,默认有
代码如下:
dig-t NS./var/named/named.ca
chown:named/var/named/named.ca
创建本地正向解析文件,默认有
代码如下:
vim/var/named/named.localhost
$TTL 1D
@ IN SOA@ rname.invalid.(
0; serial
1D; refresh
1H; retry
1W; expire
3H); minimum
NS@
A 127.0.0.1
chown:named/var/named/named.localhost
创建本地反向解析文件,默认有
代码如下:
vim/var/named/named.loopback
$TTL 1D
@ IN SOA@ rname.invalid.(
0; serial
1D; refresh
1H; retry
1W; expire
3H); minimum
NS@
A 127.0.0.1
PTR localhost.
chown:named/var/named/named.loopback
检查主配置文件
代码如下:
named-checkconf
检查根区域配置文件
代码如下:
named-checkzone“.”/var/named/named.ca
检查区域文件
代码如下:
named-checkzone“localhost”/var/named/named.localhost
启动服务
代码如下:
service named start
4、重新编译编译内核和iptables以支持应用层过滤
由于实行防火墙功能的是netfilter内核模块,所以需要重新编译内核,需要下载新的内核源码,并使用netfilter-layer7-v2.22作为内核的补丁一起编译到内核中。而控制netfiler的是iptables工具,因此iptables也必须重新编译安装,最后再安装应用程序过滤特征码库17-protocols-2009-05028.tar.gz
1、给内核打补丁,并重新编译内核
2、给iptables源码打补丁,并重新编译iptables
3、安装17proto
备份iptables脚本和配置文件
代码如下:
cp/etc/rc.d/init.d/iptables/root/iptables.sysv
cp/etc/sysconfig/iptables-config/root/iptables-config
2.6内核下载地址
netfilter下载地址
iptables源码下载地址
应用程序特征码库下载地址
代码如下:
xz-d linux-2.6.28.10.tar.xz
tar-xvf linux-2.6.28.10.tar.gz-C/usr/src#新的内核源码,用于重新编译
tar-zxvf netfilter-layer7-v2.22.tar.gz-C/usr/src#内核补丁和iptables补丁,只支持到2.6.28
#进入解压目录并创建软连接
pcd/usr/src
ln-sv linux-2.6.28.10 linux
#进入内核目录
pcd/usr/src/linux
#为当前内核打补丁
ppatch-p1../netfilter-layer7-v2.22/kernel-2.6.25-2.6.28-layer7-2.22.path
#为了方便编译内核将系统上的内核配置文件复制过来
pcp/boot/config-2.6.18-164.el5/usr/src/linux/.config
编译内核
代码如下:
make menuconfig
Networking support- Networking Options- Network packet filtering framework- Core Netfilter Configuration
Netfilter connection tracking support
"lawyer7" match support
"string" match support
"time" match support
"iprange" match support
"connlimit" match support
"state" match support
"conntrack" connection match support
"mac" address match support
"multiport" Multiple port match support
Networking support- Networign options- Network packet filtering framework- IP:Netfiltr Configuration
IPv4 connection tracking support(required for NAT)
Full NAT
MASQUERADE target support
NETMAP target support
REDIRECT target support
在Networking support中选择 Networking options
查找Network packet filtering framework(Netfilter)–Core Netfiler Configrationg–Netfilter connection tracking support(NEW),”layer7″ match support(NEW),”time” match support(NEW),”iprange”
查找IP:Netfilter Configuration–IPv4 connection tracking support,Full NAT(NEW)
代码如下:
make
make modules_install
make install
重启操作系统选择新内核登录
卸载旧的iptables
代码如下:
rpm-e iptables-1.3.5-9.1.el5 iptables-ipv6-1.3.5-9.1.el5 iptstate-1.4-2.el5--nodeps
安装新的iptables,以支持新的netfiler模块
代码如下:
tar-jsvf iptables-1.4.6.tar.bz2-C/usr/src
cd/usr/src/netfilter-layer7-v2.23
cd iptables-1.4.3forward-for-kernel-2.6.20forward
cp*/usr/src/iptables-1.4.6/extensions/
cd/usr/src/iptables-1.4.6/
./configure--prefix=/usr--with-ksource=/usr/src/linux
make
make install
查看安装后的iptables的文件
代码如下:
ls/usr/sbin|grep iptables
ls/usr/libexec/xtables
复制之前备份的配置文件和脚本
代码如下:
cp/root/iptables-config/etc/sysconfig/
cp/root/iptables.sysv/etc/rc.d/init.d/iptables
修改脚本中iptables的路径
代码如下:
vim/etc/rc.d/init.d/iptables
:.,$s@/sbin/$IPTABLES@/usr/sbin/$IPTABLES@g
让iptables服务开机自动启动
代码如下:
chkconfig--add iptables
修改iptables配置文件
将/etc/sysconfig/iptables-config中的
IPTABLES_MODULES=”ip_conntrack_netbios_ns”注释掉
安装协议特征码
代码如下:
tar xvf 17-protocols-2009-05028.tar.gz
make install
完成后在/etc/l7-protocols会生成文件
支持的协议/etc/l7-protocols/protocols
添加iptables策略,运行内部网络上网,禁止qq和视频
代码如下:
iptables-t nat-A POSTROUTING-s 10.0.0.0/24-j SNAT--to-soure 192.168.6.67
iptables-A FORWARD-m layer7--l7proto qq-j DROP
iptables-A FORWARD-m layer7--l7proto httpvideo-j DROP
iptables-A FORWARD-m layer7--l7proto httpaudio-j DROP
指定8点到12点无法上网
复制代码
代码如下:
iptables-A FORWARD-m time--timestart 08:00--timestop 12:00-j DROP
5、使用tc控制带宽
例如公司出口带宽是10Mbps,个用户A分配500KB的最大下载带宽,给用户B分配分配的最大下载带宽是200KB
A用户ip:10.0.0.100
B用户ip:10.0.0.101
代码如下:
#在eth0网卡上创建一个根队列规则,队列规则的算法使用htb,default 2表示指定一个默认类别编号,默认的流量控制策略,如果ip没有在后面的filter中被匹配到就都是有这个策略
tc qdisc add dev eth0 root handle 1:0 htb default 2
#在eth0网卡上定义一个类,prant 1:0中的1对应根队列规则中的handle 1:0,classid 1:2表示当前这个类的标识,用于应用在后面的得到filter中,rate 200kbsp表示带宽为200KB/s,ceil 200kbps表示最大带宽也为200KB/s,prio 2是优先级
tc class add dev eth0 parent 1:0 classid 1:2 htb rate 200kbps ceil 200kbps prio 2
tc class add dev eth0 parent 1:0 classid 1:3 htb rate 500kbps ceil 500kbps prio 2
#将两个类的默认的fifq队列规则改为sfq
tc qdisc add dev eth0 parent 1:2 handle 20 sfq
tc qdisc add dev eth0 parent 1:3 handle 30 sfq
#在网卡eth0上的1:0节点(对应qdisc中的handle 1:0)添加一个u32过滤规则,优先级为1,凡是目标地址是10.0.0.100的数据包都使用1:2类(对应classid为1:2的类)
tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst 10.0.0.100 flowid 1:2
tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst 10.0.0.101 flowid 1:3
如果还有其他用户例如用户C和D的ip是102、103,要求的下载带宽也要求500那么在加入
代码如下:
tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst 10.0.0.102 flowid 1:3
tc filter add dev eth0 parent 1:0 protocol ip prio 1 u32 match ip dst 10.0.0.103 flowid 1:3
清除eth0上的规则
代码如下:
tc qdisc del dev eth1 root/dev/null