刚接触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
采用pull官方mysql 8.0
mysql官方说明文档 https://dev.mysql.com/doc/refman/8.0/en/docker-mysql-getting-started.html
本来不打算写这个的
但是安装的时候发现了一个坑
死活就是链接不上
报错信息如下两种情况
输入 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
参考: https://stackoverflow.com/questions/1673530/error-2003-hy000-cant-connect-to-mysql-server-on-127-0-0-1-111
命令: service mysqld restart 并不起作用
直接重启容器, 其它办法直接在容器内重启, 请告知
提示: 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
启动数据库服务
进入数据库
其实错误提示并不准确, 具体的来说就是你文件路径错误
特别是在win7下面, 注意你在 vm virtualbox 中做了共享文件夹的映射 (参考上面的第三个步骤)
这里编写时候, 需要写绝对路径(即如下图, /docker相当于G盘下的docker文件夹
这个比较坑爹
我们直接拉去官方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 安装配制 推荐一个博客, 我也是根据这篇博客来配置的文件, 对新手友好
博客链接: https://blog.51cto.com/11962757/2086760
以上都是作者一步步各种翻阅资料, 调试得出来的
也不知道为啥官方的都各种步骤复制粘贴也是无效
可能是我在win7下执行的原因?
反正是挺坑的