1.下载
首先来到官网下载安装包
https://docs.docker.com/toolbox/overview/
下载后,得到如下.exe文件
2.安装
双击DockerToolbox.exe,点击Next,选择安装路径,开始安装。
下面的组件建议全部勾选,如果已经安装过VirtualBox和Git的可以不勾选。
Next下一步,注意添加到环境变量,如果没有选,安装后要把安装路径添加到环境变量。
Next下一步,一路默认,直到安装完毕。
完成安装后可在桌面看到如下3个图标:
同时,在安装目录下会有一个boot2docker.iso文件,后面会用到
3.使用
双击Docker Quickstart Terminal,等待docker启动,第一次运行Docker Quickstart Terminal时会进行Docker环境的初始化,会在VirtualBox中自动创建名字为【default】的linux虚拟机,再此过程中会用到boot2docker.iso镜像文件。默认情况下,启动程序会从GitHub上下载此文件的最新版,但由于文件相对较大且速度不给力,多数情况下会下载失败,造成Docker环境无法启动,
解决方法:
其实DockerToolbox安装文件自带了boot2docker.iso镜像文件,位于安装目录下(如E:\install\Docker Toolbox) ,将此文件拷至C:\Users\Administrator\.docker\machine\cache目录下,然后重新启动,便可初始化成功。如下图:
界面中出现的IP【192.168.99.100】是VirtualBox中名字为【default】虚拟机的ip地址,这个在后面会用到。
双击Oracle VM VirtualBox 打开虚拟机,挂载共享文件夹,将本地项目目录挂载到虚拟机,方便在虚拟机中访问项目:
设置过共享文件夹后,进入docker默认的虚拟主机:docker-machine ssh default,也就是终端显示docker@defualt:~$,输入命令:mount,查看虚拟主机中的共享文件夹是否已存在,输入命令:cd /WWW 可进入共享文件夹看到映射的本地项目。
也可以使用xshell连接登录虚拟机:
默认的用户名是:docker,密码是:tcuser,填写完成后,登录。登录成功界面如下图:
4.设置完共享文件夹后,开始安装镜像
通过docker search php查找PHP镜像,通过docker pull 镜像名/镜像ID 拉取镜像,我选择的是PHP7.1。进入docker主机,拉取PHP镜像,如下:
拉取Nginx镜像:docker pull nginx,不指定版本号则拉取最新的tag。
查看安装的镜像:docker images
5、安装了镜像之后,开始创建容器,创建容器时会设置映射文件夹,这时会用到上面设置的共享文件夹。
创建PHP容器:docker run -d -p 9000:9000 -v /WWW:/data/www --name php71 php:7.1-fpm
以上命令中:
-d表示后台运行
-p表示将宿主机端口映射到本机端口
-v表示目录挂载 将宿主机目录挂载到容器目录【冒号前面是宿主机目录,冒号后是容器内的目录】
--name 指定容器名称
后面指定创建容器使用的镜像。
容器状态变更:
启动容器:docker start 容器名/容器ID
停止容器:docker stop 容器名/容器ID
重启容器:docker restart 容器名/容器ID
删除容器:docker rm 容器名/容器ID
删除镜像:docker rmi 镜像名/镜像id
创建Nginx容器
docker run -d -p 8080:80 -v /WWW:/data/www --name mynginx nginx:latest
挂载目录必须与PHP挂载目录一致。
安装完了之后,查看创建的容器:
docker ps -a
status 状态为up 表示已启动,exited表示退出状态。
进入容器,查看共享文件夹映射到容器的目录:
修改nginx的相关配置
在容器中是没有vim命令的,所以不能在容器中直接修改配置文件。所以我们必须通过变通的方式去解决这个问题,否则只能在每个容器中安装vim。
首先登录到对应的容器中,查看配置信息路径,这在之后修改时会用到。
进入容器:docker exec -ti nginx /bin/bash
-i : --interactive,交互模式。
-t : --tty,开启一个伪终端。
/bin/bash : 必须写,否则会报错。这是开始伪终端时,进入bash界面,也就是命令行界面。
nginx的配置文件在/etc/nginx/conf.d/default.conf,退出容器Ctrl+Shift+p+q,返回docker。
将容器配置文件复制到本地映射目录下,修改本地的default.conf文件,改过之后再复制到容器内:
docker cp mynginx:/etc/nginx/conf.d/default.conf /WWW/default.conf
docker cp /WWW/default.conf mynginx:/etc/nginx/conf.d/default.conf
命令中要指定将文件复制到哪个容器(此处是mynginx容器)。
进入myginx容器,重启Nginx服务:
docker exec -it nginx bash
service nginx reload
重启成功后,在映射的本地目录下创建index.php文件,输出“Hello World”,保存文件。在浏览器中输入http://192.168.99.100:8080/index.php
运行成功!
然后,又修改了本地index.php文件,进入容器映射的目录,看到容器中的这个文件同步修改了,所以容器目录和本地目录映射后,只修改本地文件就可以同步到容器中了,无需再进行复制替换操作。
接下来,部署一个项目:
同样修改从容器复制下来的default.conf文件,添加一个server配置,如下:
把这个文件再次拷贝到容器中:docker cp /WWW/default.conf mynginx:/etc/nginx/conf.d/default.conf
进入容器:docker exec -it mynginx /bin/bash
重启nginx:service nginx reload
在本地hosts文件中添加:192.168.99.100 dc.rest.bxd
在浏览器中输入:http://dc.rest.bxd:8080 访问项目
Redis、mysql等可根据需求自行安装。