dockertoolbox下lnmp工作环境配置总结

前提说明:
docker在windows下有两款软件,dockertoolbox以及docker for windows.
使用docker for windows的前提条件是系统支持hyper-v.

此篇文章是针对dockertoolbox的使用和安装过程中遇到的问题,本人做的一些工作总结(✿◡‿◡)。

应该清楚的概念:
容器、镜像、宿主机、数据卷

1、下载安装dockertoolbox

可以参考我的另一篇文章:《下载安装dockertoolbox》

2、拉取镜像:

docker pull 工作镜像名

3.oracle vm vitualbox的配置

如果不提前配置好这一步,那么会导致本机目录文件映射到容器这一步骤失败
双击oracle vm vitualbox图标:
挂载之前按下图提前配置好,共享文件夹名称以及路径最好保持统一
在这里插入图片描述
在oraclevitualbox里面创建了/var/www/work文件夹,然后把本地主机e盘的文件目录挂载到了该文件夹下面
在虚拟机root账户下执行以下两行命令

mkdir /var/www/work
mount -t vboxsf e/www/work /var/www/work
mount -t vboxsf 共享文件夹名称 虚拟机内工作目录存放的地址
mount -t vboxsf share mount_point

参考文档:http://www.javashuo.com/article/p-oafxujsp-cs.html.

4、创建数据卷(本地目录映射到容器中的目录)

(设置目录映射前置条件:如果是docker for windows客户端->setting->Shared Device)
此处的/var/www/work路径就是指上行命令在虚拟机内工作目录存放的地址,后面的地址理解为docker容器里面工作目录存放的地址

docker run -v /var/www/work:/var/www/work --name 数据卷名 镜像名 /bin/bash
例如:
docker run -v /test1:/test2 --name test1 镜像名 /bin/bash
这条命令会在docker里面mount(挂载)一个test1的目录,这个目录会和另外一个目录test2做映射,可以通过docker inspect -f {{.volume}} test1 查看,或者直接通过docker inspect -f test1 查看,在其中找关键字mount 就可以了。从mounts的source和destination就可以看到这两个之间的联系.

5.加载数据卷、映射端口并启动该容器:

docker run -it --volumes-from 数据卷名 --name 容器名 -p 30009:80 镜像名 /bin/bash

6.将现有的容器保存为一个新的镜像

docker commit -m=“说明文字” -a=“作者” 镜像id 镜像名

7.将新的镜像push至dockerhub上

docker push 镜像名:latest

可能遇到的问题有:
后续中在输入http://192.168.99.100:30009/进行访问时报nginx403错误
在/var/log/nginx 中查看错误日志tail -f error.log时发现以下报错

在这里插入图片描述
nginx403错误的原因有以下几种:
1.网站禁止特定的用户访问所有内容,例:网站屏蔽某个ip访问。
2.访问禁止目录浏览的目录,例:设置autoindex off后访问目录。
3.用户访问只能被内网访问的文件。

对此我进行了以下修改:

  1. cd /etc/nginx/
    vim nginx.conf ,将user 用户原来www-data改为root;
    在这里插入图片描述

2.在nginx配置文件目录:
vim /etc/nginx/sites-available/default
root 后面路径改为/var/www/work/
在这里插入图片描述

3.给/var/www开权限
chmod -R 777 /var/www

至此就可以正常访问工作目录文件了。撒花★,°:.☆( ̄▽ ̄)/$:.°★
在这里插入图片描述

可能用到的容器命令有:
docker start 容器名 -启动容器
docker stop 容器名 -关闭容器
docker exec -it 容器名 /bin/bash -进入容器
exit -退出容器
docker rm 容器名 -删除容器

docker ps -查看当前启动中的容器
docker ps -a -查看所有容器

docker images -查看所有镜像
docker image ls -查看所有镜像,与docker images效果相同
docker rmi 镜像名 -删除镜像

docker stop $(docker ps -q) & docker rm $(docker ps -aq) -一键停止并删除所有容器
docker run -d -P 80:80 image_Name -镜像端口映射

docker cp d:/localhost/demo.php containenr_Id:/localhost/demo -将本地文件拷贝到容器中,反之也可以将容器中文件拷贝到本地