首先要获取镜像
docker pull nginx
获取完镜像之后就可以直接通过docker run来获取容器了,不过如果想要对nginx的配置进行修改的话就需要通过docker exec进入nginx容器内部进行修改,很不方便,所以可以给nginx挂载个数据卷(可以在外部同步数据)
nginx一般需要挂载的数据卷就是nginx.conf、html目录、conf.d(看需要,还可以挂载一个log目录)
挂载数据卷的内容一般可以从网上直接复制出来(或者本身就有对应的文件),当然也可以使用nginx默认的文件(这里就是使用的nginx自带文件)
如果不需要对数据卷进行修改仅仅只是下载nginx的话,可以执行以下命令
docker run -d --name nginx -p 80:80 nginx
此时就可以打开浏览器看看效果了(虚拟机内部可以直接用localhost访问,外部需要输入虚拟机IP,并且打开防火墙的80端口)
复制数据卷
可以先docker run一个nginx出来,把nginx的文件直接拷贝出来一份(外部空文件的情况下直接挂载数据卷,可能会导致nginx对应的数据卷文件也变成空)
如果已经有了对应文件的话,这一步可以直接跳过,不过需要记住文件的路径,方便挂载数据卷
先要创建几个文件夹(空文件夹就行)
mkdir nginx
cd nginx
mkdir html
mkdir conf
mkdir log
此时可以创建一个nginx容器并复制容器中的文件(我这里是直接使用的相对路径,看自己的习惯,可以使用pwd看看自己在哪个目录上,然后使用绝对路径)
docker run -d --name nginx nginx
# 我的nginx文件夹在当前目录下
docker cp nginx:/etc/nginx/nginx.conf nginx/conf/nginx.conf
docker cp nginx:/etc/nginx/conf.d nginx/conf/conf.d
docker cp nginx:/usr/share/nginx/html/ nginx/
# 也可以通过exec进入nginx看看有没有需要挂载的数据卷
# docker exec -it nginx bash
docker run -d #创建一个容器并运行
--name:#给镜像命名,不命名的话可以创建完镜像后执行docker ps看看nginx的ID号是多少
docker cp 容器名(容器ID):内部文件(目录)路径(docker) 外部文件(目录)路径(liunx) #拷贝文件或目录
拷贝完文件后就可以删除容器了(需要先停止nginx容器才能删除)
docker stop nginx
docker rm nginx
创建nginx容器
docker run -d -p 80:80 --name nginx \
-v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /root/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /root/nginx/html:/usr/share/nginx/html \
-v /root/nginx/log:/var/log/nginx \
nginx
-p 外部端口:内部端口 # 做端口映射
-v liunx文件:docker文件 # 数据卷挂载,如果想用相对路径就以./开头,绝对路径用/开头
此时应该就创建并运行了nginx容器
可以在浏览器上输入虚拟机的IP地址(虚拟机内部可以直接用localhost打开,外部需要用虚拟机的IP地址,80端口和index.html默认可以省略),也可以打开nginx/html/index.html文件对页面进行修改(修改页面不需要重启nginx,修改配置的话需要docker restart nginx重启一下容器)
如果页面加载不出来的可以先用docker ps看看nginx运行了吗,容器运行成功的话但是页面加载不出来的,可能是虚拟机防火墙把端口拦截了,可以打开防火墙的80端口,或直接关闭防火墙试试