window10上搭建docker开发环境,一路踩了很多坑,网络上看了各种文章,不是千篇一律照抄就是写的不详实,总是在关键点上不说明白,照着记录操作下来完全用不了,特些就自己记录一下,以后尽量少踩坑,有需要的同学拿走不谢
本人机器是win10,查看本机是否开启了虚拟化
像我这样是没有开启虚拟化的,开启虚拟化的过程每种机器可能有一些差别,但是主要流程如下
开机后在控制面板\所有控制面板项\程序和功能
点击启动或关闭windows功能
把Hyper-V的功能都勾选上,这样本地环境已基本ok了
安装Docker Desktop for Windows
Docker Desktop 是 Docker 在 Windows 10 和 macOS 操作系统上的官方安装方式,这个方法依然属于先在虚拟机中安装 Linux 然后再安装 Docker 的方法。
Docker Desktop 官方下载地址: https://hub.docker.com/editions/community/docker-ce-desktop-windows
注意:此方法仅适用于 Windows 10 操作系统专业版、企业版、教育版和部分家庭版!
如果是win10家庭版本的同学可以升级为专业版(ps可以去问万能的淘宝)
下载完后是个exe安装包直接安装就可以了,安装完成之后如下图
如果是第一次安装,安装完成后会提示
这是因为docker容器是只能运行在linux内核中的,win10虽然自带了WSL linux1的内核,但是当前docker需要WSL linux2的内核,没有关系,按提示的链接去下载安装就可以了,在 Windows 10 上安装适用于 Linux 的 Windows 子系统 (WSL) | Microsoft Docs文档里在很详细的安装说明,还是中文的,英文不好的同学来说还是很友好的
安装 完成后运行下面的命令查看docker相关版本
docker --verison
docker-compose --verison
docker-machine --veriosn
复制
提示docker-machine没有那手动安装一下就可以了,安装方法
Install Docker Machine | Docker Documentation
base=https://github.com/docker/machine/releases/download/v0.16.0 \
&& mkdir -p "$HOME/bin" \
&& curl -L $base/docker-machine-Windows-x86_64.exe > "$HOME/bin/docker-machine.exe" \
&& chmod +x "$HOME/bin/docker-machine.exe"
复制
完成后就可以了 如下图
安装完成后要重启docker 不然会报错,报错如下
docker本地运行git shell问题
解决方法 用cmd管理员方式运行
安装完所后有两种方法使用docker
1:用cmd命令行的方式来运行
在这里插入代码片
复制
2 : 使用docker程序来运行,桌面上会有docke应用程序图标
,屏蔽右下角也会有doceker图标,都可以进入docker管理介面**
可以在这里管理自己的镜像和容器
docker镜像仓库有很多php和nginx的镜像,有独立镜像也有分开的镜像,如果只是自己测试的话拉共公的镜像就可以了,但是我这边是公司统一的镜像包,为了统一开发环境,所以nginx和php是两个镜像文件,nginx容器对外提供接口,php只处理逻辑,下面记录下具体的安装流程
1.导入本地镜像
docker import php.tar php #导入本地镜像文件并命名为php
docker import nginx.tar nginx #导入本地镜像文件并命名nginx
复制
创建完镜像后用镜像创建容器,有三种方法创建容器:网桥,端口映射,host,
host方式如果是动态IP的话支持不好,所以本次是采用网桥和端口映射的方式来实现的
默认情况下docker是自带了一个bridge网格,如果不配置的话就是默认在这个网桥下面
mynet和devnet是我自己创建的网桥
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021042919292883.png
docker network list #列出所有网络信息
docker network create -d bridge devnet #创建网桥
docker inspect devnet#查看网桥信息
复制
查看devnet网桥可以看到网段是172.19.0.1/16,这个是docker自己分配的,当然你也可以通过subnet参数指定自己的网段,如docker network create --subnet=192.168.65.0/24 testnet
就可以指定创建一个自己的网段,一般会默认第一个ip为网关,创建网段是为了把接口下来要创建的容器都放在同一个网关下,这样同一个网关下的容器就可以互相通信了
2.创建nginx容器
docker run -d -i -t --name nginx -p 80:80 –-network=devnet -v E:\project\docker\nginx\vhost:/usr/local/nginx/conf/vhost -v E:\project\docker\nginx\logs:/data/logs/nginx nginx:latest /bin/bash
--name 命令容器
--network 定义网络
-p 端口映射
-v 绑定路径
复制
3.创建php容器
docker run -d -i -t -e “APP_ENV=local” –-network=devnet --name php -v E:\project\cs\cs:/data/www/api -v E:\project\docker\php\etc:/usr/local/php/etc -v E:\project\docker\tmp-data:/data/tmp_data -v E:\project\docker\conf:/data/conf php:latest /bin/bash
-e 设置环境变量
复制
4.到这里,两个容器就已经全部创建完成了,查看容器
可以看到两个容器在同一个网关下,并且被分配了不同的ip, 172.19.0.2和172.19.0.3,此时两个容器是可以互相ping通的,
注意 ping时要ping容器名或容器id,直接ping ip是不可以的,因为这个ip是虚拟的,直接ping ip会ping到外界的真实ip
nginx配置
因为nginx是独立的服务,请求php的服务需要指向容器地址,所以fastcgi的地址也要写成php容器的地址
php配置
因为php现在一个独立的容器,php容器需要提供的9000端口需要监听到来自nginx容器的请求,所以php-fpm.conf文件也要修改一下
估后启动服务
就可以正常访问了
原网址: 访问
创建于: 2022-11-25 17:10:40
目录: default
标签: 无
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论