目录

WIN11系统安装

Win10系统安装

Win7 安装

docker 安装mysql

另外一些坑

1. docker中, 修改了my.cnf 配制文件后, mysql 如何重启?

2. docker中mysql初始化失败

3. docker-compose 安装提示: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type

4. docker 安装 nginx + php 环境 . 错误 111


安装前建议

docker默认安装在C盘下,建议转移到其他的盘

CMD 管理员模式执行

mklink /j "C:\Program Files\Docker" "F:\environment\Docker"

数据文件

docker-desktop-data 是存放docker镜像

docker-desktop 是存放docker-desktop 数据

它们默认存放在 C:\Users${用户文件}\AppData\Local\Docker

WIN11系统安装


Win10系统安装

开启 Hyper-V、适用Linux的widnows子系统。

下载docker桌面版 Docker Hub

直接安装成功!

Win7 安装

刚接触docker, 开发环境从docker仓库中拉取到是挺方便的

但是作为一名开发人员来说, win7下开发然后上传到linux服务器才是常事

那么让linux中的环境跟win7下的环境统一是很有必要的一件事情

在win7中安装了docker实现了环境的统一

但是不能在docker去编程啊

经过研究发现挂载

但是都写的并不是这么明显

现在记录下

解决步骤

1. 安装好docker环境 (自行搜索网上教程)

2. 运行docker (自行搜索网上教程)

3. 打开docker管理器, 右键选择设置

接下来看图操作咯 有人看我的文章 在完善吧

docker windows版安装 docker装win10_docker

docker windows版安装 docker装win10_mysql_02

4. 打开putty进入docker (docker 默认地址: 192.168.99.100  默认账号: docker 默认密码: tcuser)

docker windows版安装 docker装win10_docker windows版安装_03

5. 查看目录是否挂载成功

docker windows版安装 docker装win10_docker windows版安装_04


出现 docker 这个 对应 docker 这个就说明挂载成功了

注意: 这个docker是我自己配置的docker, 各位参考自己第三步共享文件夹那里查看

现在我们进入目录测试下

docker windows版安装 docker装win10_docker windows版安装_05

docker windows版安装 docker装win10_docker windows版安装_06

测试通过 成功读取了宿主机共享文件夹下面的目录

6 拉取nginx镜像 (自行搜索网上教程)

7 运行镜像 (下图很多空白行 只是为了各位看的更加清楚 不用管我 我就是这么体贴)

docker windows版安装 docker装win10_docker windows版安装_07

命令复制出来: docker run -dit --name nginx -p 8000:80 -v /docker/wwwroot:/usr/share/nginx/html nginx /bin/bash

-v 命令 挂载 冒号(:)分割 

第一个参数  /docker/wwwroot  这里 /docker是第5步红色框框里面第一个docker 即宿主机对应的挂载文件 此处对应的我的路径是 G:/dokcer .  所以 /docker/wwwroot 代表的就是 宿主机(win7) G:/docker/wwwroot

第二个参数 /usr/share/nginx/html 是镜像中nginx的的文件路径, 这样镜像nginx中的配置的网站更目录就指向了宿主机 

docker windows版安装 docker装win10_docker_08

8. 进入镜像运行启用nginx

docker windows版安装 docker装win10_mysql_09

进入镜像复制出来: docker exec -it nginx /bin/bash  (注意 nginx 是第7步 --name 后面的nginx名字)

启动nginx:  /etc/init.d/nginx start

9. 到宿主机目录下创建一个G:/docker/wwwroot/index.html文件 看下是否可以访问

docker windows版安装 docker装win10_docker_10

10 访问 192.168.99:100:8000 成功

docker windows版安装 docker装win10_docker windows版安装_11

参考: https://www.jianshu.com/p/d809971b1fc1

docker 安装mysql

采用pull官方mysql 8.0

mysql官方说明文档 MySQL :: MySQL 8.0 Reference Manual :: 2.5.6.1 Basic Steps for MySQL Server Deployment with Docker

本来不打算写这个的

但是安装的时候发现了一个坑

死活就是链接不上

报错信息如下两种情况

输入 mysql -uroot -p 提示

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

输入 mysql -h127.0.0.1 -uroot -p 提示

ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)

各种找Google 找到原因跟解决办法

原因: 3306 绑定了本地回旋地址

找到数据库的配置文件 my.cnf

docker windows版安装 docker装win10_mysql_12

修改绑定地址: bind-address=127.0.0.1

docker windows版安装 docker装win10_mysql_13

参考: ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111) - Stack Overflow

另外一些坑

1. docker中, 修改了my.cnf 配制文件后, mysql 如何重启?

命令: service mysqld restart 并不起作用

直接重启容器,

2. docker中mysql初始化失败

提示:  Data Dictionary initialization failed

解决:

根据错误提示, 初始化一下(  mysqld --initialize ), 继续报错, 坑爹

docker windows版安装 docker装win10_docker_14

OK 查看下 /var/lib/mysql 下面是否有问题, 有问题则移除

docker windows版安装 docker装win10_docker windows版安装_15

重新初始化  mysqld --initialize --console  (时间会稍微有点长)

加上 --console 获取第一次进入数据库时候的密码

docker windows版安装 docker装win10_docker windows版安装_16

这下应该可以了吧?

重新开窗口测试

docker windows版安装 docker装win10_docker windows版安装_17

然后还是坑爹 不过看到了胜利的希望 熟悉的错误!

安装 vim 修改配制文件 my.cnf

找到数据库的配置文件 my.cnf

docker windows版安装 docker装win10_mysql_12

修改绑定地址: bind-address=127.0.0.1

重启并进入mysql容器 
docker restart mysql
docker exec -it mysql bash
启动数据库服务

docker windows版安装 docker装win10_docker windows版安装_19

进入数据库

docker windows版安装 docker装win10_nginx_20

3. docker-compose 安装提示: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type

其实错误提示并不准确, 具体的来说就是你文件路径错误

特别是在win7下面, 注意你在 vm virtualbox 中做了共享文件夹的映射 (参考上面的第三个步骤)

这里编写时候, 需要写绝对路径(即如下图, /docker相当于G盘下的docker文件夹

docker windows版安装 docker装win10_mysql_21

docker windows版安装 docker装win10_nginx_22

4. docker 安装 nginx + php 环境 . 错误 111

这个比较坑爹

我们直接拉去官方php代码 docker pull php

注意: 这种方式获取到不是php-fpm的运行模式

如果想采用我们常用的fpm运行模式, 拉取命令应该为: docker pull php:fpm

获取完毕后,  运行你会发现还是不行. 打开页面504 nginx错误111

网上各种说修改www.conf的监听端口 0.0.0.0

实际上原因是 你的php根本就没有运行!!!

拉取官方,这是一个最大的坑.

这个docker的官方手册并没有提及需要手动进入容器运行php

长期使用集成环境的问题显现出来

查看php是否运行, 可以采用 ps aux 查看是否存在php进程

ps 命令不存在, 安装方式:

Ubuntu 系统

apt-get update 

apt-get install procps

centos系统

yum -y install procps-ng

php的启动方式: php-fpm

如下图则是成功!

docker windows版安装 docker装win10_nginx_23

docker-compose 安装配制 推荐一个博客, 我也是根据这篇博客来配置的文件, 对新手友好

5.   挂载成功后,更新文件没有效果容易忽略的点

我使用nignx,然后将conf.d配置文件夹挂载到我的电脑上,我往这个文件夹里面添加配置文件的时候,配置文件写的有问题,导致容器一直启动失败。然后我通过docker desktop去查看这个挂载目录,发现我新添加的配置文件并不在目录里面。我以为是我挂载失败了,其实问题在于容器没有启动成功,就刷新不了目录,就算重启电脑都没有用

以上都是作者一步步各种翻阅资料, 调试得出来的

也不知道为啥官方的都各种步骤复制粘贴也是无效

可能是我在win7下执行的原因?

反正是挺坑的

安装的一些注意事项可以查看我的另外一篇文章