Docker网络管理

Docker run命令创建容器时,可以使用–net选项指定容器的网络模式,docker默认使用Linux桥接模式提供容器之间的通信。

Docker有以下四种网络模式:

1) host模式,使用–net=host 指定。
Docker host模式没有独立的Network Namespace,而是和宿主机公用一个Network Namespace。容器不会虚拟出自己的网卡,而是使用宿主机的IP和端口。

2) container模式,使用–net=container:NAME or ID指定。
Docker container模式指定新创建的容器和已经存储的一个容器共享一个Network Namespace,而不是和宿主机共享一个Network Namespace。

3) none模式,使用–net=none指定。
Docker的none网络拥有自己的Network Namespace,需要手工为docker容器添加网卡,配置IP等。

4) bridge模式,使用–net=bridge指定。

Docker bridge模式是默认的网络设置,birdge模式会为每一个容器分配Network Namespace、设置IP等。并将一个主键的docker容器连接到一个虚拟网桥上。

1) Docker默认使用Linux桥接模式提供容器之间的通信。

[root@kvm-server01 ~]# brctl show docker0
bridge name    bridge id        STP enabled    interfaces
docker0        8000.0242d7ec37f4    no        veth07bb5eb

2) 由于Docker Hub的站点在国外,下载起来很慢,采用网易官网nginx镜像,在网页蜂巢点击->镜像中心->镜像库->Docker Hub镜像,点击要下载镜像右边的版本,然后复制地址下载。

[root@kvm-server01 ~]# docker pull hub.c.163.com/library/nginx:latest

3) 启动镜像,-P参数表示随机映射,把宿主机的一个随机端口映射到容器对外开放的端口。

[root@kvm-server01 ~]# docker run -d -P "hub.c.163.com/library/nginx"
e4a86faaf1ac047a3af398211fdac044f2658f0b8adbb96cdc039d76a4cf010e

4) 查看最近运行的docker容器。

[root@kvm-server01 ~]# docker ps -l
CONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS              PORTS                                           NAMES
e4a86faaf1ac        hub.c.163.com/library/nginx   "nginx -g 'daemon off"   50 seconds ago      Up 35 seconds       0.0.0.0:32769->80/tcp, 0.0.0.0:32768->443/tcp   berserk_albattani

5)随机端口映射的测试。

[root@kvm-server01 ~]# curl http://192.168.100.100:32769
HTTP/1.1 200 OK
Server: nginx/1.10.2

6) 查看docker访问日志。

[root@kvm-server01 ~]# docker logs e4a86faaf1ac

7) 随机端口的映射采用-P参数,通过-p参数表示指定端口的映射。

[noway]
Docker 指定端口的映射有下面几种方式:
docker run –name dockername -d -p hostPort:containerPort
docker run –name dockername -d -p ip:hostPort:containerPort
docker run –name dockername -d -p ip::containerPort
docker run –name dockername -d -p hostPort:containerPort:udp
[/noway]

8)指定端口映射的实例,本地的80端口映射到容器的80端口。

[root@kvm-server01 ~]# docker run --name www01 -d -p 80:80 "hub.c.163.com/library/nginx"
9360ca421c23097289f1c709988c2f17192feb2e2c80aa5f290a65a7d800c93b
[root@kvm-server01 ~]# docker ps -l
CONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS              PORTS                         NAMES
9360ca421c23        hub.c.163.com/library/nginx   "nginx -g 'daemon off"   13 seconds ago      Up 10 seconds       0.0.0.0:80->80/tcp, 443/tcp   www01

9)指定端口映射的测试。

[root@kvm-server01 ~]# curl -I http://192.168.100.100:80
HTTP/1.1 200 OK
Server: nginx/1.10.2

发表评论

电子邮件地址不会被公开。 必填项已用*标注

昵称 *