Docker运行Nginx

如果我们有自己的服务器,就经常肯定会使用到Nginx,下面我们就用Docker来部署一个Nginx

安装Docker

移除旧版本
1.查询安装过的包

1
2
3
yum list installed | grep docker

docker-engine.x86_64 17.03.0.ce-1.el7.centos @dockerrepo

2.删除安装的软件包

1
yum -y remove docker-engine.x86_64

3.删除镜像/容器等

1
2
3
rm -rf /var/lib/docker


安装一些必要的系统工具:

1
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

添加软件源信息:

1
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新 yum 缓存

1
sudo yum makecache fast

安装 Docker-ce:

1
2
#安装 Docker
sudo yum -y install docker-ce

启动 Docker 后台服务:

1
sudo systemctl start docker

测试运行 hello-world

1
docker run hello-world

出现hello world就证明安装正常了

安装 Nginx

安装nginx前,我们现在本地建立几个文件,用于存放nginx的配置文件等

1
2
3
4
5
6
# 切换到服务器根目录
cd /
# 创建主目录
mkdir dockerData
# 创建文件
mkdir dockerData/nginx dockerData/nginx/conf dockerData/nginx/logs dockerData/nginx/www dockerData/nginx/ssl

上面的 dockerData 可以换成自己喜欢的名字

1
2
3
4
5
dockerData/nginx 用于存放 docker 下 nginx 自定义文件
dockerData/nginx/conf 存放 nginx 配置文件
dockerData/nginx/log 存放 nginx 日志文件
dockerData/nginx/www 存放 nginx 访问的资源文件
dockerData/nginx/ssl 存放 ssl 证书

启动 nginx

1
docker run --name nginx -p 80:80 -d --rm nginx

如果你没有备案,可以将上面的80:80换成8081:80,因为这个东西一会儿也要删掉,所以加上--rm参数,命令执行玩后通过 docker ps 查看 nginx 是否在运行,在运行的情况下访问你的域名加端口号查看是否正常安装,80直接省略。如下表示访问成功

导出配置文件

1
2
docker cp nginx:/etc/nginx/nginx.conf /dockerData/nginx/conf/nginx.conf 导出配置文件 nginx.conf
docker cp nginx:/etc/nginx/conf.d /dockerData/nginx/conf/conf.d 导出配置为你 nginx.conf

执行 docker stop nginx ,会自动删除现在的 nginx 容器,然后执行如下命令重新启动一个 nginx 容器

1
2
3
4
5
6
docker run -d -p 80:80 --name nginx \
-v /dockerData/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /dockerData/nginx/ssl:/etc/nginx/ssl \
-v /dockerData/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /dockerData/nginx/www:/usr/share/nginx/html \
-v /dockerData/nginx/logs:/var/log/nginx nginx
1
2
3
4
-v /dockerData/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ 挂载配置文件nginx.conf
-v /dockerData/nginx/conf/conf.d:/etc/nginx/conf.d 挂载配置文件default.conf
-v /dockerData/nginx/www:/usr/share/nginx/html 挂载项目文件
-v /dockerData/nginx/logs:/var/log/nginx 挂载配置文件

访问你的域名,你会发现报错了
这时我们可以前往 /dockerData/nginx/logs 下查看日志文件

1
2019/08/05 14:57:54 [error] 6#6: *3 directory index of "/usr/share/nginx/html/" is forbidden, client: 121.32.33.217, server: localhost, request: "GET / HTTP/1.1", host: "www.jinjianh.com" 

因为 /usr/share/nginx/html/ 被挂载到了服务器上面的/dockerData/nginx/www目录下,原来的欢迎页面在 dockerData/nginx/www 是没有的,所有就报错了,这里我们随便建一个。

1
2
3
4
5
6
7
# 打开项目文件
cd /dockerData/nginx/www
# 使用vim 创建并编辑文件
vim index.html
# 此时我们会进入vim界面,按 i 插入,然后输入
<h1>Hello Docker-Nginx</h1>
# 输入完后,按 esc,然后输入 :wq

再次访问我们的域名就可以看到我们刚刚写的h1标签内容