使用Docker容器 自定义网桥模式搭建LNMP架构

Posted 我的紫霞辣辣

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Docker容器 自定义网桥模式搭建LNMP架构相关的知识,希望对你有一定的参考价值。

1. 拉取镜像
[root@docker01 ~]# docker pull mysql:5.7
[root@docker01 ~]# docker pull nginx
[root@docker01 html]# docker pull alvinos/php:v2-fpm-mysql

2. 下载wordpress
[root@docker01 ~]# wget https://cn.wordpress.org/latest-zh_CN.tar.gz 

3. 创建挂载目录,将wordpress解压到挂载目录
[root@docker01 ~]# mkdir /tmp/html
[root@docker01 ~]# tar -xf latest-zh_CN.tar.gz -C /tmp/
[root@docker01 ~]# cd /tmp/html 
[root@docker01 html]# mv /tmp/wordpress/* .

4. 创建nana网桥
[root@docker01 html]# docker network create nana
[root@docker01 html]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
988b1280d96e   bridge    bridge    local
e185b787c28e   host      host      local
985d31a41d37   nana      bridge    local
01c19cbebe06   none      null      local
[root@docker01 html]# ip a
...
5: br-985d31a41d37: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:9a:e8:9c:31 brd ff:ff:ff:ff:ff:ff
    inet 172.18.0.1/16 brd 172.18.255.255 scope global br-985d31a41d37
       valid_lft forever preferred_lft forever

5. 创建并运行数据库容器(mysql5.7)
# MYSQL_DATABASE: 创建数据库wordpress   --network: 网络指定为自定义网桥nana
[root@docker01 html]# docker run -d -e MYSQL_ROOT_PASSWORD=123 -e MYSQL_DATABASE=wordpress --network nana --name mysql mysql:5.7
# 查看mysql数据库容器是否正常运行
[root@docker01 html]# docker ps | grep mysql
d1a7737ad91a   mysql:5.7   "docker-entrypoint.s…"   18 minutes ago   Up 18 minutes   3306/tcp, 33060/tcp   mysql

6. 创建并运行php容器
[root@docker01 html]# docker run -d --network nana -v /tmp/html:/usr/share/nginx/html --name php alvinos/php:v2-fpm-mysql
# 查看php容器是否正常运行
[root@docker01 html]# docker ps | grep php
8210f15c03c1   alvinos/php:v2-fpm-mysql   "php-fpm -F"             34 seconds ago   Up 33 seconds   9000/tcp              php

7. 创建并运行nginx容器
[root@docker01 html]# docker run -d -p 80:80 -v /tmp/html:/usr/share/nginx/html --name nginx --network nana nginx
# 查看nginx容器是否正常运行
[root@docker01 html]# docker ps | grep nginx
6e9d178296f8   nginx                      "/docker-entrypoint.…"   23 seconds ago   Up 23 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp   nginx

8. 进入nginx容器,创建nginx用户www
[root@docker01 html]# docker exec -it nginx bash
root@6e9d178296f8:/# useradd www
root@6e9d178296f8:/# id www
uid=1000(www) gid=1000(www) groups=1000(www)
root@6e9d178296f8:/# exit
exit

9. 修改容器内的nginx主配置文件
[root@docker01 html]# cd /opt
# 复制Nginx主配置文件
# 将容器内部文件复制到宿主主机
[root@docker01 opt]# docker cp nginx:/etc/nginx/nginx.conf .

# 修改nginx主配置文件的用户信息
[root@docker01 opt]# sed -i "/^user /c user www;" nginx.conf

# 覆盖docker容器里面的原文件
[root@docker01 opt]# docker cp nginx.conf nginx:/etc/nginx/nginx.conf

10. 修改容器内nginx的server文件
# 将容器内部文件复制到宿主主机
[root@docker01 opt]# docker cp nginx:/etc/nginx/conf.d/default.conf .
[root@docker01 opt]# vim default.conf
server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;
    
    # wordpress(*.php文件)默认的查找路径
    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;
    }
}

# 覆盖docker容器里面的原文件
[root@docker01 opt]# docker cp default.conf nginx:/etc/nginx/conf.d/default.conf

11. 检查修改好的nginx配置文件
[root@docker01 opt]# docker exec -it nginx bash
root@6e9d178296f8:/# cat /etc/nginx/conf.d/default.conf
root@6e9d178296f8:/# cat /etc/nginx/nginx.conf
root@6e9d178296f8:/# exit

12. 重启nginx容器
[root@docker01 opt]# docker restart nginx
[root@docker01 opt]# docker ps
CONTAINER ID   IMAGE                      COMMAND                  CREATED          STATUS          PORTS                               NAMES
6e9d178296f8   nginx                      "/docker-entrypoint.…"   15 minutes ago   Up 55 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp   nginx
8210f15c03c1   alvinos/php:v2-fpm-mysql   "php-fpm -F"             19 minutes ago   Up 19 minutes   9000/tcp                            php
d1a7737ad91a   mysql:5.7                  "docker-entrypoint.s…"   45 minutes ago   Up 45 minutes   3306/tcp, 33060/tcp                 mysql

13. 打开浏览器输入ip: 192.168.15.80
步骤如图所示

14. 创建浏览器指定的wp-config.php文件
[root@docker01 opt]# cd /tmp/html/
# 将浏览器生成的配置文件内容复制到wp-conf.php文件中
[root@docker01 html]# vim wp-config.php








以上是关于使用Docker容器 自定义网桥模式搭建LNMP架构的主要内容,如果未能解决你的问题,请参考以下文章

docker网桥的特性

网络管理

容器化工具--------Docker的网络操作

容器化工具--------Docker的网络操作

实战案例:构建docker容器集群 (解决方案一:使用自定义网桥连接跨主机容器)

Docker 自定义网桥