文章目录
- 【网桥】
Docker网络的介绍
Docker 本身的技术依赖于 Linux 内核虚拟化技术的发展。所以 Docker 对 Linux 内核的特性有很强的依赖
Docker 使用到的与 Linux 网络有关的技术分别有:网络名称空间、Veth、Iptables、网桥、路由
一、Docker网络原理
1、docker网络介绍
(Network Namespace)
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
test1
2)################################### 建立一对 veth设备对 ##########################################
[root@hzl ~]# ip link add veth1 type veth peer name veth2
[root@hzl ~]# ip link
3)################################# veth 分别添加到名称空间 test1 及 test2 中 ################################
[root@hzl ~]# ip link set veth1 netns test1
[root@hzl ~]# ip link set veth2 netns test2
4)################################# 检查是否添加成功 ####################################
[root@hzl ~]# ip netns exec test1 ip link
[root@hzl ~]# ip netns exec test2 ip link
5)# ############################### 设置 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 up
6)############################## 查看 IP 是否设置成功 #########################################
[root@hzl ~]# ip netns exec test1 ip a
[root@hzl ~]# ip netns exec test2 ip a
7)#############################检测一下是否能相互 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 表结合,来决定报文的转发目标网口
#网桥的概述:
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 local
ps
【iptables】
iptables是 linux 系统自带的优秀且完全免费的基于包过滤的防火墙工具、它的功能十分强大、使用非常灵活、可以对流入、流出及流经服务器的数据包进行精细的控制
#iptables的概述:
1》在Linux网络协议棋中有一组回调函数挂接点,通过这些挂接点挂接的钩子函数可以在Linux 网络棋处理数据包的过程中对数据包进行 些操作,例如过滤、修改、丢弃等 整个挂接点技术叫作 Netfilter lptables
2》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 sh
2)#创建链接容器 "cont02", 并指定网络模式 "container"
[root@hzl ~]#docker run -dit --name cont02 --network "container:cont01" busybox:latest sh
3)#查看两个容器的 "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 Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
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:1000
RX 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 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: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether fa:16:3e:4a:9c:c7 brd ff:ff:ff:ff:ff:ff
inet 172.16.0.4/20 brd 172.16.15.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet6 fe80::f816:3eff:fe4a:9cc7/64 scope link noprefixroute
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:ab:42:6a:8a 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:abff:fe42:6a8a/64 scope link
valid_lft forever preferred_lft forever
5: veth870d996@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
link/ether ae:36:24:dc:11:6d brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet6 fe80::ac36:24ff:fedc:116d/64 scope link
valid_lft forever preferred_lft forever
7: veth6acb18a@if6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
link/ether 4e:03:b1:5e:40:91 brd ff:ff:ff:ff:ff:ff link-netnsid 1
inet6 fe80::4c03:b1ff:fe5e:4091/64 scope link
valid_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>
五、使用网桥模式搭建 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.php
3)#创建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 local
4)#运行容器并创建数据库(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 mysql
5)#容器创建数据库
[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 php
7)#运行容器(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 nginx
8)#创建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.conf
11)#容器重启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 mysql
12)#使用浏览器访问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,容器,--,hzl,网络,网桥,docker,root,Docker From: https://blog.51cto.com/u_15166421/5741706