目录
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管理器, 右键选择设置
接下来看图操作咯 有人看我的文章 在完善吧
4. 打开putty进入docker (docker 默认地址: 192.168.99.100 默认账号: docker 默认密码: tcuser)
5. 查看目录是否挂载成功
出现 docker 这个 对应 docker 这个就说明挂载成功了
注意: 这个docker是我自己配置的docker, 各位参考自己第三步共享文件夹那里查看
现在我们进入目录测试下
测试通过 成功读取了宿主机共享文件夹下面的目录
6 拉取nginx镜像 (自行搜索网上教程)
7 运行镜像 (下图很多空白行 只是为了各位看的更加清楚 不用管我 我就是这么体贴)
命令复制出来: 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中的配置的网站更目录就指向了宿主机
8. 进入镜像运行启用nginx
进入镜像复制出来: docker exec -it nginx /bin/bash (注意 nginx 是第7步 --name 后面的nginx名字)
启动nginx: /etc/init.d/nginx start
9. 到宿主机目录下创建一个G:/docker/wwwroot/index.html文件 看下是否可以访问
10 访问 192.168.99:100:8000 成功
参考: 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
修改绑定地址: bind-address=127.0.0.1
参考: 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 ), 继续报错, 坑爹
OK 查看下 /var/lib/mysql 下面是否有问题, 有问题则移除
重新初始化 mysqld --initialize --console (时间会稍微有点长)
加上 --console 获取第一次进入数据库时候的密码
这下应该可以了吧?
重新开窗口测试
然后还是坑爹 不过看到了胜利的希望 熟悉的错误!
安装 vim 修改配制文件 my.cnf
找到数据库的配置文件 my.cnf
修改绑定地址: bind-address=127.0.0.1
重启并进入mysql容器
docker restart mysql
docker exec -it mysql bash
启动数据库服务
进入数据库
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文件夹
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-compose 安装配制 推荐一个博客, 我也是根据这篇博客来配置的文件, 对新手友好
5. 挂载成功后,更新文件没有效果容易忽略的点
我使用nignx,然后将conf.d配置文件夹挂载到我的电脑上,我往这个文件夹里面添加配置文件的时候,配置文件写的有问题,导致容器一直启动失败。然后我通过docker desktop去查看这个挂载目录,发现我新添加的配置文件并不在目录里面。我以为是我挂载失败了,其实问题在于容器没有启动成功,就刷新不了目录,就算重启电脑都没有用
以上都是作者一步步各种翻阅资料, 调试得出来的
也不知道为啥官方的都各种步骤复制粘贴也是无效
可能是我在win7下执行的原因?
反正是挺坑的
安装的一些注意事项可以查看我的另外一篇文章