前言
公司的测试服务器想快速安装一个NGINX,由于之前没有安装过,在网上找了一大堆教程,结果不是这有问题,就是哪有问题,应该是我操作的姿势不对.无奈就在宿主机上装了个NGINX(不想在公司里浪费太多时间在这个事情上),周末找了个时间,自己搞一波,完整教程.3min完事.上步骤.
docker 安装NGINX
- 搜索NGINX镜像
docker search nginx
- 拉取最新镜像
docker pull nginx:latest
- 启动一个NGINX容器
# 这里先启动一个,需要拷贝里面的文件,最后可把该容器删除
docker run --name nginxtest -p 9091:80 -d nginx:latest
- 查看容器
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
98d6a3f26f5f nginx:latest "/docker-entrypoint.…" 12 minutes ago Up 12 minutes 0.0.0.0:9091->80/tcp, :::9091->80/tcp nginxtest
- 进入容器命令: docker exec -it nginxtest bash
- 创建目录(一会映射使用)
mkdir -p /alidata/appserver/docker/nginx/www (这里可以存放一些静态文件)
mkdir -p /alidata/appserver/docker/nginx/logs (日志目录)
mkdir -p /alidata/appserver/docker/nginx/conf.d (所有nginx配置放这里就行以.conf结尾)
- 拷贝刚刚容器里的配置文件nginx.conf, html文件, 以及default.conf文件
docker cp 98d6a3f26f5f:/etc/nginx/nginx.conf /alidata/appserver/docker/nginx
docker cp 98d6a3f26f5f:/usr/share/nginx/html/index.html /alidata/appserver/docker/nginx/www
docker cp 98d6a3f26f5f:/etc/nginx/conf.d/default.conf /alidata/appserver/docker/nginx/conf.d/
- 另起一个容器,把配置文件映射出来(端口需要提前预留好)
docker run --name nginx -p 9092:80 -d \
-v /alidata/appserver/docker/nginx/www:/usr/share/nginx/html \
-v /alidata/appserver/docker/nginx/logs:/var/log/nginx \
-v /alidata/appserver/docker/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /alidata/appserver/docker/nginx/conf.d:/etc/nginx/conf.d \
--privileged=true \
nginx:latest
- 不需要每次都映射端口号(和宿主机共享端口),加 --net=host
docker run --name nginx --net=host -d \
-v /alidata/appserver/docker/nginx/www:/usr/share/nginx/html \
-v /alidata/appserver/docker/nginx/logs:/var/log/nginx \
-v /alidata/appserver/docker/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /alidata/appserver/docker/nginx/conf.d:/etc/nginx/conf.d \
--privileged=true \
nginx:latest
- 最后就可删除,我们刚开始启动的容器了
docker stop 98d6a3f26f5f
docker rm 98d6a3f26f5f