Docker搭建lnmp之network篇

发布时间 2023-08-19 17:19:31作者: _dagger
docker pull nginx #拉去最新的nginx镜像

一、搭建vagrant+VagrantBox VM环境

创建Vagrantfile文件
vagrant init
编辑Vagrantfile文件
Vagrant.configure("2") do |config|
  config.vm.box = "centos7"                                           #指定BOX
  config.vm.network "private_network", ip: "192.168.33.55"            #指定本地网络连接地址  默认192.168.33.10
  config.vm.synced_folder "D:/phpstudy_pro/WWW", "/www"               #本地phpstudy_pro/WWW映射到虚拟机www
  config.vm.synced_folder "D:/phpstudy_pro/daocker_my/conf", "/conf"  #本地daocker_my/conf映射到虚拟机conf
  config.vbguest.installer_options = { allow_kernel_upgrade: true }   #允许自动升级宿主机的内核版本

end
安装启动VM
vagrant up
配置ssh Xshell连接
DuiZhan010@DESKTOP-6QFBQP0 MINGW64 /d/Vagrant VMs/docker
$ vagrant ssh                                      #vagrant ssh 连接VM
Last login: Fri Aug 18 08:51:46 2023 from 10.0.2.2
[vagrant@localhost ~]$ su                          #切换到管理员 默认密码:vagrant 
Password:
[root@localhost vagrant]# vi /etc/ssh/sshd_config  #编辑ssh配置 允许使用密码连接  PasswordAuthentication yes  
[root@localhost vagrant]# service sshd restart     #重启sshd服务
Redirecting to /bin/systemctl restart sshd.service
[root@localhost vagrant]#

安装docker

搭建lnmp

 

1、自定义网络
[root@localhost conf]# docker network ls         #查看当前的网络
NETWORK ID     NAME      DRIVER    SCOPE
5d39126ca323   bridge    bridge    local
85197103d371   host      host      local
78a099b4f44c   none      null      local
[root@localhost conf]# docker network --help     #查看当前的网络

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@localhost conf]# docker network create -d bridge lnmp          #创建一个名为lnmp桥接(bridge)类型的网络
3d0d7a1a021ff18e27673cfaf00dbf11cf2f146f297f1775f1c5e34cf23216dc
[root@localhost conf]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
5d39126ca323   bridge    bridge    local
85197103d371   host      host      local
3d0d7a1a021f   lnmp      bridge    local
78a099b4f44c   none      null      local
2、nginx

 

#步骤1:拷贝nginx配置文件

#创建nginx配置文件夹
mkdir -p /conf/nginx  
#拉取最新nginx镜像
docker pull nginx
#创建ngin0容器用于拷贝出nginx配置文件
docker run -itd --name nginx0 nginx /bin/bash 
#nginx容器主配置文件拷贝到宿主机/conf/nginx中 
docker cp nginx0:/etc/nginx/nginx.conf  /conf/nginx/nginx.conf   
#nginx子配置文件夹,拷贝到宿主机/conf/nginx中 default.conf
docker cp nginx0:/etc/nginx/conf.d  /conf/nginx   
#停止nginx0容器
docker stop nginx0  
 #删除nginx0容器 我们只是要拷贝出nginx配置文件
docker rm nginx0                                       

#步骤2:创建lnmp中的nginx容器

#以nginx最新镜像创建my-nginx容器 。-i 交互式操作;-t 终端;-d 后台运行;--name指定名字;--network 指定网络;-v 分别把主配置文件和子配置文件夹挂载容器内
docker run -itd --name my-nginx --network lnmp -p 8080:80 -v /conf/nginx/nginx.conf:/etc/nginx/nginx.conf -v /conf/ngin/conf.d:/etc/ngin/conf.d nginx /bin/bash
#创建测试文件夹 主配置文件nginx.conf添加一行注释用于测试
mkdir -p /conf/nginx/conf.d/test 
#查看容器配置详情(目录挂载情况)
docker inspect my-nginx
#容器配置详情docker inspect my-nginx
[
    {
        #..............
        "Mounts": [
            {
                "Type": "bind",
                "Source": "/conf/nginx/nginx.conf",
                "Destination": "/etc/nginx/nginx.conf",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/conf/nginx/conf.d",
                "Destination": "/etc/nginx/conf.d",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],
        #..............
    }
]

#进入my-nginx容器查看是否有测试文件主配置有没有加上注释
docker exec -it my-nginx /bin/bash
cd /etc/ngin
cat nginx.conf
cd conf.d
ls -l