您的位置:首页 > 运维架构 > Docker

win7下安装docker进行开发

2019-03-12 17:30 141 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fendouweiqian/article/details/88423764

刚接触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官方说明文档 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

 

另外一些坑

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
启动数据库服务

进入数据库

5. 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 安装配制 推荐一个博客, 我也是根据这篇博客来配置的文件, 对新手友好

博客链接: https://blog.51cto.com/11962757/2086760

  

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

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

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

反正是挺坑的

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: