01 docker网络模型详解


1、容器的网络模型

(1)closed container

[root@node1 ~]# docker run -it --name test --rm --net none busybox:latest /bin/sh

/ # ifconfig -a

lo        Link encap:Local Loopback  

 inet addr:127.0.0.1  Mask:255.0.0.0

 inet6 addr: ::1/128 Scope:Host

 UP LOOPBACK RUNNING  MTU:65536  Metric:1

 RX packets:0 errors:0 dropped:0 overruns:0 frame:0

 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

 collisions:0 txqueuelen:0 

 RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

#仅有lo接口,没有其他网络接口


(2)bridged container

[root@node1 ~]# docker run -it --rm --name test busybox:latest /bin/sh

/ # ifconfig

eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:02  

 inet addr:172.17.0.2  Bcast:0.0.0.0  Mask:255.255.0.0

 inet6 addr: fe80::42:acff:fe11:2/64 Scope:Link

 UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

 RX packets:8 errors:0 dropped:0 overruns:0 frame:0

 TX packets:8 errors:0 dropped:0 overruns:0 carrier:0

 collisions:0 txqueuelen:0 

 RX bytes:648 (648.0 B)  TX bytes:648 (648.0 B)


lo        Link encap:Local Loopback  

 inet addr:127.0.0.1  Mask:255.0.0.0

 inet6 addr: ::1/128 Scope:Host

 UP LOOPBACK RUNNING  MTU:65536  Metric:1

 RX packets:0 errors:0 dropped:0 overruns:0 frame:0

 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

 collisions:0 txqueuelen:0 

 RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)


#启动时设定主机名  

[root@node1 ~]# docker run -it --rm --name test -h myhost.magedu.com busybox:latest /bin/sh

/ # hostname

myhost.magedu.com


#启动时设定DNS

[root@node1 ~]# docker run -it --rm --name test -h myhost.magedu.com --dns 172.16.0.1 busybox:latest /bin/sh

/ # nslookup docker.com

Server:    172.16.0.1

Address 1: 172.16.0.1


nslookup: can't resolve 'docker.com'

/ # cat /etc/resolv.conf 

nameserver 172.16.0.1


#启动时在hosts中设定域名解决

[root@node1 ~]# docker run -it --rm --name test -h myhost.magedu.com --dns 172.16.0.1 --add-host "docker.com:172.16.100.1" busybox:latest /bin/sh

/ # nslookup docker.com

Server:    172.16.0.1

Address 1: 172.16.0.1


Name:      docker.com

Address 1: 172.16.100.1 docker.com

/ # cat /etc/hosts

127.0.0.1       localhost

::1     localhost ip6-localhost ip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

172.16.100.1    docker.com

172.17.0.2      myhost.magedu.com myhost


#docker0 NAT桥模型上的容器发布给外部网络访问

#把docker容器的80端口映射至主机上的某随机端口(从32768端口开始)

[root@node1 ~]# docker run -it --rm -p 80 --net bridge --name web busybox:latest /bin/sh

[root@node1 ~]# docker port web

80/tcp -> 0.0.0.0:32768

[root@node1 ~]# ss -tnl

State       Recv-Q Send-Q Local Address:Port               Peer Address:Port              

LISTEN      0      5      192.168.122.1:53                        *:*                  

LISTEN      0      128           *:22                        *:*                  

LISTEN      0      128    127.0.0.1:631                       *:*                  

LISTEN      0      100    127.0.0.1:25                        *:*                  

LISTEN      0      128          :::22                       :::*                  

LISTEN      0      128         ::1:631                      :::*                  

LISTEN      0      100         ::1:25                       :::*                  

LISTEN      0      128          :::32768                    :::*               

/ # mkdir -p /web/html

/ # vi /web/html/index.html

<h1>From Web Container</h1>

/ # httpd -f -v -h /web/html/

宿主机访问

http://192.168.1.131:32768


[root@node1 ~]# iptables -t nat -vnL

Chain PREROUTING (policy ACCEPT 64 packets, 5989 bytes)

pkts bytes target     prot opt in     out     source               destination         

  65  4596 DOCKER     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ADDRTYPE match dst-type LOCAL


Chain INPUT (policy ACCEPT 63 packets, 5760 bytes)

pkts bytes target     prot opt in     out     source               destination         


Chain OUTPUT (policy ACCEPT 91 packets, 5686 bytes)

pkts bytes target     prot opt in     out     source               destination         

3   180 DOCKER     all  --  *      *       0.0.0.0/0           !127.0.0.0/8          ADDRTYPE match dst-type LOCAL


Chain POSTROUTING (policy ACCEPT 98 packets, 6074 bytes)

pkts bytes target     prot opt in     out     source               destination         

  89  5619 MASQUERADE  all  --  *      !docker0  172.17.0.0/16        0.0.0.0/0           

0     0 MASQUERADE  tcp  --  *      *       172.17.0.3           172.17.0.3           tcp dpt:80


Chain DOCKER (2 references)

pkts bytes target     prot opt in     out     source               destination         

0     0 RETURN     all  --  docker0 *       0.0.0.0/0            0.0.0.0/0           

7   388 DNAT       tcp  --  !docker0 *       0.0.0.0/0            0.0.0.0/0            tcp dpt:32768 to:172.17.0.3:80

#在POSTROUTING和DOCKER中各添加一条规则,一旦容器被删除,添加的规则自动被删除


#将主机的80端口映射至容器的80端口

[root@node1 ~]# docker run -it --rm -p 80:80 --net bridge --name web busybox:latest /bin/sh 

[root@node1 ~]# docker port web

80/tcp -> 0.0.0.0:80


#发布所有端口,指明要公开的端口为80,8080,443

[root@node1 ~]# docker run -it --rm -P  --expose 80 --expose 8080 --expose 443 --net bridge --name web busybox:latest /bin/sh

[root@node1 ~]# docker port web

80/tcp -> 0.0.0.0:32771

8080/tcp -> 0.0.0.0:32769

443/tcp -> 0.0.0.0:32770

[root@node1 ~]# docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS                                                                    NAMES

7cf269b12b50        busybox:latest      "/bin/sh"           About a minute ago   Up About a minute   0.0.0.0:32771->80/tcp, 0.0.0.0:32770->443/tcp, 0.0.0.0:32769->8080/tcp   web

(3) 联盟式容器

启动一个容器joind_web,让其使用已经存在的容器web的网络名称空间


#跟已存在的web容器的IP地址一样

[root@node1 ~]# docker run --rm --name joided_web --net container:web busybox:latest ifconfig -aeth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:02  

 inet addr:172.17.0.2  Bcast:0.0.0.0  Mask:255.255.0.0

 inet6 addr: fe80::42:acff:fe11:2/64 Scope:Link

 UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

 RX packets:8 errors:0 dropped:0 overruns:0 frame:0

 TX packets:8 errors:0 dropped:0 overruns:0 carrier:0

 collisions:0 txqueuelen:0 

 RX bytes:648 (648.0 B)  TX bytes:648 (648.0 B)


lo        Link encap:Local Loopback  

 inet addr:127.0.0.1  Mask:255.0.0.0

 inet6 addr: ::1/128 Scope:Host

 UP LOOPBACK RUNNING  MTU:65536  Metric:1

 RX packets:0 errors:0 dropped:0 overruns:0 frame:0

 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

 collisions:0 txqueuelen:0 

 RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

/ # ifconfig

eth0      Link encap:Ethernet  HWaddr 02:42:AC:11:00:02  

 inet addr:172.17.0.2  Bcast:0.0.0.0  Mask:255.255.0.0

 inet6 addr: fe80::42:acff:fe11:2/64 Scope:Link

 UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

 RX packets:12 errors:0 dropped:0 overruns:0 frame:0

 TX packets:12 errors:0 dropped:0 overruns:0 carrier:0

 collisions:0 txqueuelen:0 

 RX bytes:1066 (1.0 KiB)  TX bytes:996 (996.0 B)


lo        Link encap:Local Loopback  

 inet addr:127.0.0.1  Mask:255.0.0.0

 inet6 addr: ::1/128 Scope:Host

 UP LOOPBACK RUNNING  MTU:65536  Metric:1

 RX packets:0 errors:0 dropped:0 overruns:0 frame:0

 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0

 collisions:0 txqueuelen:0 

 RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

 


#跟已存在的web容器监听的端口一样

/ # httpd

/ # netstat -tan

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address           Foreign Address         State       

tcp        0      0 :::80                   :::*                    LISTEN   

[root@node1 ~]# docker run --rm --name joided_web --net container:web busybox:latest netstat -tan

Active Internet connections (servers and established)

Proto Recv-Q Send-Q Local Address           Foreign Address         State       

tcp        0      0 :::80                   :::*                    LISTEN 


#容器使用宿主机的网络地址

[root@node1 ~]# docker run -it --rm  --net host --name web busybox:latest /bin/sh

/ # ifconfig

docker0   Link encap:Ethernet  HWaddr 02:42:F5:88:C0:2F  

 inet addr:172.17.0.1  Bcast:0.0.0.0  Mask:255.255.0.0

 inet6 addr: fe80::42:f5ff:fe88:c02f/64 Scope:Link

 UP BROADCAST MULTICAST  MTU:1500  Metric:1

 RX packets:2698 errors:0 dropped:0 overruns:0 frame:0

 TX packets:3447 errors:0 dropped:0 overruns:0 carrier:0

 collisions:0 txqueuelen:0 

 RX bytes:156234 (152.5 KiB)  TX bytes:10177850 (9.7 MiB)


eno16777736 Link encap:Ethernet  HWaddr 00:0C:29:50:27:C4  

 inet addr:192.168.1.131  Bcast:192.168.1.255  Mask:255.255.255.0

 inet6 addr: fe80::20c:29ff:fe50:27c4/64 Scope:Link

 UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

 RX packets:679372 errors:0 dropped:6 overruns:0 frame:0

 TX packets:247168 errors:0 dropped:0 overruns:0 carrier:0

 collisions:0 txqueuelen:1000 

 RX bytes:375438208 (358.0 MiB)  TX bytes:46560004 (44.4 MiB)


lo        Link encap:Local Loopback  

 inet addr:127.0.0.1  Mask:255.0.0.0

 inet6 addr: ::1/128 Scope:Host

 UP LOOPBACK RUNNING  MTU:65536  Metric:1

 RX packets:6951 errors:0 dropped:0 overruns:0 frame:0

 TX packets:6951 errors:0 dropped:0 overruns:0 carrier:0

 collisions:0 txqueuelen:0 

 RX bytes:21397144 (20.4 MiB)  TX bytes:21397144 (20.4 MiB)

 

[root@node1 ~]# docker run -it --rm  --net host --name web centos:latest /bin/bash

[root@node1 /]# yum  -y install iproute

[root@node1 /]# ip addr list

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

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

link/ether 00:0c:29:50:27:c4 brd ff:ff:ff:ff:ff:ff

inet 192.168.1.131/24 brd 192.168.1.255 scope global eno16777736

  valid_lft forever preferred_lft forever

inet6 fe80::20c:29ff:fe50:27c4/64 scope link 

  valid_lft forever preferred_lft forever

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

link/ether 02:42:f5:88:c0:2f brd ff:ff:ff:ff:ff:ff

inet 172.17.0.1/16 scope global docker0

  valid_lft forever preferred_lft forever

inet6 fe80::42:f5ff:fe88:c02f/64 scope link 

  valid_lft forever preferred_lft forever

[root@node1 /]# yum -y install httpd


[root@node1 ~]# docker run --name web --net bridge busybox:latest httpd

[root@node1 ~]# docker ps -a

CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS                          PORTS               NAMES

9f9591b73bb2        busybox:latest      "httpd"             About a minute ago   Exited (0) About a minute ago                       web

[root@node1 ~]# docker rm web

web

[root@node1 ~]# docker run --name web --net bridge busybox:latest httpd -f

[root@node1 ~]# docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

ca8b05d52a28        busybox:latest      "httpd -f"          47 seconds ago      Up 45 seconds                           web

[root@node1 ~]# docker kill web

web

[root@node1 ~]# docker rm web

web


#让docker容器在后台运行

[root@node1 ~]# docker  run -d --name web --net bridge -p 80:80 busybox:latest httpd -f  

c9455d2691b7b72689893119d257937c74242c325b4c3d4f2bdb099cbee6700f

[root@node1 ~]# docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                NAMES

c9455d2691b7        busybox:latest      "httpd -f"          50 seconds ago      Up 48 seconds       0.0.0.0:80->80/tcp   web

inspect命令:

#查看IP地址

[root@node1 ~]# docker inspect -f ``.`NetworkSettings`.`IPAddress` web

172.17.0.2

#查看进程号

[root@node1 ~]# docker inspect -f ``.`State`.`Pid` web                         

62887


[root@node1 ~]# docker top web

UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD

root                62887               18715               0                   21:27               ?                   00:00:00            httpd -f


02 dockerfile详解


[root@node1 ~]# vim test.dockerfile

# Mage Edu

FROM busybox:latest

MAINTAINER MageEdu <mage@magedu.com>

COPY index.html /web/html/index.html


EXPOSE 80/tcp


CMD ["httpd", "-f", "-h", "/web/html"]


[root@node1 ~]# vim index.html

<h1>From Docker Container(Dockerfile)</h1>

[root@node1 ~]# mkdir docker

[root@node1 ~]# mv index.html docker/  

[root@node1 ~]# mv test.dockerfile docker/

[root@node1 ~]# docker build -f docker/test.dockerfile docker/

Sending build context to Docker daemon 3.072 kB

Step 1 : FROM busybox:latest

 ---> 7968321274dc

Step 2 : MAINTAINER MageEdu <mage@magedu.com>

 ---> Running in f3d1afc8cab3

 ---> ad76be7eb604

Removing intermediate container f3d1afc8cab3

Step 3 : COPY index.html /web/html/index.html

 ---> 8b38e8071ddd

Removing intermediate container b788fa3a1c94

Step 4 : CMD httpd -f -h /web/html

 ---> Running in a2b6a483f15b

 ---> 2cde4a22e191

Removing intermediate container a2b6a483f15b

Successfully built 2cde4a22e191

[root@node1 ~]# docker p_w_picpaths 

REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE

<none>                       <none>              2cde4a22e191        4 minutes ago       1.11 MB

centos                       newuser             4b761c9a987a        6 days ago          192.1 MB

192.168.1.132:5000/busybox   1.2.1               7968321274dc        2 weeks ago         1.11 MB

docker.io/busybox            latest              7968321274dc        2 weeks ago         1.11 MB

docker.io/centos             latest              67591570dd29        6 weeks ago         191.8 MB


[root@node1 ~]# docker build -f docker/test.dockerfile -t busybox:webserver docker/

Sending build context to Docker daemon 3.072 kB

Step 1 : FROM busybox:latest

 ---> 7968321274dc

Step 2 : MAINTAINER MageEdu <mage@magedu.com>

 ---> Using cache

 ---> ad76be7eb604

Step 3 : COPY index.html /web/html/index.html

 ---> Using cache

 ---> 8b38e8071ddd

Step 4 : CMD httpd -f -h /web/html

 ---> Using cache

 ---> 2cde4a22e191

Successfully built 2cde4a22e191  


[root@node1 ~]# docker p_w_picpaths 

REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE

busybox                      webserver           2cde4a22e191        7 minutes ago       1.11 MB

centos                       newuser             4b761c9a987a        6 days ago          192.1 MB

192.168.1.132:5000/busybox   1.2.1               7968321274dc        2 weeks ago         1.11 MB

docker.io/busybox            latest              7968321274dc        2 weeks ago         1.11 MB

docker.io/centos             latest              67591570dd29        6 weeks ago         191.8 MB


[root@node1 ~]# docker build -f docker/test.dockerfile -t busybox:web2 docker/

Sending build context to Docker daemon 3.072 kB

Step 1 : FROM busybox:latest

 ---> 7968321274dc

Step 2 : MAINTAINER MageEdu <mage@magedu.com>

 ---> Using cache

 ---> ad76be7eb604

Step 3 : COPY index.html /web/html/index.html

 ---> Using cache

 ---> 8b38e8071ddd

Step 4 : EXPOSE 80/tcp

 ---> Running in caad20a45dd8

 ---> 95351c4c60d3

Removing intermediate container caad20a45dd8

Step 5 : CMD httpd -f -h /web/html

 ---> Running in 3b6066935b57

 ---> ec5bd0d26b61

Removing intermediate container 3b6066935b57

Successfully built ec5bd0d26b61

[root@node1 ~]# docker p_w_picpaths 

REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE

busybox                      web2                ec5bd0d26b61        7 seconds ago       1.11 MB

busybox                      webserver           2cde4a22e191        10 minutes ago      1.11 MB

centos                       newuser             4b761c9a987a        6 days ago          192.1 MB

192.168.1.132:5000/busybox   1.2.1               7968321274dc        2 weeks ago         1.11 MB

docker.io/busybox            latest              7968321274dc        2 weeks ago         1.11 MB

docker.io/centos             latest              67591570dd29        6 weeks ago         191.8 MB


[root@node1 ~]# docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                NAMES

c9455d2691b7        busybox:latest      "httpd -f"          2 days ago          Up 2 days           0.0.0.0:80->80/tcp   web

[root@node1 ~]# docker kill web

web

[root@node1 ~]# docker rm web

web


[root@node1 ~]# docker run -d busybox:web2

d57228046a3d1261a80de72f528a5b01a322961bfd8be867da13f276c95f3a3a


[root@node1 ~]# docker ps

CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS               NAMES

d57228046a3d        busybox:web2        "httpd -f -h /web/htm"   About a minute ago   Up About a minute   80/tcp              focused_goodall


[root@node1 ~]# docker port d57228046a3d

[root@node1 ~]# docker kill d57228046a3d

d57228046a3d


[root@node1 ~]# docker run -d --name web -P busybox:web2

4e0f3885a830d94decdbf2789266de7fb8a507659245854daf124799ce05e028


[root@node1 ~]# docker port web

80/tcp -> 0.0.0.0:32772


http://192.168.1.131:32772


测试成功



03 dockerfile详解

[root@node1 ~]# mkdir docker-httpd

[root@node1 ~]# cd docker-httpd/

FROM centos:latest

MAINTAINER MageEdu "<mage@magedu.com>"


RUN sed -i -e 's@^mirrorlist.*repo=os.*$@baseurl=http://172.16.0.1/cobbler/ks_mirror/$releaserver/@g' -e '/^mirrorlist.*repo=updates/a enabled=0' -e

'/^mirrorlist.*repo=extras/a enabled=0' /etc/yum.repos.d/CentOS-Base.repo && \

    yum -y install httpd php php-mysql php-mbstring && \

    yum clean all && \

    echo -e '<?php\n\tphpinfo();\n?>' > /var/www/html/info.php


EXPOSE 80/tcp


CMD ["/usr/sbin/httpd","-f","/etc/httpd/conf/httpd.conf","-DFOREGROUND"]

[root@node1 docker-httpd]# docker build -f httpd.df -t httpd:2.4 ./

Sending build context to Docker daemon 2.048 kB

Step 1 : FROM centos:latest

 ---> 67591570dd29

Step 2 : MAINTAINER MageEdu "<mage@magedu.com>"

 ---> Using cache

 ---> f6eacba2a721

Step 3 : RUN yum -y install httpd php php-mysql php-mbstring &&         yum clean all &&   echo -e '<?php\n\tphpinfo();\n?>' > /var/www/html/info.php

 ---> Using cache

 ---> f1a8a2a4ee60

Step 4 : EXPOSE 80/tcp

 ---> Running in fe4b765dcbfd

 ---> c02172ed48ed

Removing intermediate container fe4b765dcbfd

Step 5 : CMD /usr/sbin/httpd -f /etc/httpd/conf/httpd.conf -DFOREGROUND

 ---> Running in 2a073274d5d3

 ---> 8fe09a670fb9

Removing intermediate container 2a073274d5d3

Successfully built 8fe09a670fb9


[root@node1 docker-httpd]# docker p_w_picpaths 

REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE

httpd                        2.4                 8fe09a670fb9        3 minutes ago       266.7 MB

busybox                      web2                ec5bd0d26b61        About an hour ago   1.11 MB

busybox                      webserver           2cde4a22e191        About an hour ago   1.11 MB

centos                       newuser             4b761c9a987a        6 days ago          192.1 MB

192.168.1.132:5000/busybox   1.2.1               7968321274dc        2 weeks ago         1.11 MB

docker.io/busybox            latest              7968321274dc        2 weeks ago         1.11 MB


[root@node1 docker-httpd]# docker run --rm --name httpd -P httpd:2.4

[root@node1 ~]# docker port httpd

80/tcp -> 0.0.0.0:32774

[root@node1 ~]# docker kill httpd

[root@node1 docker-httpd]# docker run -d --name httpd -p 80:80 httpd:2.4

[root@node1 ~]# docker ps

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES

2e0a3ba92f18        httpd:2.4           "/usr/sbin/httpd -f /"   40 seconds ago      Up 38 seconds       0.0.0.0:80->80/tcp   httpd

2e0a3ba92f18674b848924eaa40ab66cbd1a66669847526e366f2af4dda0872d


[root@node1 ~]# docker ps

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES

2e0a3ba92f18        httpd:2.4           "/usr/sbin/httpd -f /"   7 minutes ago       Up 7 minutes        0.0.0.0:80->80/tcp   httpd

[root@node1 ~]# docker stop httpd

httpd


[root@node1 ~]# docker rm httpd

httpd


[root@node1 docker-httpd]# vim httpd.df

FROM centos:latest

MAINTAINER MageEdu "<mage@magedu.com>"


RUN yum -y install httpd php php-mysql php-mbstring && \

    yum clean all && \

    echo -e '<?php\n\tphpinfo();\n?>' > /var/www/html/info.php


VOLUME /var/www/html

EXPOSE 80/tcp


CMD ["/usr/sbin/httpd","-f","/etc/httpd/conf/httpd.conf","-DFOREGROUND"]

[root@node1 docker-httpd]# docker build -f httpd.df -t httpd:0.1 ./

Sending build context to Docker daemon 2.048 kB

Step 1 : FROM centos:latest

 ---> 67591570dd29

Step 2 : MAINTAINER MageEdu "<mage@magedu.com>"

 ---> Using cache

 ---> f6eacba2a721

Step 3 : RUN yum -y install httpd php php-mysql php-mbstring &&         yum clean all &&        echo -e '<?php\n\tphpinfo();\n?>' > /var/www/html/info.php

 ---> Using cache

 ---> f1a8a2a4ee60

Step 4 : VOLUME /var/www/html

 ---> Running in 58ab7b732b00

 ---> a1dfec50fa16

Removing intermediate container 58ab7b732b00

Step 5 : EXPOSE 80/tcp

 ---> Running in 58d20c2ee361

 ---> 0142accd29d8

Removing intermediate container 58d20c2ee361

Step 6 : CMD /usr/sbin/httpd -f /etc/httpd/conf/httpd.conf -DFOREGROUND

 ---> Running in 6772c7d6154f

 ---> 97b1901c5b98

Removing intermediate container 6772c7d6154f

Successfully built 97b1901c5b98

[root@node1 ~]# docker run -it --rm --name httpd -p 80:80 httpd:0.1 /bin/bash

[root@883df61186bc /]# ls /var/www/html/

info.php

[root@node1 docker-httpd]# ls /var/lib/docker/volumes/

1adb8a2119488a4b9517e6890a4f89759bc0ad6fc9933227c445ea899d5327e1

bf2b562a3277475a3695468352f2f944c75ca7ee2433be6d27294f3e1e332757

[root@node1 docker-httpd]# ls /var/lib/docker/volumes/1adb8a2119488a4b9517e6890a4f89759bc0ad6fc9933227c445ea899d5327e1/_data/

info.php

[root@node1 docker-httpd]# cat /var/lib/docker/volumes/1adb8a2119488a4b9517e6890a4f89759bc0ad6fc9933227c445ea899d5327e1/_data/info.php 

<?php

        phpinfo();

?>

[root@node1 docker-httpd]# docker stop httpd

httpd

[root@node1 ~]# mkdir -p /web/html

[root@node1 ~]# unzip phpMyAdmin-4.0.5-all-languages.zip

[root@node1 ~]# mv phpMyAdmin-4.0.5-all-languages /web/html/pma

[root@node1 ~]# docker run -it --rm --name httpd -p 80:80 -v /web/html/:/var/www/html httpd:0.1 /bin/bash

[root@e5ed9ebdb22e /]# ls /var/www/html/

pma

[root@node1 ~]# yum -y install mariadb-server

[root@node1 ~]# vim /etc/my.cnf

添加 

skip_name_resolve = on

innodb_file_per_table = on

[root@node1 ~]# systemctl start mariadb.service 

[root@node1 ~]# docker run -it --rm --name httpd -p 80:80 -v /web/html/:/var/www/html httpd:0.1 /bin/bash

[root@6ff679ab00a9 /]# yum install iproute -y

[root@6ff679ab00a9 /]# ip addr list

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

80: eth0@if81: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 

    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0

    inet 172.17.0.2/16 scope global eth0

       valid_lft forever preferred_lft forever

    inet6 fe80::42:acff:fe11:2/64 scope link 

       valid_lft forever preferred_lft forever

[root@6ff679ab00a9 /]# exit

MariaDB [(none)]> GRANT ALL ON *.* TO 'root'@'172.%.%.%' IDENTIFIED BY 'mageedu';

MariaDB [(none)]> GRANT ALL ON *.* TO 'root'@'172.168.1.%' IDENTIFIED BY 'mageedu';   

MariaDB [(none)]> FLUSH PRIVILEGES;

MariaDB [(none)]> \q

[root@node1 ~]# docker run -it --rm --name httpd -p 80:80 -v /web/html/:/var/www/html httpd:0.1 

http://192.168.1.131/pma/index.php

[root@node1 docker-httpd]# openssl rand -base64 20

8kl6zMcqb40pPlBmE0VrjezrVlM=


[root@node1 docker-httpd]# cd /web/html/pma/

[root@node1 pma]# cp config.sample.inc.php config.inc.php 

[root@node1 pma]# vim config.inc.php

修改

$cfg['blowfish_secret'] = 'a8b7c6d';

$cfg['blowfish_secret'] = '8kl6zMcqb40pPlBmE0VrjezrVlM='; 

修改

$cfg['Servers'][$i]['host'] = 'localhost';

$cfg['Servers'][$i]['host'] = '192.168.1.131';