Skip to content

Commit 1765565

Browse files
author
Songyu By Home
committed
更新文章
1 parent 05aa600 commit 1765565

16 files changed

+581
-28
lines changed
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
---
2+
layout: post
3+
title: "DockerToolbox的安装与挂载"
4+
date: 2019-08-28 21:02:55 +0800
5+
tags: docker
6+
description:
7+
---
8+
9+
“最近晚上有空嘛,给你俩分享点东西。”
10+
“都知道代码用GitHub进行远程仓库储存,用了这个环境也可以储存在远程仓库,以后环境、代码全可以通过远程仓库来进行本地部署。”
11+
通过简单的介绍,大佬(敬爱的宝哥)开始了对docker的简单说明,之后就有了自己的尝试和环境部署,于是就有了这篇文章
12+
13+
最开始看了官方的[安装文档(Windows)][install],官方推荐安装Docker Desktop,由于我的Win10是家庭版的,无法安装,只好安装DockerToolbox来作为docker的使用工具,由于Win版的安装包是exe文件。就不做过多的介绍了
14+
15+
注:在DokcerToolbox安装完成后,启动时会自动下载boot2docker.iso作为虚拟主机文件,但是由于网络问题,可能会出现问题,其实在DokcerToolbox的安装目录中,就已经存在此文件,可以将文件复制到指定目录中(我本地的目录为:C:\Users\NAME\.docker\machine\cache),在重新启动即可
16+
17+
安装完成后,同时还会为我们安装Oracle VM VirtualBox虚拟机管理软件,稍后的虚拟机目录转移和目录挂载,都是靠这个来完成的
18+
19+
由于虚拟机默认是安装在C盘用户目录下的,同时虚拟硬盘也是在C盘下的,如果要将虚拟硬盘移动到其他目录,需要怎么做呢
20+
21+
![](/images/2019-08-28-1.jpg)
22+
点击虚拟介质管理
23+
24+
![](/images/2019-08-28-2.jpg)
25+
![](/images/2019-08-28-3.jpg)
26+
点击复制,按钮,按照步骤操作,注意类型选选择最后一个虚拟机磁盘
27+
28+
![](/images/2019-08-28-4.jpg)
29+
点击设置,并选择左侧的储存,可以将原来的删除,然后点击加号,选择使用现有磁盘按钮,选择刚才添加的虚拟磁盘
30+
31+
DockerToolbox的其实就是在Windows中安装一个虚拟机,然后通过这个虚拟机去和docker进行连接,所以在本机是看不到文件目录的,在开发中需要操作文件的话,只靠命令行的话肯定是不会方便的,所以我们可以在虚拟机中创建一个目录,然后将目录挂载到本地的一个目录,这样虚拟机中的文件就会实时出现在我们的本机中了,挂载步骤如下:
32+
33+
![](/images/2019-08-28-6.jpg)
34+
![](/images/2019-08-28-5.jpg)
35+
同样选择设置,然后左侧的共享文件夹按钮,点击加号,注意下面的选项不要选择只读分配,然后记住那个共享文件夹名称,稍后会用到
36+
37+
然后通过命令,进入虚拟机中创建一个目录,并将刚才的共享文件夹名称与目录挂载
38+
{% highlight dos %}
39+
docker-machine ssh default
40+
{% endhighlight dos %}
41+
{% highlight dos %}
42+
sudo mount -b vboxsf mydocker /mydocker
43+
{% endhighlight dos %}
44+
vboxsf后面两个名称前面是共享文件夹名称,后面是虚拟主机的目录,这样就挂载成功了,在这个目录中的修改也会直接映射在本地的文件夹中
45+
46+
47+
[install]:https://docs.docker.com/docker-for-windows/install/
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
---
2+
layout: post
3+
title: "docker搭建lnmp环境并挂载"
4+
date: 2019-09-08 21:57:00 +0800
5+
tags: docker
6+
description:
7+
---
8+
9+
10+
上篇文章讲到已经将虚拟机中的目录挂载到本机中,那么,接下来要搭建的环境,只需要将软件安装到虚拟机中的挂载目录,在本机中就可以看到了。
11+
12+
作为一个PHPer,当然要首先配置php的运行环境。(以php7.0,MySQL5.7,nginx作为环境):
13+
14+
### [](#header-3)一、mysql5.7安装
15+
1、下载镜像
16+
{% highlight dos %}
17+
docker pull mysql:5.7
18+
{% endhighlight dos %}
19+
20+
2、启动镜像
21+
{% highlight dos %}
22+
docker run --name mysql \
23+
-p 3306:3306 \
24+
-e MYSQL_ROOT_PASSWORD mysql:5.7
25+
{% endhighlight dos %}
26+
27+
3、启动成功后,将mysql容器中的配置文件复制到本机目录中(挂载时只挂载目录,不挂载文件)
28+
{% highlight dos %}
29+
docker cp 288e7f3b044d(容器id):/etc/mysql/conf.d /mydocker/lnmp/mysql/conf(本地挂载目录
30+
{% endhighlight dos %}
31+
32+
4、删除容器,重启建立容器,并挂载配置目录和数据目录
33+
{% highlight dos %}
34+
docker run --name mysql5.7 \
35+
-p 3306:3306 \
36+
-v /mydocker/lnmp/mysql/data(虚拟机中挂载目录):/var/lib/mysql \
37+
-v /mydocker/lnmp/mysql/conf(虚拟机中挂载目录):/etc/mysql/conf.d \
38+
-e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
39+
{% endhighlight dos %}
40+
41+
由于在将VirtualBox虚拟机中的目录以共享的形式挂载到本地,所以在启动的时候会报错
42+
43+
从错误中大概能看到好像是因为mysql默认数据是innodb格式,然后异步IO的配置在虚拟机中不被支持,所以在启动的时候,在最后面增加了一行my.cnf的默认配置将异步IO配置关掉,在命令最后添加
44+
{% highlight dos %}
45+
--innodb-use-native-aio=0
46+
{% endhighlight dos %}
47+
添加之后挂载成功,并且容器启动成功
48+
49+
### [](#header-3)二、nginx安装
50+
1、下载nginx镜像
51+
{% highlight dos %}
52+
docker pull nginx
53+
{% endhighlight dos %}
54+
55+
2、建立容器,并将配置文件复制到本地得虚拟机挂载目录中
56+
{% highlight dos %}
57+
docker cp e797b38dd76b(容器id):/etc/nginx/conf.d /mydocker/lnmp/nginx/conf/conf.d(本地挂载目录)
58+
{% endhighlight dos %}
59+
60+
3、删除容器,重新建立容器,并挂载配置文件、项目空间和日志目录
61+
{% highlight dos %}
62+
docker run --name nginx -p 80:80 \
63+
-v /mydocker/lnmp/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro \
64+
-v /mydocker/lnmp/nginx/conf/conf.d:/etc/nginx/conf.d \
65+
-v /mydocker/lnmp/nginx/log:/var/log/nginx \
66+
-v /mydocker/lnmp/nginx/html:/usr/share/nginx/html nginx:latest
67+
{% endhighlight dos %}
68+
69+
4、建立成功,可以直接在本地目录中修改配置文件
70+
71+
### [](#header-3)三、php7.0安装
72+
1、下载php镜像
73+
{% highlight dos %}
74+
docker pull php:7.0-fpm
75+
{% endhighlight dos %}
76+
77+
2、建立容器,并挂载文件,将php的html目录挂载到和nginx的html相同目录下
78+
{% highlight dos %}
79+
docker run --name php7 \
80+
-p 9000:9000 \
81+
-v /mydocker/lnmp/php:/usr/local/etc/php \
82+
-v /mydocker/lnmp/nginx/html:/var/www/html \
83+
php:7.0-fpm
84+
{% endhighlight dos %}
85+
86+
3、查询php容器得分配ip
87+
{% highlight dos %}
88+
docker inspect --format='{ {.NetworkSettings.IPAddress} }' php7.0
89+
{% endhighlight dos %}
90+
91+
4、将查询到的php容器ip配置到nginx的配置文件中,重启nginx即可访问phpinfo信息
92+
93+
### [](#header-3)四、docker network配置
94+
95+
上面的步骤中,获取到php的ip之后,配置到nginx中,有一个缺点,就是php容器的ip是会变化的,所以如果一直这样的话,我们在每次使用之前就要去检查ip是否正确,再进行替换,这样非常不方便。
96+
97+
好在docker提供了docker network命令,可以将nginx的配置文件中的ip直接换成对应php容器的名称就可以,这样就不会被ip烦恼了
98+
99+
1、创建network
100+
{% highlight dos %}
101+
docker network create lnmp
102+
{% endhighlight dos %}
103+
104+
2、将php和nginx分别加入到刚才的network中
105+
{% highlight dos %}
106+
docker network connect lnmp php7.0
107+
docker network connect lnmp nginx
108+
{% endhighlight dos %}
109+
110+
3、加入成功后可以查询network下的容器
111+
{% highlight dos %}
112+
docker network inspect lnmp
113+
{% endhighlight dos %}
114+
115+
4、将nginx中的fastcgi_pass配置中的ip修改为php容器名称,重启nginx即可
116+
117+
118+
以上就是lnmp环境搭建的步骤,成功之后,就可以运用docker来进行本地开发了

images/2019-08-28-1.jpg

65.4 KB
Loading

images/2019-08-28-2.jpg

36 KB
Loading

images/2019-08-28-3.jpg

39 KB
Loading

images/2019-08-28-4.jpg

69.5 KB
Loading

images/2019-08-28-5.jpg

58.8 KB
Loading

images/2019-08-28-6.jpg

52.5 KB
Loading

0 commit comments

Comments
 (0)