文章目录

  • Docker网络的介绍
  • 一、Docker网络原理
    • 1、docker网络介绍
    • 2、Docker网络原理
  • 二、docker网络基础
    • 【网络命名空间】
      • 1、Veth 设备对
      • 2、网络原理实验的实现
    • 【网桥】
      • 1、网桥的使用
    • 【iptables】
    • 【网络总述】
  • 三、Docker网络模式
    • 1、Docker系统自带的网络模式
    • 2、网络原理
    • 3、
  • 四、Docker四类网络模式
    • 【host模式】
    • 【Container 模式】
    • 【none模式】
    • 【Bridge 网桥模式】
    • 【网桥模式的常用命令】
  • 五、使用网桥模式搭建 lnmp

Docker网络的介绍

Docker 本身的技术依赖于 Linux 内核虚拟化技术的发展。所以 Docker 对 Linux 内核的特性有很强的依赖
Docker 使用到的与 Linux 网络有关的技术分别有:网络名称空间、Veth、Iptables、网桥、路由

一、Docker网络原理

1、docker网络介绍

   Linux中,为了支持网络协议栈的多个实例,Linux 在网络协议栈中引入了网络名称空间(Network Namespace)
这些独立的协议栈被隔离到不同的命名空间中处于不同的命名空间的网络协议栈是完全隔离的,彼此之间无法进行网络通信,就好像两个“平行宇宙”通过这种对网络资源的隔离,通过这种对网络资源的隔离,就能在一个宿主机上虚拟多个不同的网络环境,Docker 正是利用这种网络名称空间的特性,实现了不同容器之间的网络隔离。
在 Linux 的网络命名空间 内可以有自己独立的 Iptables 来转发、NAT 及 IP 包过滤等功能。
Linux 的网络协议栈是十分复杂的,为了支持独立的协议栈,相关的这些全局变量都必须修改为协议栈私有
最好的办法就是让这些全局变量成为一个 Net Namespace 变量的成员,然后为了协议栈的函数调用加入一个 Namespace 参数。这就是 Linux 网络名称空间的核心。
所以的网络设备都只能属于一个网络名称空间。当然, 通常的物理网络设备只能关联到 root 这个命名空间中。虚拟网络设备则可以被创建并关联到一个给定的命名空 间中,而且可以在这些名称空间之间移动

2、Docker网络原理

1》Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网关。因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的Container-IP直接通信。
2》Docker网桥是宿主机虚拟出来的,并不是真实存在的网络设备,外部网络是无法寻址到的,这也意味着外部网络无法通过直接Container-IP访问到容器。如果容器希望外部访问能够访问到,可以通过映射容器端口到宿主主机(端口映射),即docker run创建容器时候通过 -p 或 -P 参数来启用,访问容器的时候就通过[宿主机IP]:[容器端口]访问容器

linux多个网络的实现状态

二、docker网络基础

namespace(命名空间)和cgroup是软件容器化(想想Docker)趋势中的两个主要内核技术。简单来说,cgroup是一种对进程进行统一的资源监控和限制,它控制着你可以使用多少系统资源(CPU,内存等),而namespace是对全局系统资源的一种封装隔离,它通过Linux内核对系统资源进行隔离和虚拟化的特性,限制了您可以看到的内容

【网络命名空间】

#命名空间的叙述:
Linux 3.8内核提供了6种类型的命名空间:Process ID (pid)、Mount (mnt)、Network (net)、InterProcess Communication (ipc)、UTS、User ID (user)。例如:pid命名空间内的进程只能看到同一命名空间中的进程。mnt命名空间,可以将进程附加到自己的文件系统(如chroot)。在本文中,我只关注网络命名空间 Network (net)。
网络命名空间为命名空间内的所有进程提供了全新隔离的网络协议栈。这包括网络接口,路由表和iptables规则。通过使用网络命名空间就可以实现网络虚拟环境,实现彼此之间的网络隔离,这对于云计算中租户网络隔离非常重要

1、Veth 设备对

Veth设备对是为了在不同的网络名称空间之间进行通信,利用它可以直接将两个网络名称空间链接起来。
由于要连接的两个网络命名空间,所以Veth设备是成对出现的,很像一对以太网卡,并且中间有一根直连的网线。既然是一对网卡,那么我们将其中一端称为另一端的peer。
在Veth设备的一端发送数据时,它会将数据直接发送到另一端,并触发另一端的接收操作

2、网络原理实验的实现

需求 : 建立两个名称空间, 并实现相互 ping 通

# 查看、添加、 删除 namespace 命令
ip netns list                # 查看
ip netns add [namespace]     # 添加
ip netns delete [namespace]  # 删除
-------------------------------------------------------------------------------------------# 实验测试1)################################# 建立两个名称空间   ######################################
[root@hzl ~]# ip netns add test1
[root@hzl ~]# ip netns add test2
[root@hzl ~]# ip netns list
test2
test12)################################### 建立一对 veth设备对 ##########################################
[root@hzl ~]# ip link add veth1 type veth peer name veth2
[root@hzl ~]# ip link3)################################# veth 分别添加到名称空间 test1 及 test2 中  ################################
[root@hzl ~]# ip link set veth1 netns test1
[root@hzl ~]# ip link set veth2 netns test24)################################# 检查是否添加成功  ####################################
[root@hzl ~]# ip netns exec test1 ip link
[root@hzl ~]# ip netns exec test2 ip link5)# ###############################  设置 IP , 并将其状态 up  ####################################
[root@hzl ~]# ip netns exec test1 ip addr add 172.17.0.111/20 dev veth1
[root@hzl ~]# ip netns exec test2 ip addr add 172.17.0.112/20 dev veth2
[root@hzl ~]# ip netns exec test1 ip link set dev veth1 up
[root@hzl ~]# ip netns exec test2 ip link set dev veth2 up6)############################## 查看 IP 是否设置成功 #########################################
[root@hzl ~]# ip netns exec test1 ip a
[root@hzl ~]# ip netns exec test2 ip a7)#############################检测一下是否能相互 ping 通  #######################################
[root@hzl ~]# ip netns exec test1 ping 172.17.0.112
[root@hzl ~]# ip netns exec test2 ping 172.17.0.111

【网桥】

Linux 可以支持多个不同的网络,它们之间能够相互通信,就需要一个网桥。 网桥是二层的虚拟网络设备,它是把若干个网络接口“连接”起来,从而报文能够互相转发。网桥能够解析收发的报文,读取目标 MAC 地址的信息,和自己记录的 MAC 表结合,来决定报文的转发目标网口

#网桥的概述:
网桥设备 brO 绑定了 eth0、 eth1 。对于网络协议械的上层来说,只看得到 brO 。
因为桥接是在数据链路层实现的 ,上层不需要关心桥接的细节,于是协议枝上层需要发送的报文被送到 brO ,网桥设备的处理代码判断报文该被转发到 ethO 还是 ethl ,或者两者皆转发。
反过来,从 ethO 或从 ethl 接收到的报文被提交给网桥的处理代码,在这里会判断报文应该被转发、丢弃还是提交到协议枝上层。 而有时 ethl 也可能会作为报文的源地址或目的地址 直接参与报文的发送与接收,从而绕过网桥

1、网桥的使用

#网桥命令格式 :
docker network [命令参数]#查看当前系统有哪些网桥 "ls"
[root@hzl ~]#docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
befd59194a71        bridge              bridge              local
94f8e35f3357        host                host                local
79fb28a9a12e        none                null                local#创建网桥 "create"
[root@hzl ~]#docker network create hzl
ffac93578a0ce40395936d226bd097fd049ad077022419a9b6b074b6fe2f892b
[root@hzl ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
befd59194a71        bridge              bridge              local
94f8e35f3357        host                host                local
79fb28a9a12e        none                null                local
ffac93578a0c        hzl                 bridge              local         #新创建的网桥#查看网桥信息,格式 :
docker network inspect [网桥的名称|网桥ID][root@hzl ~]#docker network inspect hzl
[{"Name": "hzl","Id": "ffac93578a0ce40395936d226bd097fd049ad077022419a9b6b074b6fe2f892b","Created": "2020-12-03T11:56:35.554136022+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": {},"Options": {},"Labels": {}}
]#删除网桥 "rm"
[root@hzl ~]#docker network rm hzl
shawn
[root@hzl ~]#docker network ls       #查看发现"hzl"删除了
NETWORK ID          NAME                DRIVER              SCOPE
befd59194a71        bridge              bridge              local
94f8e35f3357        host                host                local
79fb28a9a12e        none                null                local#清理网桥 "prune"         #创建多个网桥,使用prune进行全部删除
[root@hzl ~]# docker network create hzl1
f4d2f2b57b48cd35b3cc9eddad0377cae95d213032ed0d6a92e9de9571adeb4e  #创建成功
[root@hzl ~]# docker network create hzl2
ea66ed0d06adbe7f5211f3ae38b6edeb47dffac0f53240e9204fd3dcaf4670d5  #创建成功
[root@hzl ~]# docker network create hzl3
222d6e298d6091cea0a6229e19c84825a41ea92b7c0b512db47c858dde7259f0  #创建成功
[root@hzl ~]# docker network prune
WARNING! This will remove all custom networks not used by at least one container.
Are you sure you want to continue? [y/N] y   #问你是否要这样做"yes"
Deleted Networks:                            #将要删除以下网桥
hzl1
hzl2
hzl3#查看网桥
[root@hzl ~]#docker network ls     # 删除了所有的hzl网桥
NETWORK ID          NAME                DRIVER              SCOPE
befd59194a71        bridge              bridge              local
94f8e35f3357        host                host                local
79fb28a9a12e        none                null                localps :使用prune可以清空所有网桥,但是只能清空自己创建的,且没有使用的网桥

【iptables】

iptables是 linux 系统自带的优秀且完全免费的基于包过滤的防火墙工具、它的功能十分强大、使用非常灵活、可以对流入、流出及流经服务器的数据包进行精细的控制

#iptables的概述:1》在Linux网络协议棋中有一组回调函数挂接点,通过这些挂接点挂接的钩子函数可以在Linux 网络棋处理数据包的过程中对数据包进行 些操作,例如过滤、修改、丢弃等 整个挂接点技术叫作 Netfilter lptables2》Netfilter 负责在内核中执行各种挂接的规则,运行在内核模式中:而 lptables 是在用户模式下运行的进程,负责协助维护内核中 Netfilter 的各种规则表 通过 者的配合来实现整个 Linux网络协议战中灵活的数据包处理机制

【网络总述】

三、Docker网络模式

安装Docker时,它会自动创建三个网络, none 、host、bridge(创建容器默认连接到此网络)

1、Docker系统自带的网络模式

#查看当前系统有哪些网络(网桥):docker network ls
[root@docker ~]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
b5e4fae2126d   bridge    bridge    local
c0e4bda04846   host      host      local
3620d3b3be5b   none      null      local

2、网络原理

1》 Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0)
2》 Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP, 同时Docker网桥是每个容器的默认网关
3》 因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的Container-IP直接通信
4》 Docker网桥是宿主机虚拟出来的,并不是真实存在的网络设备,外部网络是无法寻址到的,这也意味着外部网络无法通过直接Container-IP访问到容器
5》 如果容器希望外部访问能够访问到,可以通过映射容器端口到宿主主机(端口映射),即docker run创建容器时候通过 -p 或 -P 参数来启用,访问容器的时候就通过 [宿主机IP]:[容器向外暴露的端口] 访问容器

3、

四、Docker四类网络模式

docker 网络模式:
1》host模式 : 与Linux宿主主机共享网络
2》container模式 :与另一个容器共享网络
3》none模式 : 只为容器提供回环网络
4》bridge模式 : 网桥模式(多个容器间的网络互通,推荐使用网桥)

【host模式】

相当于Vmware中的桥接模式,与宿主机在同一个网络中,但没有独立IP地址, 容易造成端口冲突
但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的

#格式 :docker run --network host [镜像名称或ID]#实列
[root@docker ~]# docker run -d --name hzl --network host nginx:latest
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
d121f8d1c412: Pull complete
ebd81fc8c071: Pull complete
655316c160af: Pull complete
d15953c0e0f8: Pull complete
2ee525c5c3cc: Pull complete
Digest: sha256:c628b67d21744fce822d22fdcc0389f6bd763daac23a6b77147d0712ea7102d0
Status: Downloaded newer image for nginx:latest
06941559a3f7e0c53cf228302dedc2040c10f2eb0b6e3d0f962c065b0e0419ce
[root@docker ~]#  docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
06941559a3f7        nginx               "/docker-entrypoint.…"   6 minutes ago       Up 6 minutes                            my-web[root@docker ~]#  curl 127.0.0.1:80    #链接本地回环
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>body {width: 35em;margin: 0 auto;font-family: Tahoma, Verdana, Arial, sans-serif;}

【Container 模式】

这个模式指定新创建的容器和已经存在的一个容器共享一个Network Namespace,而不是和宿主机共享
新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等
同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过lo网卡设备通信

#格式 :docker run --network "containe:[共享容器名称]" [镜像名称或ID]#实列:
1)#创建共享容器 "cont01"
[root@hzl ~]#docker run -dit --name cont01 busybox:latest sh2)#创建链接容器 "cont02", 并指定网络模式 "container"
[root@hzl ~]#docker run -dit --name cont02 --network "container:cont01" busybox:latest sh3)#查看两个容器的 "ip", 发现一样
[root@hzl ~]#docker exec cont01 ip a
[root@hzl ~]#docker exec cont02 ip a

【none模式】

该模式将容器放置在它自己的网络栈中,但是并不进行任何配置, 只提供回环
该模式关闭了容器的网络功能 , 一般是因为容器并不需要网络(例如只需要写磁盘卷的批处理任务)

#格式 :
docker run --network none [镜像名称或ID]#实列:
[root@hzl ~]# docker run -dit --network none --name none_test nginx:latest sh
e3c4f1c05099ee0e1997a1c8f0971c15ad9611a8739f282d3387112f3ceed1af[root@docker ~]# docker run  -itd --name hzl  --network none busybox
b9dde79754bc110314be4aecde1251dcdd6ce28fdf43102ae184b79c6e7414bc
[root@docker ~]# docker exec -it hzl sh
/ # ifconfig
lo        Link encap:Local Loopbackinet addr:127.0.0.1  Mask:255.0.0.0UP LOOPBACK RUNNING  MTU:65536  Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

【Bridge 网桥模式】

1》相当于Vmware中的Nat模式,容器使用独立network Namespace,并连接到docker0虚拟网卡(默认模式)
2》虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中
3》bridge模式是docker的默认网络模式,不写 –network 参数,就是bridge模式
4》使用docker run -p时,docker实际是在iptables做了DNAT规则,实现端口转发功能

#测试使用网桥[root@docker ~]# docker run -itd --name test busybox
dd17d863b2957a29df44b2552365eb0cfc01552fd4ec6b8b63e28dfd0d61472e
[root@docker ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000link/ether fa:16:3e:4a:9c:c7 brd ff:ff:ff:ff:ff:ffinet 172.16.0.4/20 brd 172.16.15.255 scope global noprefixroute eth0valid_lft forever preferred_lft foreverinet6 fe80::f816:3eff:fe4a:9cc7/64 scope link noprefixroutevalid_lft forever preferred_lft forever
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group defaultlink/ether 02:42:ab:42:6a:8a brd ff:ff:ff:ff:ff:ffinet 172.17.0.1/16 brd 172.17.255.255 scope global docker0valid_lft forever preferred_lft forever
inet6 fe80::42:abff:fe42:6a8a/64 scope linkvalid_lft forever preferred_lft forever
5: veth870d996@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group defaultlink/ether ae:36:24:dc:11:6d brd ff:ff:ff:ff:ff:ff link-netnsid 0inet6 fe80::ac36:24ff:fedc:116d/64 scope linkvalid_lft forever preferred_lft forever
7: veth6acb18a@if6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group defaultlink/ether 4e:03:b1:5e:40:91 brd ff:ff:ff:ff:ff:ff link-netnsid 1inet6 fe80::4c03:b1ff:fe5e:4091/64 scope linkvalid_lft forever preferred_lft forever[root@docker ~]# docker exec -it test bash
/ # ping 172.16.0.4
PING 172.16.0.4 (172.16.0.4): 56 data bytes
64 bytes from 172.16.0.4: seq=0 ttl=64 time=0.113 ms
64 bytes from 172.16.0.4: seq=1 ttl=64 time=0.101 ms
^C
--- 172.16.0.4 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.101/0.107/0.113 ms

【网桥模式的常用命令】

1> 创建网桥:docker network create [网桥名称]
2> 删除网桥:docker network rm [网桥名称]
3> 连接网桥:docker network connect  [网桥名称] [容器]
4> 断开连接:docker network disconnect [网桥名称] [容器]
5> 查看网桥列表:docker network ls
6> 清空网桥:docker network prune

五、使用网桥模式搭建 lnmp

1)#下载wordpress[root@docker ~]# wget https://cn.wordpress.org/latest-zh_CN.tar.gz
--2021-07-28 04:23:50--  https://cn.wordpress.org/latest-zh_CN.tar.gz
正在解析主机 cn.wordpress.org (cn.wordpress.org)... 198.143.164.252
正在连接 cn.wordpress.org (cn.wordpress.org)|198.143.164.252|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:15783657 (15M) [application/octet-stream]
正在保存至: “latest-zh_CN.tar.gz”100%[============================================================================================================================>] 15,783,657  1.10MB/s 用时 25s    2021-07-28 04:24:16 (618 KB/s) - 已保存 “latest-zh_CN.tar.gz” [15783657/15783657])[root@docker ~]# 2)#创建目录(挂在目录)
[root@docker ~]# mkdir /tmp/html/
[root@docker ~]# tar xf  latest-zh_CN.tar.gz -C /tmp/
[root@docker html]# cd /tmp/
[root@docker html]# mv /tmp/wordpress/* /tmp/html
[root@docker html]# ll
总用量 208
-rw-r--r--  1 1006 1006   405 2月   6 2020 index.php
-rw-r--r--  1 1006 1006 19915 1月   1 2021 license.txt
-rw-r--r--  1 1006 1006  7346 7月   6 20:23 readme.html
drwxr-xr-x  2 1006 1006     6 7月  28 04:56 wordpress
-rw-r--r--  1 1006 1006  7165 1月  21 2021 wp-activate.php
drwxr-xr-x  9 1006 1006  4096 7月  27 05:00 wp-admin
-rw-r--r--  1 1006 1006   351 2月   6 2020 wp-blog-header.php
-rw-r--r--  1 1006 1006  2328 2月  17 21:08 wp-comments-post.php
-rw-r--r--  1 1006 1006  3004 5月  21 18:40 wp-config-sample.php
drwxr-xr-x  5 1006 1006    69 7月  27 05:00 wp-content
-rw-r--r--  1 1006 1006  3939 7月  31 2020 wp-cron.php
drwxr-xr-x 25 1006 1006  8192 7月  27 05:00 wp-includes
-rw-r--r--  1 1006 1006  2496 2月   6 2020 wp-links-opml.php
-rw-r--r--  1 1006 1006  3900 5月  16 01:38 wp-load.php
-rw-r--r--  1 1006 1006 45463 4月   7 02:39 wp-login.php
-rw-r--r--  1 1006 1006  8509 4月  14 2020 wp-mail.php
-rw-r--r--  1 1006 1006 22297 6月   2 07:09 wp-settings.php
-rw-r--r--  1 1006 1006 31693 5月   8 04:16 wp-signup.php
-rw-r--r--  1 1006 1006  4747 10月  9 2020 wp-trackback.php
-rw-r--r--  1 1006 1006  3236 6月   9 2020 xmlrpc.php3)#创建hzl网桥
[root@docker ~]# docker network create hzl
a9bcbcc97636f7af947f5a70f292b14c864069d39d18f9716461874821d8ece6
[root@docker ~]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
b5e4fae2126d   bridge    bridge    local
c0e4bda04846   host      host      local
a9bcbcc97636   hzl       bridge    local        #新创建的网桥
3620d3b3be5b   none      null      local4)#运行容器并创建数据库(mysql5.7)
[root@docker ~]# docker run -d -e MYSQL_ROOT_PASSWORD=123 -e MYSQL_DATABASE=wordpress --network hzl --name mysql mysql:5.7
3190f43b52f4f4e71317ac9e513e85102464748da656898aecaab225a25316c4
[root@docker ~]# docker ps |grep mysql
3190f43b52f4   mysql:5.7                  "docker-entrypoint.s…"   21 seconds ago   Up 20 seconds   3306/tcp, 33060/tcp                         mysql5)#容器创建数据库
[root@docker ~]# docker exec -it mysql bash
root@eaa09a4ecb7d:/# mysql -uroot -p123
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.35 MySQL Community Server (GPL)Copyright (c) 2000, 2021, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> create database wordpress;
Query OK, 1 row affected (0.00 sec)mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| wordpress          |
+--------------------+
5 rows in set (0.00 sec)6)#运行容器(php)
[root@docker /]# docker run -d --network hzl -v /tmp/html:/usr/share/nginx/html --name php alvinos/php:v2-fpm-mysql
0384243cbd340f8d13ee052356b09beda11050dce94aee2321fae7467d508002
[root@docker /]# docker ps |grep php
0384243cbd34   alvinos/php:v2-fpm-mysql   "php-fpm -F"             11 seconds ago      Up 10 seconds      9000/tcp                            php7)#运行容器(nginx)
[root@docker opt]# docker run -d  -p 80:80 -v /tmp/html/:/usr/share/nginx/html --name nginx --network hzl nginx:latest
78947a955e12517e9c347529cdb96bdbfea679ecd4b20df6b2db3bce814136fb
[root@docker opt]# docker ps
CONTAINER ID   IMAGE                      COMMAND                  CREATED          STATUS          PORTS                               NAMES
78947a955e12   nginx:latest               "/docker-entrypoint.…"   4 seconds ago    Up 3 seconds    0.0.0.0:80->80/tcp, :::80->80/tcp   nginx8)#创建nginx用户www
[root@docker tmp]# docker exec -it nginx bash
root@7e11f2dcc096:/# useradd www
root@7e11f2dcc096:/# id www
uid=1000(www) gid=1000(www) groups=1000(www)
root@7e11f2dcc096:/# 9)#修改配置文件一(nginx)
[root@docker opt]# docker cp nginx:/etc/nginx/conf.d/default.conf .
[root@docker opt]# vim default.conf
server {listen       80;listen  [::]:80;server_name  localhost;root   /usr/share/nginx/html;location / {index index.php index.html index.htm;}location ~ \.php$ {fastcgi_pass   php:9000;fastcgi_index  index.php;fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;include        fastcgi_params;}}[root@docker opt]# docker cp default.conf nginx:/etc/nginx/conf.d/default.conf    #nginx配置文件更改#修改配置文件二(nginx)
[root@docker opt]# docker cp nginx:/etc/nginx/nginx.conf .
[root@docker opt]# vim nginx.conf
user  www;
........
...[root@docker opt]# docker cp nginx.conf nginx:/etc/nginx/nginx.conf    # nginx配置文件更改10)#检查容器内配置文件状态
[root@docker opt]# docker exec -it nginx bash      #进入容器查看状态
root@7e11f2dcc096:/# cat /etc/nginx/conf.d/default.conf
root@7e11f2dcc096:/# cat /etc/nginx/nginx.conf11)#容器重启nginx
[root@docker opt]# docker restart nginx
nginx
[root@docker opt]# docker ps
CONTAINER ID   IMAGE                      COMMAND                  CREATED          STATUS          PORTS                               NAMES
78947a955e12   nginx:latest               "/docker-entrypoint.…"   2 minutes ago    Up 6 seconds    0.0.0.0:80->80/tcp, :::80->80/tcp   nginx
0384243cbd34   alvinos/php:v2-fpm-mysql   "php-fpm -F"             36 minutes ago   Up 36 minutes   9000/tcp                            php
eaa09a4ecb7d   mysql:5.7                  "docker-entrypoint.s…"   43 minutes ago   Up 43 minutes   3306/tcp, 33060/tcp                 mysql12)#使用浏览器访问http://192.168.15.80:80
#如下图所示:13)#配置文件添加
[root@docker opt]# cd /tmp/html/
[root@docker html]# vim wp-config.php
<?php
/*** The base configuration for WordPress** The wp-config.php creation script uses this file during the installation.* You don't have to use the web site, you can copy this file to "wp-config.php"* and fill in the values.** This file contains the following configurations:** * MySQL settings* * Secret keys* * Database table prefix* * ABSPATH** @link https://wordpress.org/support/article/editing-wp-config-php/** @package WordPress*/// ** MySQL settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'wordpress' );/** MySQL database username */
define( 'DB_USER', 'root' );/** MySQL database password */
define( 'DB_PASSWORD', '123' );/** MySQL hostname */
define( 'DB_HOST', 'mysql' );/** Database charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8mb4' );/** The database collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '' );/**#@+* Authentication unique keys and salts.** Change these to different unique phrases! You can generate these using* the {@link https://api.wordpress.org/secret-key/1.1/salt/ WordPress.org secret-key service}.** You can change these at any point in time to invalidate all existing cookies.* This will force all users to have to log in again.** @since 2.6.0*/
define( 'AUTH_KEY',         '!(U`)XKDao$-+^DMF)k5u+Mlr_4]89O)M+@egsAzE2^D*[5^r!)F4;^6+I|P%C_&' );
define( 'SECURE_AUTH_KEY',  '>]o&e5<R/W!)x?SzWcbR+3IrQ*~WxvgTsUu[h+YK> GM~ul#=r5l@ZCt3^dqgaXG' );
define( 'LOGGED_IN_KEY',    'GVhRCl&eUNKBe1{9<[ ^i4=#n6`oU(s))lM6ll@#v[OJmAv-q=?8P%@<.Vl^{@Z/' );
define( 'NONCE_KEY',        'CG~PMLQb]V4e4kTDw;ZIu]<_FcHq9!T*d4Qk67BI.zLRC *gaNVX!s}MzIM:G+iY' );
define( 'AUTH_SALT',        'b%tN)c17}2i[>fu`N$O{DpR H~^{y8EO3lm+MWKi!8#]3iz6T/Vb@CLBV+O^u%ct' );
define( 'SECURE_AUTH_SALT', '{yRYIoXuWHv]!TM_=B}qII]2j-J5^a2Vn]^~E$9r]IG.p[k)/{3kKpw$>t8?Lc(+' );
define( 'LOGGED_IN_SALT',   'Wwgi8a=>OnbS6^YK$ 6}IJZGIhO hS-,I7D d42n+;RJN==rCZ@ZpkVTnXt(P=T:' );
define( 'NONCE_SALT',       'o<P;(H[5gIKH:Lvkpor5I|unC%;k|<$: W9&f]g`b)KgkAukAu2H>FCNWB%=e{HX' );/**#@-*//*** WordPress database table prefix.** You can have multiple installations in one database if you give each* a unique prefix. Only numbers, letters, and underscores please!*/
$table_prefix = 'wp_';/*** For developers: WordPress debugging mode.** Change this to true to enable the display of notices during development.* It is strongly recommended that plugin and theme developers use WP_DEBUG* in their development environments.** For information on other constants that can be used for debugging,* visit the documentation.** @link https://wordpress.org/support/article/debugging-in-wordpress/*/
define( 'WP_DEBUG', false );/* Add any custom values between this line and the "stop editing" line. *//* That's all, stop editing! Happy publishing. *//** Absolute path to the WordPress directory. */
if ( ! defined( 'ABSPATH' ) ) {define( 'ABSPATH', __DIR__ . '/' );
}/** Sets up WordPress vars and included files. */
require_once ABSPATH . 'wp-settings.php';

1》访问页面状态

2》按要求输入指定的信息


3》设置配置文件(添加配置文件)

4》设定邮箱,创建用户

5》安装成功,进行登录

6》登录账户(wordpress)

7》登录后访问的界面

8》访问进入主界面

9》就这样

02@Docker网络介绍及网络模式的使用相关推荐

  1. 02.虚拟功能介绍虚拟机网络配置xshell远程连接

    文章目录 0.运维三大职责 1.虚拟机功能介绍 1.1快照 1.2挂起操作 1.3复制系统 1.4克隆机修改ip 1.5删除虚拟系统 1.6导出系统 2.操作规范 2.1第一个规范 2.2第二个规范 ...

  2. 网络介绍 > 网络连接 > 混合云网络

    混合云网络 更新时间:2020-03-10 16:38:23 本页目录 对比 随着云计算的普及,企业逐渐将数据中心的业务应用迁移上云.过去以IDC为中心的星形网络结构,正在演进到以云为中心的混合云网络 ...

  3. AI修图!pix2pix网络介绍与tensorflow实现

    1.引言 在现实生活当中,除了语言之间的翻译之外,我们也经常会遇到各种图像的"翻译"任务,即给定一张图像,生成目标图像,常见的场景有:图像风格迁移.图像超级分辨率.图像上色.图像去 ...

  4. 车载网络: 常见车载网络

    转载自:车载网络 介绍 车载网络是早期的汽车内部传感器.控制和执行器之间的通讯用点对点的连线方式连成复杂的网状结构. 常见车载网络 一.CAN(Controller Area Network)控制器局 ...

  5. 5、Docker 的四种网络模式

    5.1 Docker 的四种网络模式 网络模式 网络配置 说明 host(开放式网络模式) –network host 容器和宿主机共享 Network namespace container(联合挂 ...

  6. Docker的4种网络模式

    我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式: host模式,使用--net=host指定. container模式,使 ...

  7. Docker 的4种网络模式

    我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式: host模式,使用--net=host指定. container模式,使 ...

  8. Docker的四种网络模式和相关网络命令等操作

    Docker网络模式 一.实现原理 二.Docker四种网络模式 三.Docker命令 1.查看网络列表 2.自定义网络固定IP 3.暴露端口 4.在宿主机环境执行容器内命令 5.怎么把宿主机的文件传 ...

  9. docker的五种网络模式

    目录 一.bridge网络(网桥的方式) 二.host网络 三.none网络 四.自定义网络 五.container模式 一.bridge网络(网桥的方式) 可以很清楚的看出容器和宿主机的关系,当我们 ...

最新文章

  1. 概率论 - BZOJ - 4001 TJOI2015
  2. 示波器探头使用注意事项,示波器探头的选择
  3. Java Proxy和CGLIB动态代理原理
  4. VS2005快捷键大全
  5. Java小结(四)——折半查找、选择排序、冒泡排序
  6. 判断session失效,并跳转到登录页面
  7. 使用LiteOS Studio图形化查看LiteOS在STM32上运行的奥秘
  8. spark学习-33-Spark的RPC通信源码分析
  9. Linux修改的文件“修改时间”
  10. WordPress整站轻松开启HTTPS 1
  11. java pdf证书代码_通过itext对PDF嵌入数字证书
  12. mysql error 1114,MySQL错误1114“表已满”使用MyISAM引擎
  13. 使用 Wowza IDE 开发第一个 Wowza 服务器扩展应用 -- 监控直播频道
  14. android的退格字符,按键安卓版如何实现退格键功能
  15. 无人机技术将从硬件创新转向自动化智能飞行
  16. hostname -I(大写i)显示主机IP
  17. 树莓派之无屏幕下发现树莓派IP方法
  18. linux ll命令是什么
  19. HDOJ 1495 倒可乐(BFS)
  20. 关于K倍区间问题的神仙做法所记的笔记

热门文章

  1. 用HTML+CSS做一个漂亮简单的个人网页——动漫网页【火影忍者】1个页面
  2. (转)伟大架构师的秘密
  3. 删除 百度卫士。。。。。
  4. Google Developer Day 2016见闻
  5. 将16进制数转换为8进制数输出——算法
  6. git的镜像下载地址,解决下载慢的问题
  7. jQuery 特效网址(特效大全)
  8. diea maven找不到包但是确实引入了
  9. C语言-杨辉三角的三种解法-简单易懂篇
  10. Non-terminating decimal expansion; no exact representable decimal result异常