小言_互联网的博客

windows10使用docker搭建开发环境

373人阅读  评论(0)

window10上搭建docker开发环境,一路踩了很多坑,网络上看了各种文章,不是千篇一律照抄就是写的不详实,总是在关键点上不说明白,照着记录操作下来完全用不了,特些就自己记录一下,以后尽量少踩坑,有需要的同学拿走不谢

本地环境支持

本人机器是win10,查看本机是否开启了虚拟化

像我这样是没有开启虚拟化的,开启虚拟化的过程每种机器可能有一些差别,但是主要流程如下


开机后在控制面板\所有控制面板项\程序和功能点击启动或关闭windows功能


把Hyper-V的功能都勾选上,这样本地环境已基本ok了

安装docker

安装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

#ps:下面的命令是只能运行在git bash命令行里的
 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使用

安装完所后有两种方法使用docker
1:用cmd命令行的方式来运行

在这里插入代码片

2 : 使用docker程序来运行,桌面上会有docke应用程序图标
,屏蔽右下角也会有doceker图标,都可以进入docker管理介面**
可以在这里管理自己的镜像和容器

本地搭建php和nginx容器

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文件也要修改一下


估后启动服务


就可以正常访问了


转载:https://blog.csdn.net/ithover/article/details/116270056
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场