Docker安装、开发环境配置及项目搭建(二,Docker桌面应用)

其实上篇文章已经说清楚了,此文可以理解为其补充内容。

主要区别是,上篇文章基于wsl子系统的docker,此文主要是docker桌面应用。

注:搬运自公司大佬Haierspi为我们写的文档,版权为其所有,我只是大自然的搬运工和总结者0.0。

一. Docker For Windows

运行要求

  • Windows 10 PRO
  • Windows 10 Home 升级 Pro
    • 升级密钥 VK7JG-NPHTM-C97JM-9MPGT-3V66T

下载地址

二. 容器<>宿主机互访

  • 容器访问宿主机

    • host.docker.internal
    • docker.for.win.localhost
    • kubernetes.docker.internal
    • ifconfig => docker0 的 ip
  • 宿主机访问容器

  • 简单理解下

    • DockerNAT (貌似不用执行,尚待探索)

      • (Get-NetIPConfiguration | Where-Object { $_.InterfaceAlias -eq 'vEthernet (DockerNAT)' }).IPV4Address.IPAddress
      • (docker run --rm alpine sh -c 'getent hosts docker.for.win.localhost | awk ''{ print $1 }''')
    • windows宿主机访问容器方法

      • 添加路由表 让 windows 宿主机直接访问容器 (cmd管理员权限下执行)
        route -p add 172.17.0.0 MASK 255.255.255.0 10.0.75.2
        

        默认网络会强制顺序自动指派IP地址

        route -p add 172.18.0.0 MASK 255.255.255.0 10.0.75.2
        

        对应 下文 webapps 网络

      • Docker For WINDOWS 2.2 DockerNAT 不存在的问题

        open C:\Program Files\Docker\Docker\resources\MobyLinux.ps1 and add $SwitchName = "DockerNAT" between line 175 and 176.

三. 项目搭建

拉取镜像

  • PHP

    docker image pull haierspi/centos7_ssh_php72_swoole_sqlsrv:v1

  • Nginx

    docker image pull haierspi/centos7_ssh_nginx:v1

  • Redis

    docker image pull haierspi/centos7_ssh_redis:v1

    Redis pw: 

  • DB_MySql Mariadb

    docker image pull haierspi/centos7_ssh_mariadb:v1

    账号清单:

    账号密码访问域
    root localhost,%
    dbuser %
  • RabbitMQ

    docker pull rabbitmq:management

  • ElasticSearch

    待完善

创建单独的Docker网络

docker network create --subnet=172.18.0.0/16 webapps

默认网络会强制按照容器启动顺序自动指派IP地址;所以需要创建网络环境来把内网IP固定下来

创建PHP容器

webapps网络下创建c7_ssh_php_swoole容器并指定固定内网IP 172.18.0.20

docker run --privileged -d --name c7_ssh_php_swoole --net webapps --ip 172.18.0.10 -v D:/Dev/Dev.Data/www:/home/webApps haierspi/centos7_ssh_php72_swoole_sqlsrv:v1 /sbin/init

其中 -v 为映射挂载参数, 含义为将本地(宿主机) D:/Dev/Dev.Data/www 映射到容器内的 /home/webApps目录上

创建nginx容器

webapps网络下创建c7_ssh_nginx容器并指定固定内网IP 172.18.0.20

docker run --privileged -d --name c7_ssh_nginx --net webapps --ip 172.18.0.20 -v D:/Dev/Dev.Data/www:/home/webApps haierspi/centos7_ssh_nginx:v1 /sbin/init

创建Redis容器

webapps网络下创建c7_ssh_redis容器并指定固定内网IP 172.18.0.30

docker run --privileged -d --name c7_ssh_redis --net webapps --ip 172.18.0.30  haierspi/centos7_ssh_redis:v1 /sbin/init

创建MYSQL_Mariadb容器

webapps网络下创建c7_ssh_mariadb容器并指定固定内网IP 172.18.0.31

docker run --privileged -d --name c7_ssh_mariadb --net webapps --ip 172.18.0.31  haierspi/centos7_ssh_mariadb:v1 /sbin/init

创建rabbitmq容器

webapps网络下创建c7_ssh_rabbitmq容器并指定固定内网IP 172.18.0.31

docker run --privileged -d --name c7_ssh_rabbit_mq --net webapps --ip 172.18.0.40  -d -p 15672:15672 -p 5672:5672 rabbitmq:management

进入容器

  • 直接DOCKER命令
    docker exec -it c7_ssh_nginx /bin/bash  
    
  • 访问SSH 22端口
    • 账号 root
    • 密码 

首次访问项目修改事项(否则访问会提示502 gateway错误)

原因:没有修改fastcgi_pass指向php解释器到php容器,而且因为前面配置容器时将网络指向的时host,所有要将其指向127.0.0.1:9000。

直接vim nginx_php_inc.conf的话是没有这个文件的
首先要进入 c7_ssh_nginx 容器

docker exec -it c7_ssh_nginx /bin/bash
cd ~ 进入目录
vim nginx_php_inc.conf


修改 fastcgi_pass 指向PHP解释器到 PHP容器( 172.18.0.10:9000 )

修改完nginx配置要重启nginx服务器 

systemctl reload nginx.service

项目详情和访问

站点已经在 Nginx容器内配置好,如果不一样请自定义Nginx站点配置 /etc/nginx/conf.d/

常见问题解决

  • 容器内时间问题
    • 查看时间/时区

      date -R timedatectl status

    • 时区问题

      timedatectl set-timezone Asia/Shanghai

    • 时间强制同步

      #yum -y install ntpdate
      #ntpdate ntp1.aliyun.com
      

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值