Docker容器的设置资源(cpu,内存)限制:

#docker  run –memory=200M xxxx-image  --vm 1 –verbose

#docker  run  --cpu-shares=10 --name=test1 xxx-image  --cpu  1

#docker  run  --cpu-shares=5  --name=test2  xxx-image  --cpu  2

底层技术支持:

(1)      Namespaces  : 做隔离pid, net, ipc, mnt, uts

(2)     Control  groups : 做资源限制

(3)     Union file systems :Container和image的分层;

[root@zizhen02 ~]# docker run --cpu-shares=2 --name=test3 ubuntu-stress --cpu 1

stress: info: [1] dispatching hogs: 1 cpu, 0 io, 0 vm, 0 hdd

[root@zizhen02 ~]# docker run --cpu-shares=4 ubuntu-stress --cpu 1

stress: info: [1] dispatching hogs: 1 cpu, 0 io, 0 vm, 0 hdd

Tasks: 116 total,   3 running, 113 sleeping,   0 stopped,   0 zombie

%Cpu(s):100.0 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

KiB Mem :  1863224 total,  1062620 free,   381180 used,   419424 buff/cache

KiB Swap:  1572860 total,  1503996 free,    68864 used.  1276984 avail Mem

PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND

8654 root      20   0    8228    100      0 R 66.4  0.0   0:04.76 stress

8542 root      20   0    8228     96      0 R 32.9  0.0   0:40.13 stress

Docker网络技术

分单机和多机:

单机有三种:bridge Network 、Host Network、None Network;

多机: Overlay Network ;

#docker  ps

#docker  exec  [container-ID]  ip a

#ip  netns list  列出命名空间

#ip  netns  delete  test1 删除test1

#ip  netns  list

#ip  netns  add  test1 增加test1

#ip  netns  list

#ip  netns  exec  test1 ip a 在test1中执行ip a ;

# ip  netns  exec  test1 ip link set dev lo up 在test1 执行命令lo端口up状态;

[root@zizhen02 ~]# ip netns exec test1 ip a

1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

[root@zizhen02 ~]# ip netns exec test1 ip link set dev lo up

[root@zizhen02 ~]# ip netns list

test1

[root@zizhen02 ~]# ip netns exec test1 ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

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

[root@zizhen02 ~]#

测试创建NameSpace

[root@zizhen02 ~]# ip link

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000

link/ether 00:0c:29:cb:78:e2 brd ff:ff:ff:ff:ff:ff

3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default

link/ether 02:42:d4:5d:cf:c5 brd ff:ff:ff:ff:ff:ff

[root@zizhen02 ~]# ip link add veth-test1 type veth peer name veth-test2

[root@zizhen02 ~]# ip netns list

[root@zizhen02 ~]# ip link

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000

link/ether 00:0c:29:cb:78:e2 brd ff:ff:ff:ff:ff:ff

3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default

link/ether 02:42:d4:5d:cf:c5 brd ff:ff:ff:ff:ff:ff

8: veth-test2@veth-test1: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000

link/ether c6:97:91:b0:31:9c brd ff:ff:ff:ff:ff:ff

9: veth-test1@veth-test2: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000

link/ether 8e:69:f6:fd:e5:87 brd ff:ff:ff:ff:ff:ff

[root@zizhen02 ~]# ip netns exec test1 ip link

Cannot open network namespace "test1": No such file or directory

[root@zizhen02 ~]# ip netns add test1

[root@zizhen02 ~]# ip netns list

test1

[root@zizhen02 ~]# ip netns exec test1 ip link

1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

[root@zizhen02 ~]# ip link set veth-test1 netns test1

[root@zizhen02 ~]# ip netns exec test1 ip link

1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

9: veth-test1@if8: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000

link/ether 8e:69:f6:fd:e5:87 brd ff:ff:ff:ff:ff:ff link-netnsid 0

[root@zizhen02 ~]# ip link

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000

link/ether 00:0c:29:cb:78:e2 brd ff:ff:ff:ff:ff:ff

3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default

link/ether 02:42:d4:5d:cf:c5 brd ff:ff:ff:ff:ff:ff

8: veth-test2@if9: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000

link/ether c6:97:91:b0:31:9c brd ff:ff:ff:ff:ff:ff link-netnsid 0

[root@zizhen02 ~]#

[root@zizhen02 ~]#

[root@zizhen02 ~]#

[root@zizhen02 ~]# ip netns add test2

[root@zizhen02 ~]# ip netns list

test2

test1 (id: 0)

[root@zizhen02 ~]# ip netns exec test2 ip link

1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

[root@zizhen02 ~]# ip link set veth-test2 netns test2

[root@zizhen02 ~]# ip netns exec test2 ip link

1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

8: veth-test2@if9: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000

link/ether c6:97:91:b0:31:9c brd ff:ff:ff:ff:ff:ff link-netnsid 0

[root@zizhen02 ~]# ip link

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000

link/ether 00:0c:29:cb:78:e2 brd ff:ff:ff:ff:ff:ff

3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default

link/ether 02:42:d4:5d:cf:c5 brd ff:ff:ff:ff:ff:ff

[root@zizhen02 ~]#

[root@zizhen02 ~]#

[root@zizhen02 ~]# ip netns exec test1 ip addr add 192.168.0.1/24 dev veth-test1

[root@zizhen02 ~]# ip netns exec test2 ip addr add 192.168.0.2/24 dev veth-test2

[root@zizhen02 ~]# ip netns exec test2 ip link

1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

8: veth-test2@if9: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000

link/ether c6:97:91:b0:31:9c brd ff:ff:ff:ff:ff:ff link-netnsid 0

[root@zizhen02 ~]# ip netns exec test1 ip link

1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

9: veth-test1@if8: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000

link/ether 8e:69:f6:fd:e5:87 brd ff:ff:ff:ff:ff:ff link-netnsid 1

[root@zizhen02 ~]# ip netns exec test1 ip link set dev veth-test1 up

[root@zizhen02 ~]# ip netns exec test2 ip link set dev veth-test1 up

Cannot find device "veth-test1"

[root@zizhen02 ~]# ip netns exec test2 ip link set dev veth-test2 up

[root@zizhen02 ~]#

[root@zizhen02 ~]# ip netns exec test1 ip link

1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

9: veth-test1@if8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000

link/ether 8e:69:f6:fd:e5:87 brd ff:ff:ff:ff:ff:ff link-netnsid 1

[root@zizhen02 ~]# ip netns exec test2 ip link

1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN mode DEFAULT group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

8: veth-test2@if9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000

link/ether c6:97:91:b0:31:9c brd ff:ff:ff:ff:ff:ff link-netnsid 0

[root@zizhen02 ~]# ip netns exec test1 ip a

1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

9: veth-test1@if8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000

link/ether 8e:69:f6:fd:e5:87 brd ff:ff:ff:ff:ff:ff link-netnsid 1

inet 192.168.0.1/24 scope global veth-test1

valid_lft forever preferred_lft forever

inet6 fe80::8c69:f6ff:fefd:e587/64 scope link

valid_lft forever preferred_lft forever

[root@zizhen02 ~]# ip netns exec test2 ip a

1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default qlen 1000

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

8: veth-test2@if9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000

link/ether c6:97:91:b0:31:9c brd ff:ff:ff:ff:ff:ff link-netnsid 0

inet 192.168.0.2/24 scope global veth-test2

valid_lft forever preferred_lft forever

inet6 fe80::c497:91ff:feb0:319c/64 scope link

valid_lft forever preferred_lft forever

[root@zizhen02 ~]# ip netns exec test1 ping 192.168.0.2

PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.

64 bytes from 192.168.0.2: icmp_seq=1 ttl=64 time=0.075 ms

64 bytes from 192.168.0.2: icmp_seq=2 ttl=64 time=0.048 ms

64 bytes from 192.168.0.2: icmp_seq=3 ttl=64 time=0.052 ms

^C

--- 192.168.0.2 ping statistics ---

3 packets transmitted, 3 received, 0% packet loss, time 1999ms

rtt min/avg/max/mdev = 0.048/0.058/0.075/0.013 ms

[root@zizhen02 ~]# ip netns exec test2 ping 192.168.0.1

PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.

64 bytes from 192.168.0.1: icmp_seq=1 ttl=64 time=0.050 ms

64 bytes from 192.168.0.1: icmp_seq=2 ttl=64 time=0.059 ms

64 bytes from 192.168.0.1: icmp_seq=3 ttl=64 time=0.049 ms

^C

--- 192.168.0.1 ping statistics ---

3 packets transmitted, 3 received, 0% packet loss, time 1999ms

rtt min/avg/max/mdev = 0.049/0.052/0.059/0.009 ms

[root@zizhen02 ~]#

[root@zizhen02 ~]# ip netns list

test2 (id: 1)

test1 (id: 0)

以上和container 中的namespace原理是一样的;

31 docker Bridge0详解

[root@zizhen02 ~]# docker network ls

NETWORK ID          NAME                DRIVER              SCOPE

ba670d30bad7        bridge              bridge              local

63c3ce67f785        host                host                local

04734d810393        none                null                local

[root@zizhen02 ~]#

[root@zizhen02 ~]# docker run -it busybox /bin/sh

/ # ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000

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

16: eth0@if17: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue

link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff

inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0

valid_lft forever preferred_lft forever

/ #

[root@zizhen02 ~]# docker network

Usage:     docker network COMMAND

Manage networks

Commands:

connect     Connect a container to a network

create      Create a network

disconnect  Disconnect a container from a network

inspect     Display detailed information on one or more networks

ls          List networks

prune       Remove all unused networks

rm          Remove one or more networks

Run 'docker network COMMAND --help' for more information on a command.

[root@zizhen02 ~]# docker network inspect

"docker network inspect" requires at least 1 argument.

See 'docker network inspect --help'.

Usage:  docker network inspect [OPTIONS] NETWORK [NETWORK...]

Display detailed information on one or more networks

[root@zizhen02 ~]# docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES

20ec4d84140c        busybox             "/bin/sh"           About a minute ago   Up About a minute                       thirsty_poitras

[root@zizhen02 ~]# docker network inspect 20ec4d84140c

[]

Error: No such network: 20ec4d84140c

[root@zizhen02 ~]# docker network ls

NETWORK ID          NAME                DRIVER              SCOPE

ba670d30bad7        bridge              bridge              local

63c3ce67f785        host                host                local

04734d810393        none                null                local

[root@zizhen02 ~]# docker network inspect ba670d30bad7

[

{

"Name": "bridge",

"Id": "ba670d30bad79bfe622c99522aabfb60581181f4c69ebf42b0d6ca56904312a7",

"Created": "2019-03-17T16:25:22.229320555+08:00",

"Scope": "local",

"Driver": "bridge",

"EnableIPv6": false,

"IPAM": {

"Driver": "default",

"Options": null,

"Config": [

{

"Subnet": "172.17.0.0/16",

"Gateway": "172.17.0.1"

}

]

},

"Internal": false,

"Attachable": false,

"Ingress": false,

"ConfigFrom": {

"Network": ""

},

"ConfigOnly": false,

"Containers": {

"20ec4d84140c8e5b6bd183d51501c2c93a68748fd0b917c54d1986629132a872": {

"Name": "thirsty_poitras",

"EndpointID": "37e6bdd9da3b2841800372e018359a2f6ed76663c89a01e74032e8300bfca0c5",

"MacAddress": "02:42:ac:11:00:02",

"IPv4Address": "172.17.0.2/16",

"IPv6Address": ""

}

},

"Options": {

"com.docker.network.bridge.default_bridge": "true",

"com.docker.network.bridge.enable_icc": "true",

"com.docker.network.bridge.enable_ip_masquerade": "true",

"com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",

"com.docker.network.bridge.name": "docker0",

"com.docker.network.driver.mtu": "1500"

},

"Labels": {}

}

]

[root@zizhen02 ~]#

[root@zizhen02 ~]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

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

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

link/ether 00:0c:29:cb:78:e2 brd ff:ff:ff:ff:ff:ff

inet 192.168.1.107/24 brd 192.168.1.255 scope global noprefixroute ens33

valid_lft forever preferred_lft forever

inet6 fe80::20c:29ff:fecb:78e2/64 scope link

valid_lft forever preferred_lft forever

3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default

link/ether 02:42:d4:5d:cf:c5 brd ff:ff:ff:ff:ff:ff

inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0

valid_lft forever preferred_lft forever

inet6 fe80::42:d4ff:fe5d:cfc5/64 scope link

valid_lft forever preferred_lft forever

17: veth7b3ed30@if16: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default

link/ether d2:30:94:3a:f8:e7 brd ff:ff:ff:ff:ff:ff link-netnsid 0

inet6 fe80::d030:94ff:fe3a:f8e7/64 scope link

valid_lft forever preferred_lft forever

[root@zizhen02 ~]# docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

20ec4d84140c        busybox             "/bin/sh"           39 minutes ago      Up 39 minutes                           thirsty_poitras

[root@zizhen02 ~]# docker exec 20ec4d84140c ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000

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

16: eth0@if17: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue

link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff

inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0

valid_lft forever preferred_lft forever

[root@zizhen02 ~]#

#yum  install   bridge-utils 安装brctl命令

[root@zizhen02 ~]# brctl

Usage: brctl [commands]

commands:

addbr          <bridge>           add bridge

delbr            <bridge>           delete bridge

addif            <bridge> <device>   add interface to bridge

delif             <bridge> <device>   delete interface from bridge

hairpin           <bridge> <port> {on|off} turn hairpin on/off

setageing        <bridge> <time>                set ageing time

setbridgeprio   <bridge> <prio>                 set bridge priority

setfd            <bridge> <time>                set bridge forward delay

sethello          <bridge> <time>                set hello time

setmaxage      <bridge> <time>                set max message age

setpathcost     <bridge> <port> <cost>   set path cost

setportprio       <bridge> <port> <prio>   set port priority

show          [ <bridge> ]                show a list of bridges

showmacs     <bridge>           show a list of mac addrs

showstp        <bridge>           show bridge stp info

stp             <bridge> {on|off}     turn stp on/off

[root@zizhen02 ~]# brctl show

bridge name    bridge id            STP enabled     interfaces

docker0             8000.0242d45dcfc5 no              veth7b3ed30

[root@zizhen02 ~]#

[root@zizhen02 ~]# docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

241e3d0e5472        busybox             "/bin/sh"           13 seconds ago      Up 12 seconds                           test2

20ec4d84140c        busybox             "/bin/sh"           About an hour ago   Up About an hour                        thirsty_poitras

[root@zizhen02 ~]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

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

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

link/ether 00:0c:29:cb:78:e2 brd ff:ff:ff:ff:ff:ff

inet 192.168.1.107/24 brd 192.168.1.255 scope global noprefixroute ens33

valid_lft forever preferred_lft forever

inet6 fe80::20c:29ff:fecb:78e2/64 scope link

valid_lft forever preferred_lft forever

3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default

link/ether 02:42:d4:5d:cf:c5 brd ff:ff:ff:ff:ff:ff

inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0

valid_lft forever preferred_lft forever

inet6 fe80::42:d4ff:fe5d:cfc5/64 scope link

valid_lft forever preferred_lft forever

17: veth7b3ed30@if16: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default

link/ether d2:30:94:3a:f8:e7 brd ff:ff:ff:ff:ff:ff link-netnsid 0

inet6 fe80::d030:94ff:fe3a:f8e7/64 scope link

valid_lft forever preferred_lft forever

21: vethe2d3a11@if20: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default

link/ether c2:7c:c2:70:7a:83 brd ff:ff:ff:ff:ff:ff link-netnsid 1

inet6 fe80::c07c:c2ff:fe70:7a83/64 scope link

valid_lft forever preferred_lft forever

[root@zizhen02 ~]# docker exec test2 ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000

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

20: eth0@if21: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue

link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff

inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0

valid_lft forever preferred_lft forever

[root@zizhen02 ~]# docker exec 20ec4d84140c ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000

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

16: eth0@if17: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue

link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff

inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0

valid_lft forever preferred_lft forever

[root@zizhen02 ~]#

bridge name    bridge id            STP enabled     interfaces

docker0             8000.0242d45dcfc5 no              veth7b3ed30

vethe2d3a11

[root@zizhen02 ~]# docker network inspect bridge

[

{

"Name": "bridge",

"Id": "ba670d30bad79bfe622c99522aabfb60581181f4c69ebf42b0d6ca56904312a7",

"Created": "2019-03-17T16:25:22.229320555+08:00",

"Scope": "local",

"Driver": "bridge",

"EnableIPv6": false,

"IPAM": {

"Driver": "default",

"Options": null,

"Config": [

{

"Subnet": "172.17.0.0/16",

"Gateway": "172.17.0.1"

}

]

},

"Internal": false,

"Attachable": false,

"Ingress": false,

"ConfigFrom": {

"Network": ""

},

"ConfigOnly": false,

"Containers": {

"20ec4d84140c8e5b6bd183d51501c2c93a68748fd0b917c54d1986629132a872": {

"Name": "thirsty_poitras",

"EndpointID": "37e6bdd9da3b2841800372e018359a2f6ed76663c89a01e74032e8300bfca0c5",

"MacAddress": "02:42:ac:11:00:02",

"IPv4Address": "172.17.0.2/16",

"IPv6Address": ""

},

"241e3d0e5472226ed17d11c66dcaa33869c7f956c469c20e3e2494847c586bdb": {

"Name": "test2",

"EndpointID": "e21cb10c66681e19f67240a60199d37d34070a8aa3bf104d86048e72d447cd19",

"MacAddress": "02:42:ac:11:00:03",

"IPv4Address": "172.17.0.3/16",

"IPv6Address": ""

}

},

"Options": {

"com.docker.network.bridge.default_bridge": "true",

"com.docker.network.bridge.enable_icc": "true",

"com.docker.network.bridge.enable_ip_masquerade": "true",

"com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",

"com.docker.network.bridge.name": "docker0",

"com.docker.network.driver.mtu": "1500"

},

"Labels": {}

}

]

[root@zizhen02 ~]#

如何访问外网

32 Docker多容器通信:

--link  test1 #相当于给容器添加了一个dns记录;

[root@zizhen02 ~]# docker run -it --name=test1 busybox

/ #

/ #

/ # ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000

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

6: eth0@if7: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue

link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff

inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0

valid_lft forever preferred_lft forever

/ #

[root@zizhen02 ~]# docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

4e4298cae8d2        busybox             "sh"                5 minutes ago       Up 5 minutes                            test1

[root@zizhen02 ~]# docker run -it --name=test2 --link test1 busybox /bin/sh

/ #

/ # ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000

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

10: eth0@if11: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue

link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff

inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0

valid_lft forever preferred_lft forever

/ # ping 172.17.0.2

PING 172.17.0.2 (172.17.0.2): 56 data bytes

64 bytes from 172.17.0.2: seq=0 ttl=64 time=0.351 ms

64 bytes from 172.17.0.2: seq=1 ttl=64 time=0.160 ms

^C

--- 172.17.0.2 ping statistics ---

2 packets transmitted, 2 packets received, 0% packet loss

round-trip min/avg/max = 0.160/0.255/0.351 ms

/ # ping test1

PING test1 (172.17.0.2): 56 data bytes

64 bytes from 172.17.0.2: seq=0 ttl=64 time=0.171 ms

64 bytes from 172.17.0.2: seq=1 ttl=64 time=0.159 ms

64 bytes from 172.17.0.2: seq=2 ttl=64 time=0.160 ms

^C

--- test1 ping statistics ---

3 packets transmitted, 3 packets received, 0% packet loss

round-trip min/avg/max = 0.159/0.163/0.171 ms

/ # test1:3306^C

/ #

/ #

[root@zizhen02 ~]# docker run -it --name=test1 busybox

/ #

/ #

/ # ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000

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

6: eth0@if7: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue

link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff

inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0

valid_lft forever preferred_lft forever

/ #

/ # ping 172.17.0.3

PING 172.17.0.3 (172.17.0.3): 56 data bytes

64 bytes from 172.17.0.3: seq=0 ttl=64 time=0.264 ms

64 bytes from 172.17.0.3: seq=1 ttl=64 time=0.369 ms

^C

--- 172.17.0.3 ping statistics ---

2 packets transmitted, 2 packets received, 0% packet loss

round-trip min/avg/max = 0.264/0.316/0.369 ms

/ # ping test2

ping: bad address 'test2'

/ #

/ #

创建docker 的Network;

[root@zizhen02 ~]# docker network ls

NETWORK ID          NAME                DRIVER              SCOPE

a5950ee18ba0        bridge              bridge              local

63c3ce67f785        host                host                local

04734d810393        none                null                local

[root@zizhen02 ~]# docker network create -d bridge my-bridge

831bb402cb76aaf543a53652e1c24d7128b23ee34bcdf40f97e6d0dbb93dea48

[root@zizhen02 ~]# docker network ls

NETWORK ID          NAME                DRIVER              SCOPE

a5950ee18ba0        bridge              bridge              local

63c3ce67f785        host                host                local

831bb402cb76        my-bridge           bridge              local

04734d810393        none                null                local

[root@zizhen02 ~]#

[root@zizhen02 ~]# brctl show

bridge name    bridge id            STP enabled     interfaces

br-831bb402cb76              8000.02428cb086ee        no

docker0             8000.024230fa6b46         no              veth48b93cc

vethe56d79c

[root@zizhen02 ~]#

[root@zizhen02 ~]# docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

303720caaf49        busybox             "/bin/sh"           20 seconds ago      Up 18 seconds                           test3

3929edfaabbf        busybox             "/bin/sh"           9 minutes ago       Up 9 minutes                            test2

4e4298cae8d2        busybox             "sh"                15 minutes ago      Up 15 minutes                           test1

[root@zizhen02 ~]# brctl show

bridge name    bridge id            STP enabled     interfaces

br-831bb402cb76              8000.02428cb086ee        no              vetha25a34c

docker0             8000.024230fa6b46         no              veth48b93cc

vethe56d79c

[root@zizhen02 ~]# docker network inspect 831bb402cb76

[

{

"Name": "my-bridge",

"Id": "831bb402cb76aaf543a53652e1c24d7128b23ee34bcdf40f97e6d0dbb93dea48",

"Created": "2019-03-19T11:51:22.983099054+08:00",

"Scope": "local",

"Driver": "bridge",

"EnableIPv6": false,

"IPAM": {

"Driver": "default",

"Options": {},

"Config": [

{

"Subnet": "172.18.0.0/16",

"Gateway": "172.18.0.1"

}

]

},

"Internal": false,

"Attachable": false,

"Ingress": false,

"ConfigFrom": {

"Network": ""

},

"ConfigOnly": false,

"Containers": {

"303720caaf49932f8d7a90538869d7a4e4d0dca79f788c867e2ac654be90b905": {

"Name": "test3",

"EndpointID": "9d2ab6fdee54e5000af6782919de76330d9b2acecd99add74e9653ed6ff1624c",

"MacAddress": "02:42:ac:12:00:02",

"IPv4Address": "172.18.0.2/16",

"IPv6Address": ""

}

},

"Options": {},

"Labels": {}

}

]

[root@zizhen02 ~]#

[root@zizhen02 ~]# docker run -it --name test3 --network my-bridge busybox /bin/sh

/ # ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000

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

13: eth0@if14: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue

link/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ff

inet 172.18.0.2/16 brd 172.18.255.255 scope global eth0

valid_lft forever preferred_lft forever

/ #

#以上my-bridge 里有一个test3 ;my-bridge 连接到test3上了。

#将已有的容器test2 ,连接到my-bridge上;

[root@zizhen02 ~]# docker network

Usage:     docker network COMMAND

Manage networks

Commands:

connect     Connect a container to a network

create      Create a network

disconnect  Disconnect a container from a network

inspect     Display detailed information on one or more networks

ls          List networks

prune       Remove all unused networks

rm          Remove one or more networks

Run 'docker network COMMAND --help' for more information on a command.

[root@zizhen02 ~]# docker  ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

303720caaf49        busybox             "/bin/sh"           19 minutes ago      Up 19 minutes                           test3

3929edfaabbf        busybox             "/bin/sh"           28 minutes ago      Up 28 minutes                           test2

4e4298cae8d2        busybox             "sh"                34 minutes ago      Up 34 minutes                           test1

[root@zizhen02 ~]# docker network connect

"docker network connect" requires exactly 2 arguments.

See 'docker network connect --help'.

Usage:  docker network connect [OPTIONS] NETWORK CONTAINER

Connect a container to a network

[root@zizhen02 ~]# docker network connect my-bridge test2

[root@zizhen02 ~]# docker network ls

NETWORK ID          NAME                DRIVER              SCOPE

a5950ee18ba0        bridge              bridge              local

63c3ce67f785        host                host                local

831bb402cb76        my-bridge           bridge              local

04734d810393        none                null                local

[root@zizhen02 ~]# docker network inspect 831bb402cb76

[

{

"Name": "my-bridge",

"Id": "831bb402cb76aaf543a53652e1c24d7128b23ee34bcdf40f97e6d0dbb93dea48",

"Created": "2019-03-19T11:51:22.983099054+08:00",

"Scope": "local",

"Driver": "bridge",

"EnableIPv6": false,

"IPAM": {

"Driver": "default",

"Options": {},

"Config": [

{

"Subnet": "172.18.0.0/16",

"Gateway": "172.18.0.1"

}

]

},

"Internal": false,

"Attachable": false,

"Ingress": false,

"ConfigFrom": {

"Network": ""

},

"ConfigOnly": false,

"Containers": {

"303720caaf49932f8d7a90538869d7a4e4d0dca79f788c867e2ac654be90b905": {

"Name": "test3",

"EndpointID": "9d2ab6fdee54e5000af6782919de76330d9b2acecd99add74e9653ed6ff1624c",

"MacAddress": "02:42:ac:12:00:02",

"IPv4Address": "172.18.0.2/16",

"IPv6Address": ""

},

"3929edfaabbf9e483020bdddf16278527496e9cad87aa0068cadea32899d5c2a": {

"Name": "test2",

"EndpointID": "a04c261ab21a456e2c963644ae93b54077ca704d59df872f926545d989f97acf",

"MacAddress": "02:42:ac:12:00:03",

"IPv4Address": "172.18.0.3/16",

"IPv6Address": ""

}

},

"Options": {},

"Labels": {}

}

]

[root@zizhen02 ~]# docker network ls

NETWORK ID          NAME                DRIVER              SCOPE

a5950ee18ba0        bridge              bridge              local

63c3ce67f785        host                host                local

831bb402cb76        my-bridge           bridge              local

04734d810393        none                null                local

[root@zizhen02 ~]# docker network inspect a5950ee18ba0

[

{

"Name": "bridge",

"Id": "a5950ee18ba0f1ab93c5ae276f3123c4d657edef17d6fad9c5c13b23f952e507",

"Created": "2019-03-19T11:33:02.336302433+08:00",

"Scope": "local",

"Driver": "bridge",

"EnableIPv6": false,

"IPAM": {

"Driver": "default",

"Options": null,

"Config": [

{

"Subnet": "172.17.0.0/16",

"Gateway": "172.17.0.1"

}

]

},

"Internal": false,

"Attachable": false,

"Ingress": false,

"ConfigFrom": {

"Network": ""

},

"ConfigOnly": false,

"Containers": {

"3929edfaabbf9e483020bdddf16278527496e9cad87aa0068cadea32899d5c2a": {

"Name": "test2",

"EndpointID": "75b242bb36530983d83a602e128838fc32854b38553108575db53cbe2505912f",

"MacAddress": "02:42:ac:11:00:03",

"IPv4Address": "172.17.0.3/16",

"IPv6Address": ""

},

"4e4298cae8d2832a0381c3b722dd821f4bc29a1f5bc349eb755aa9a7a69417bd": {

"Name": "test1",

"EndpointID": "d6940d5fa36e857af209bafa330f23fab82dd685b1c89d5840b7c33953edf8c5",

"MacAddress": "02:42:ac:11:00:02",

"IPv4Address": "172.17.0.2/16",

"IPv6Address": ""

}

},

"Options": {

"com.docker.network.bridge.default_bridge": "true",

"com.docker.network.bridge.enable_icc": "true",

"com.docker.network.bridge.enable_ip_masquerade": "true",

"com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",

"com.docker.network.bridge.name": "docker0",

"com.docker.network.driver.mtu": "1500"

},

"Labels": {}

}

]

[root@zizhen02 ~]#test2

/ # ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000

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

10: eth0@if11: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue

link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff

inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0

valid_lft forever preferred_lft forever

15: eth1@if16: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue

link/ether 02:42:ac:12:00:03 brd ff:ff:ff:ff:ff:ff

inet 172.18.0.3/16 brd 172.18.255.255 scope global eth1

valid_lft forever preferred_lft forever

/ #

33 Docker的端口映射;

[root@zizhen02 ~]# docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

303720caaf49        busybox             "/bin/sh"           8 hours ago         Up 8 hours                              test3

3929edfaabbf        busybox             "/bin/sh"           8 hours ago         Up 8 hours                              test2

4e4298cae8d2        busybox             "sh"                8 hours ago         Up 8 hours                              test1

[root@zizhen02 ~]# docker container stop test1 test2 test3

test1

test2

test3

[root@zizhen02 ~]# docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

[root@zizhen02 ~]# docker ps -a

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                        PORTS               NAMES

303720caaf49        busybox             "/bin/sh"           8 hours ago         Exited (137) 12 seconds ago                       test3

3929edfaabbf        busybox             "/bin/sh"           8 hours ago         Exited (137) 12 seconds ago                       test2

4e4298cae8d2        busybox             "sh"                8 hours ago         Exited (137) 12 seconds ago                       test1

[root@zizhen02 ~]# docker rm $(docker ps -aq)

303720caaf49

3929edfaabbf

4e4298cae8d2

[root@zizhen02 ~]#

[root@zizhen02 ~]# docker run --name web -it nginx /bin/sh

##

[root@zizhen02 ~]# docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

5f282b674f11        nginx               "/bin/sh"           15 seconds ago      Up 14 seconds       80/tcp              web

[root@zizhen02 ~]# docker network ls

NETWORK ID          NAME                DRIVER              SCOPE

a5950ee18ba0        bridge              bridge              local

63c3ce67f785        host                host                local

831bb402cb76        my-bridge           bridge              local

04734d810393        none                null                local

[root@zizhen02 ~]# docker network

Usage:     docker network COMMAND

Manage networks

Commands:

connect     Connect a container to a network

create      Create a network

disconnect  Disconnect a container from a network

inspect     Display detailed information on one or more networks

ls          List networks

prune       Remove all unused networks

rm          Remove one or more networks

Run 'docker network COMMAND --help' for more information on a command.

[root@zizhen02 ~]# docker network inspect bridge

[

{

"Name": "bridge",

"Id": "a5950ee18ba0f1ab93c5ae276f3123c4d657edef17d6fad9c5c13b23f952e507",

"Created": "2019-03-19T11:33:02.336302433+08:00",

"Scope": "local",

"Driver": "bridge",

"EnableIPv6": false,

"IPAM": {

"Driver": "default",

"Options": null,

"Config": [

{

"Subnet": "172.17.0.0/16",

"Gateway": "172.17.0.1"

}

]

},

"Internal": false,

"Attachable": false,

"Ingress": false,

"ConfigFrom": {

"Network": ""

},

"ConfigOnly": false,

"Containers": {

"5f282b674f117e894241ff5a35b71c4e822531a0764c9794a9ab2f9e5d74a5f9": {

"Name": "web",

"EndpointID": "581ee02b485e99af966eae09c5c16800beb36c6800320c12a0bbd136f6c9cc82",

"MacAddress": "02:42:ac:11:00:02",

"IPv4Address": "172.17.0.2/16",

"IPv6Address": ""

}

},

"Options": {

"com.docker.network.bridge.default_bridge": "true",

"com.docker.network.bridge.enable_icc": "true",

"com.docker.network.bridge.enable_ip_masquerade": "true",

"com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",

"com.docker.network.bridge.name": "docker0",

"com.docker.network.driver.mtu": "1500"

},

"Labels": {}

}

]

[root@zizhen02 ~]#

[root@zizhen02 ~]# ping 172.17.0.2

PING 172.17.0.2 (172.17.0.2) 56(84) bytes of data.

64 bytes from 172.17.0.2: icmp_seq=1 ttl=64 time=0.090 ms

64 bytes from 172.17.0.2: icmp_seq=2 ttl=64 time=0.102 ms

64 bytes from 172.17.0.2: icmp_seq=3 ttl=64 time=0.101 ms

^C

--- 172.17.0.2 ping statistics ---

3 packets transmitted, 3 received, 0% packet loss, time 1999ms

rtt min/avg/max/mdev = 0.090/0.097/0.102/0.012 ms

[root@zizhen02 ~]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

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

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

link/ether 00:0c:29:cb:78:e2 brd ff:ff:ff:ff:ff:ff

inet 192.168.1.107/24 brd 192.168.1.255 scope global noprefixroute ens33

valid_lft forever preferred_lft forever

inet6 fe80::20c:29ff:fecb:78e2/64 scope link

valid_lft forever preferred_lft forever

3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default

link/ether 02:42:30:fa:6b:46 brd ff:ff:ff:ff:ff:ff

inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0

valid_lft forever preferred_lft forever

inet6 fe80::42:30ff:fefa:6b46/64 scope link

valid_lft forever preferred_lft forever

12: br-831bb402cb76: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default

link/ether 02:42:8c:b0:86:ee brd ff:ff:ff:ff:ff:ff

inet 172.18.0.1/16 brd 172.18.255.255 scope global br-831bb402cb76

valid_lft forever preferred_lft forever

inet6 fe80::42:8cff:feb0:86ee/64 scope link

valid_lft forever preferred_lft forever

22: vethc682429@if21: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default

link/ether be:55:99:e1:ae:0a brd ff:ff:ff:ff:ff:ff link-netnsid 0

inet6 fe80::bc55:99ff:fee1:ae0a/64 scope link

valid_lft forever preferred_lft forever

[root@zizhen02 ~]# docker network ls

NETWORK ID          NAME                DRIVER              SCOPE

a5950ee18ba0        bridge              bridge              local

63c3ce67f785        host                host                local

831bb402cb76        my-bridge           bridge              local

04734d810393        none                null                local

[root@zizhen02 ~]# brctl show

bridge name    bridge id            STP enabled     interfaces

br-831bb402cb76              8000.02428cb086ee        no

docker0             8000.024230fa6b46         no              vethc682429

[root@zizhen02 ~]# docker network inspect bridge

[

{

"Name": "bridge",

"Id": "a5950ee18ba0f1ab93c5ae276f3123c4d657edef17d6fad9c5c13b23f952e507",

"Created": "2019-03-19T11:33:02.336302433+08:00",

"Scope": "local",

"Driver": "bridge",

"EnableIPv6": false,

"IPAM": {

"Driver": "default",

"Options": null,

"Config": [

{

"Subnet": "172.17.0.0/16",

"Gateway": "172.17.0.1"

}

]

},

"Internal": false,

"Attachable": false,

"Ingress": false,

"ConfigFrom": {

"Network": ""

},

"ConfigOnly": false,

"Containers": {

"5f282b674f117e894241ff5a35b71c4e822531a0764c9794a9ab2f9e5d74a5f9": {

"Name": "web",

"EndpointID": "581ee02b485e99af966eae09c5c16800beb36c6800320c12a0bbd136f6c9cc82",

"MacAddress": "02:42:ac:11:00:02",

"IPv4Address": "172.17.0.2/16",

"IPv6Address": ""

}

},

"Options": {

"com.docker.network.bridge.default_bridge": "true",

"com.docker.network.bridge.enable_icc": "true",

"com.docker.network.bridge.enable_ip_masquerade": "true",

"com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",

"com.docker.network.bridge.name": "docker0",

"com.docker.network.driver.mtu": "1500"

},

"Labels": {}

}

]

[root@zizhen02 ~]#

[root@zizhen02 ~]# ping 172.17.0.2

PING 172.17.0.2 (172.17.0.2) 56(84) bytes of data.

64 bytes from 172.17.0.2: icmp_seq=1 ttl=64 time=0.087 ms

64 bytes from 172.17.0.2: icmp_seq=2 ttl=64 time=0.051 ms

^C

--- 172.17.0.2 ping statistics ---

2 packets transmitted, 2 received, 0% packet loss, time 999ms

rtt min/avg/max/mdev = 0.051/0.069/0.087/0.018 ms

[root@zizhen02 ~]# telnet 172.17.0.2 80

Trying 172.17.0.2...

Connected to 172.17.0.2.

Escape character is '^]'.

^CConnection closed by foreign host.

[root@zizhen02 ~]# curl  https://172.17.0.2

curl: (7) Failed connect to 172.17.0.2:443; Connection refused

[root@zizhen02 ~]# curl  http://172.17.0.2

<!DOCTYPE html>

<html>

<head>

<title>Welcome to nginx!</title>

<style>

body {

width: 35em;

margin: 0 auto;

font-family: Tahoma, Verdana, Arial, sans-serif;

}

</style>

</head>

<body>

<h1>Welcome to nginx!</h1>

<p>If you see this page, the nginx web server is successfully installed and

working. Further configuration is required.</p>

<p>For online documentation and support please refer to

<a href="http://nginx.org/">nginx.org</a>.<br/>

Commercial support is available at

<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>

</body>

</html>

[root@zizhen02 ~]#

[root@zizhen02 ~]# docker run --name web -it nginx

172.17.0.1 - - [19/Mar/2019:12:08:16 +0000] "\xFF\xF4\xFF\xFD\x06" 400 157 "-" "-" "-"

172.17.0.1 - - [19/Mar/2019:12:08:43 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.29.0" "-"

34 网络的none(安全性,容器没有IP)和host(复制本机IP)

[root@zizhen02 ~]# docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

[root@zizhen02 ~]# docker network ls

NETWORK ID          NAME                DRIVER              SCOPE

d3ae3a3a685b        bridge              bridge              local

63c3ce67f785        host                host                local

831bb402cb76        my-bridge           bridge              local

04734d810393        none                null                local

[root@zizhen02 ~]# docker images

REPOSITORY                             TAG                 IMAGE ID            CREATED             SIZE

ubuntu-stress                          latest              aee6e531355c        2 weeks ago         114MB

xiaoming163/python2.7-flask-hello      latest              b66a7f86bd45        2 weeks ago         918MB

xiaoming/centos-cmd                    latest              729b948e1319        2 weeks ago         202MB

xiaoming/centos-entrypoint-exec-new2   latest              249a9c95d9be        2 weeks ago         202MB

xiaoming/centos-entrypoint-shell       latest              344ec38e6b59        2 weeks ago         202MB

xiaoming163/centos-vim-new             latest              f9f19d2bc847        2 weeks ago         335MB

ubuntu                                 latest              94e814e2efa8        2 weeks ago         88.9MB

xiaoli163/hello-world                  latest              a821094d0306        2 weeks ago         857kB

python                                 2.7                 3be5dc25d0fa        3 weeks ago         914MB

nginx                                  latest              881bd08c0b08        3 weeks ago         109MB

busybox                                latest              d8233ab899d4        6 weeks ago         1.2MB

ubuntu                                 14.04               5dbc3f318ea5        2 months ago        188MB

centos                                 latest              1e1148e4cc2c        3 months ago        202MB

[root@zizhen02 ~]# docker run -d --name test1 --network none centos /bin/sh -c "while true; do sleep 3600; done"

afbcac0fcf7bb5d9aa2ea7dd52016b63c81651cee73086c801d7167b0f0e76c9

[root@zizhen02 ~]# docker ps

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES

afbcac0fcf7b        centos              "/bin/sh -c 'while t…"   8 seconds ago       Up 5 seconds                            test1

[root@zizhen02 ~]# docker network

Usage:     docker network COMMAND

Manage networks

Commands:

connect     Connect a container to a network

create      Create a network

disconnect  Disconnect a container from a network

inspect     Display detailed information on one or more networks

ls          List networks

prune       Remove all unused networks

rm          Remove one or more networks

Run 'docker network COMMAND --help' for more information on a command.

[root@zizhen02 ~]# docker network inspect none

[

{

"Name": "none",

"Id": "04734d810393e035502143a42546df16f46c75d6b3bb9724a6d1e1fa1a06655b",

"Created": "2019-03-09T19:48:34.111853947+08:00",

"Scope": "local",

"Driver": "null",

"EnableIPv6": false,

"IPAM": {

"Driver": "default",

"Options": null,

"Config": []

},

"Internal": false,

"Attachable": false,

"Ingress": false,

"ConfigFrom": {

"Network": ""

},

"ConfigOnly": false,

"Containers": {

"afbcac0fcf7bb5d9aa2ea7dd52016b63c81651cee73086c801d7167b0f0e76c9": {

"Name": "test1",

"EndpointID": "82f126807d6be5926a656b91dfe05c4677711fa5222b28b9d0225645bbfae6eb",

"MacAddress": "",

"IPv4Address": "",

"IPv6Address": ""

}

},

"Options": {},

"Labels": {}

}

]

[root@zizhen02 ~]# docker network ls

NETWORK ID          NAME                DRIVER              SCOPE

d3ae3a3a685b        bridge              bridge              local

63c3ce67f785        host                host                local

831bb402cb76        my-bridge           bridge              local

04734d810393        none                null                local

[root@zizhen02 ~]# docker exec -it test1 /bin/sh

sh-4.2#

sh-4.2#

sh-4.2# ip a

sh: ip: command not found

sh-4.2# ifconfig

sh: ifconfig: command not found

sh-4.2# ip a

sh: ip: command not found

sh-4.2# exit

exit

[root@zizhen02 ~]# docker exec -it test1 /bin/sh ip a

/bin/sh: ip: No such file or directory

[root@zizhen02 ~]# docker stop test1

test1

[root@zizhen02 ~]# docker ps -a

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS               NAMES

afbcac0fcf7b        centos              "/bin/sh -c 'while t…"   5 minutes ago       Exited (137) 17 seconds ago                       test1

[root@zizhen02 ~]# docker rm test1

test1

[root@zizhen02 ~]# docker ps -a

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

[root@zizhen02 ~]# docker run -d --name test1 --network host busybox /bin/sh -c "while true; do sleep 3600; done"

9658f41b026b65712fcd2cd05ef757a0cbd5359f05bca28511f8b5bb7d8270c7

[root@zizhen02 ~]# docker ps

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES

9658f41b026b        busybox             "/bin/sh -c 'while t…"   7 seconds ago       Up 5 seconds                            test1

[root@zizhen02 ~]# docker network inspect host

[

{

"Name": "host",

"Id": "63c3ce67f785e1d720a641f279d9dc96854a6fc83cd2a81d73b564d9a3289434",

"Created": "2019-03-09T19:48:34.125978113+08:00",

"Scope": "local",

"Driver": "host",

"EnableIPv6": false,

"IPAM": {

"Driver": "default",

"Options": null,

"Config": []

},

"Internal": false,

"Attachable": false,

"Ingress": false,

"ConfigFrom": {

"Network": ""

},

"ConfigOnly": false,

"Containers": {

"9658f41b026b65712fcd2cd05ef757a0cbd5359f05bca28511f8b5bb7d8270c7": {

"Name": "test1",

"EndpointID": "2d724f29c7c62b870b14839cb5e7c2e4a3dc9c617a108e1cb1b12aa1606202c4",

"MacAddress": "",

"IPv4Address": "",

"IPv6Address": ""

}

},

"Options": {},

"Labels": {}

}

]

[root@zizhen02 ~]# docker network ls

NETWORK ID          NAME                DRIVER              SCOPE

d3ae3a3a685b        bridge              bridge              local

63c3ce67f785        host                host                local

831bb402cb76        my-bridge           bridge              local

04734d810393        none                null                local

[root@zizhen02 ~]# docker exec -it test1 /bin/sh

/ #

/ #

/ # ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000

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

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000

link/ether 00:0c:29:cb:78:e2 brd ff:ff:ff:ff:ff:ff

inet 192.168.1.107/24 brd 192.168.1.255 scope global ens33

valid_lft forever preferred_lft forever

inet 192.168.1.110/24 brd 192.168.1.255 scope global secondary dynamic ens33

valid_lft 6019sec preferred_lft 6019sec

inet6 fe80::20c:29ff:fecb:78e2/64 scope link

valid_lft forever preferred_lft forever

3: br-831bb402cb76: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue

link/ether 02:42:56:03:f8:a5 brd ff:ff:ff:ff:ff:ff

inet 172.18.0.1/16 brd 172.18.255.255 scope global br-831bb402cb76

valid_lft forever preferred_lft forever

4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue

link/ether 02:42:0b:b3:c0:6a brd ff:ff:ff:ff:ff:ff

inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0

valid_lft forever preferred_lft forever

/ # exit

[root@zizhen02 ~]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000

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

2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

link/ether 00:0c:29:cb:78:e2 brd ff:ff:ff:ff:ff:ff

inet 192.168.1.107/24 brd 192.168.1.255 scope global noprefixroute ens33

valid_lft forever preferred_lft forever

inet 192.168.1.110/24 brd 192.168.1.255 scope global secondary dynamic ens33

valid_lft 6004sec preferred_lft 6004sec

inet6 fe80::20c:29ff:fecb:78e2/64 scope link

valid_lft forever preferred_lft forever

3: br-831bb402cb76: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default

link/ether 02:42:56:03:f8:a5 brd ff:ff:ff:ff:ff:ff

inet 172.18.0.1/16 brd 172.18.255.255 scope global br-831bb402cb76

valid_lft forever preferred_lft forever

4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default

link/ether 02:42:0b:b3:c0:6a brd ff:ff:ff:ff:ff:ff

inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0

valid_lft forever preferred_lft forever

[root@zizhen02 ~]#

35Docker在多容器中部署:(-e参数在容器中设置环境变量)

[root@zizhen02 ~]# mkdir flask-redis

[root@zizhen02 ~]# cd flask-redis/

[root@zizhen02 flask-redis]# pwd

/root/flask-redis

[root@zizhen02 flask-redis]# vim Dockerfile

[root@zizhen02 flask-redis]# more Dockerfile

FROM python:2.7

LABEL maintaner="Xiao ming"

COPY . /app

WORKDIR /app

RUN pip install flask redis

EXPOSE 5000

CMD [ "python","app.py" ]

[root@zizhen02 flask-redis]# ls

Dockerfile

[root@zizhen02 flask-redis]# vim app.py

[root@zizhen02 flask-redis]# more app.py

from flask import Flask

from redis import Redis

import os

import socket

app = Flask(__name__)

redis = Redis(host=os.environ.get('REDIS_HOST','127.0.0.1'), port=6379)

@app.route('/')

def hello():

redis.incr('hits')

return 'Hello Container world! I have been seen %s times and my hostname is %s.\n' % (redis.get('hit

s'),socket.gethostname())

if __name__=="__main__":

app.run(host="0.0.0.0", port=5000, debug=True)

[root@zizhen02 flask-redis]#

[root@zizhen02 flask-redis]# docker ps

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES

9658f41b026b        busybox             "/bin/sh -c 'while t…"   About an hour ago   Up About an hour                        test1

[root@zizhen02 flask-redis]# docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

[root@zizhen02 flask-redis]# docker run -d --name redis redis

67bd34c155034966f903d2f6d446012846a996855c08fa7dc7f98c34b8addf2a

[root@zizhen02 flask-redis]# docker ps

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES

67bd34c15503        redis               "docker-entrypoint.s…"   7 seconds ago       Up 4 seconds        6379/tcp            redis

[root@zizhen02 flask-redis]# docker build -t xiaoming163/flask-redis

"docker build" requires exactly 1 argument.

See 'docker build --help'.

Usage:  docker build [OPTIONS] PATH | URL | -

Build an image from a Dockerfile

[root@zizhen02 flask-redis]# ls

app.py  Dockerfile

[root@zizhen02 flask-redis]# docker build -t xiaoming163/flask-redis .

Sending build context to Docker daemon  3.072kB

Step 1/7 : FROM python:2.7

---> 3be5dc25d0fa

Step 2/7 : LABEL maintaner="Xiao ming"

---> Running in 9d474f0860e0

Removing intermediate container 9d474f0860e0

---> 84f0c1ed87e0

Step 3/7 : COPY . /app

---> 91afb3fb25e6

Step 4/7 : WORKDIR /app

---> Running in 8e306dfce059

Removing intermediate container 8e306dfce059

---> 5bd7c1fb4f3b

Step 5/7 : RUN pip install flask redis

---> Running in a0085bc60886

DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7.

Collecting flask

Downloading https://files.pythonhosted.org/packages/7f/e7/08578774ed4536d3242b14dacb4696386634607af824ea997202cd0edb4b/Flask-1.0.2-py2.py3-none-any.whl (91kB)

Collecting redis

Downloading https://files.pythonhosted.org/packages/ac/a7/cff10cc5f1180834a3ed564d148fb4329c989cbb1f2e196fc9a10fa07072/redis-3.2.1-py2.py3-none-any.whl (65kB)

Collecting itsdangerous>=0.24 (from flask)

Downloading https://files.pythonhosted.org/packages/76/ae/44b03b253d6fade317f32c24d100b3b35c2239807046a4c953c7b89fa49e/itsdangerous-1.1.0-py2.py3-none-any.whl

Collecting Jinja2>=2.10 (from flask)

Downloading https://files.pythonhosted.org/packages/7f/ff/ae64bacdfc95f27a016a7bed8e8686763ba4d277a78ca76f32659220a731/Jinja2-2.10-py2.py3-none-any.whl (126kB)

Collecting Werkzeug>=0.14 (from flask)

Downloading https://files.pythonhosted.org/packages/24/4d/2fc4e872fbaaf44cc3fd5a9cd42fda7e57c031f08e28c9f35689e8b43198/Werkzeug-0.15.1-py2.py3-none-any.whl (328kB)

Collecting click>=5.1 (from flask)

Downloading https://files.pythonhosted.org/packages/fa/37/45185cb5abbc30d7257104c434fe0b07e5a195a6847506c074527aa599ec/Click-7.0-py2.py3-none-any.whl (81kB)

Collecting MarkupSafe>=0.23 (from Jinja2>=2.10->flask)

Downloading https://files.pythonhosted.org/packages/fb/40/f3adb7cf24a8012813c5edb20329eb22d5d8e2a0ecf73d21d6b85865da11/MarkupSafe-1.1.1-cp27-cp27mu-manylinux1_x86_64.whl

Installing collected packages: itsdangerous, MarkupSafe, Jinja2, Werkzeug, click, flask, redis

Successfully installed Jinja2-2.10 MarkupSafe-1.1.1 Werkzeug-0.15.1 click-7.0 flask-1.0.2 itsdangerous-1.1.0 redis-3.2.1

Removing intermediate container a0085bc60886

---> 515d6e526f2d

Step 6/7 : EXPOSE 5000

---> Running in a1add999fcee

Removing intermediate container a1add999fcee

---> bb4895bebac6

Step 7/7 : CMD [ "python","app.py" ]

---> Running in 0e036491cdf4

Removing intermediate container 0e036491cdf4

---> ff38b69e7d87

Successfully built ff38b69e7d87

Successfully tagged xiaoming163/flask-redis:latest

[root@zizhen02 flask-redis]# docker image ls

REPOSITORY                             TAG                 IMAGE ID            CREATED             SIZE

xiaoming163/flask-redis                latest              ff38b69e7d87        14 seconds ago      919MB

oraclelinux                            latest              62a654b8236d        30 hours ago        235MB

python                                 3.6                 2bb3204ab1d1        3 days ago          924MB

redis                                  latest              a55fbf438dfd        4 days ago          95MB

ubuntu-stress                          latest              aee6e531355c        2 weeks ago         114MB

xiaoming163/python2.7-flask-hello      latest              b66a7f86bd45        2 weeks ago         918MB

xiaoming/centos-cmd                    latest              729b948e1319        2 weeks ago         202MB

xiaoming/centos-entrypoint-exec-new2   latest              249a9c95d9be        2 weeks ago         202MB

xiaoming/centos-entrypoint-shell       latest              344ec38e6b59        2 weeks ago         202MB

xiaoming163/centos-vim-new             latest              f9f19d2bc847        2 weeks ago         335MB

ubuntu                                 latest              94e814e2efa8        2 weeks ago         88.9MB

xiaoli163/hello-world                  latest              a821094d0306        2 weeks ago         857kB

python                                 2.7                 3be5dc25d0fa        3 weeks ago         914MB

nginx                                  latest              881bd08c0b08        3 weeks ago         109MB

busybox                                latest              d8233ab899d4        6 weeks ago         1.2MB

ubuntu                                 14.04               5dbc3f318ea5        2 months ago        188MB

centos                                 latest              1e1148e4cc2c        3 months ago        202MB

[root@zizhen02 flask-redis]# docker run -d --link redis --name flask-redis -e REDIS_HOST=redis xiaoming163/flask-redis

25f34556015a9a96421494478c8375d77f052ad59a726662550616c7a62accc8

[root@zizhen02 flask-redis]# docker ps

CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS              PORTS               NAMES

25f34556015a        xiaoming163/flask-redis   "python app.py"          7 seconds ago       Up 5 seconds        5000/tcp            flask-redis

67bd34c15503        redis                     "docker-entrypoint.s…"   15 minutes ago      Up 14 minutes       6379/tcp            redis

[root@zizhen02 flask-redis]# docker exec -it flask-redis /bin/bash

root@25f34556015a:/app#

root@25f34556015a:/app# env

REDIS_PORT_6379_TCP_PROTO=tcp

REDIS_PORT=tcp://172.17.0.2:6379

REDIS_NAME=/flask-redis/redis

LANG=C.UTF-8

HOSTNAME=25f34556015a

REDIS_PORT_6379_TCP_ADDR=172.17.0.2

REDIS_PORT_6379_TCP=tcp://172.17.0.2:6379

GPG_KEY=C01E1CAD5EA2C4F0B8E3571504C367C218ADD4FF

PYTHONIOENCODING=UTF-8

REDIS_ENV_REDIS_DOWNLOAD_URL=http://download.redis.io/releases/redis-5.0.4.tar.gz

REDIS_HOST=redis

PWD=/app

HOME=/root

REDIS_PORT_6379_TCP_PORT=6379

TERM=xterm

REDIS_ENV_REDIS_DOWNLOAD_SHA=3ce9ceff5a23f60913e1573f6dfcd4aa53b42d4a2789e28fa53ec2bd28c987dd

REDIS_ENV_GOSU_VERSION=1.10

PYTHON_VERSION=2.7.16

SHLVL=1

PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

REDIS_ENV_REDIS_VERSION=5.0.4

PYTHON_PIP_VERSION=19.0.3

_=/usr/bin/env

root@25f34556015a:/app# ping redis

PING redis (172.17.0.2) 56(84) bytes of data.

64 bytes from redis (172.17.0.2): icmp_seq=1 ttl=64 time=0.371 ms

64 bytes from redis (172.17.0.2): icmp_seq=2 ttl=64 time=0.116 ms

64 bytes from redis (172.17.0.2): icmp_seq=3 ttl=64 time=0.119 ms

^C

--- redis ping statistics ---

3 packets transmitted, 3 received, 0% packet loss, time 2002ms

rtt min/avg/max/mdev = 0.116/0.202/0.371/0.119 ms

root@25f34556015a:/app# redis:6379

bash: redis:6379: command not found

root@25f34556015a:/app# curl 127.0.0.1:5000

Hello Container world! I have been seen 1 times and my hostname is 25f34556015a.

root@25f34556015a:/app# curl 127.0.0.1:5000

Hello Container world! I have been seen 2 times and my hostname is 25f34556015a.

root@25f34556015a:/app# curl 127.0.0.1:5000

Hello Container world! I have been seen 3 times and my hostname is 25f34556015a.

root@25f34556015a:/app# curl 127.0.0.1:5000

Hello Container world! I have been seen 4 times and my hostname is 25f34556015a.

root@25f34556015a:/app# curl 127.0.0.1:5000

Hello Container world! I have been seen 5 times and my hostname is 25f34556015a.

root@25f34556015a:/app# redis

bash: redis: command not found

root@25f34556015a:/app# exit

exit

[root@zizhen02 flask-redis]# docker ps

CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS              PORTS               NAMES

25f34556015a        xiaoming163/flask-redis   "python app.py"          4 minutes ago       Up 4 minutes        5000/tcp            flask-redis

67bd34c15503        redis                     "docker-entrypoint.s…"   18 minutes ago      Up 18 minutes       6379/tcp            redis

[root@zizhen02 flask-redis]# curl 127.0.0.1:5000

curl: (7) Failed connect to 127.0.0.1:5000; Connection refused

[root@zizhen02 flask-redis]#

[root@zizhen02 flask-redis]# docker stop redis

redis

[root@zizhen02 flask-redis]# docker start redis

redis

[root@zizhen02 flask-redis]# docker stop flask-redis

flask-redis

[root@zizhen02 flask-redis]# docker rm flask-redis

flask-redis

[root@zizhen02 flask-redis]# docker ps

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES

67bd34c15503        redis               "docker-entrypoint.s…"   21 minutes ago      Up 53 seconds       6379/tcp            redis

[root@zizhen02 flask-redis]# docker run -d -p 5000:5000 --link redis --name flask-redis -e REDIS_HOST=redis xiaoming163/flask-redis

e9508debfcf81e0acfbc77165c92a97d162764c65e306da013b6df25f9aa7070

[root@zizhen02 flask-redis]#

[root@zizhen02 flask-redis]# docker ps

CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS              PORTS                    NAMES

e9508debfcf8        xiaoming163/flask-redis   "python app.py"          6 seconds ago       Up 4 seconds        0.0.0.0:5000->5000/tcp   flask-redis

67bd34c15503        redis                     "docker-entrypoint.s…"   21 minutes ago      Up About a minute   6379/tcp                 redis

[root@zizhen02 flask-redis]# curl 127.0.0.1:5000

Hello Container world! I have been seen 6 times and my hostname is e9508debfcf8.

[root@zizhen02 flask-redis]# curl 127.0.0.1:5000

Hello Container world! I have been seen 7 times and my hostname is e9508debfcf8.

[root@zizhen02 flask-redis]# curl 127.0.0.1:5000

Hello Container world! I have been seen 8 times and my hostname is e9508debfcf8.

[root@zizhen02 flask-redis]# curl 127.0.0.1:5000

Hello Container world! I have been seen 9 times and my hostname is e9508debfcf8.

[root@zizhen02 flask-redis]# curl 127.0.0.1:5000

Hello Container world! I have been seen 10 times and my hostname is e9508debfcf8.

[root@zizhen02 flask-redis]#

-e 参数的使用

[root@zizhen02 ~]# docker run -d --name test2 -e PENG=xiaoming busybox /bin/sh -c "while true; do sleep 3600; done"

a5de8377b6259dc336168f1ea7e58ee5cc6181089230b5bc33ed7d9d686c2eaf

[root@zizhen02 ~]# docker exec -it test2 /bin/sh

/ # env

HOSTNAME=a5de8377b625

SHLVL=1

HOME=/root

TERM=xterm

PENG=xiaoming

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

PWD=/

/ # exit

[root@zizhen02 ~]#

[root@zizhen02 ~]#

[root@zizhen02 ~]# docker run -d --name test3 -e PENG=lili busybox /bin/sh -c "while true; do sleep 3600; done"

c51f1e7cb1d6babcdd13c75f49ca49de8b7256ed7a53497af63737ec6d3313df

[root@zizhen02 ~]# docker exec -it test3 /bin/sh

/ #

/ # env

HOSTNAME=c51f1e7cb1d6

SHLVL=1

HOME=/root

TERM=xterm

PENG=lili

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

PWD=/

/ #

36,37 Docke overlay网络和etcd通信