使用 Docker 安装 Nginx

1
docker pull nginx:latest
1
docker run --name nginx -p 8080:80 -d nginx
1
2
3
docker exec -it nginx bash
cat /etc/nginx/nginx.conf
exit
1
mkdir -p /opt/docker/nginx/conf
1
2
3
4
docker cp nginx:/etc/nginx/nginx.conf /opt/docker/nginx/conf/nginx.conf
docker cp nginx:/etc/nginx/conf.d/ /opt/docker/nginx/conf/conf.d
docker cp nginx:/var/log/nginx/ /opt/docker/nginx/logs
docker cp nginx:/usr/share/nginx/html/ /opt/docker/nginx/html
1
2
3
docker stop nginx
docker rm nginx
docker ps -a
1
2
3
4
5
6
7
8
docker run \
-p 80:80 \
--name nginx \
-v /opt/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /opt/docker/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /opt/docker/nginx/logs:/var/log/nginx \
-v /opt/docker/nginx/html:/usr/share/nginx/html \
-d nginx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 下面这个是有问题的,这样设置里之后,访问 `http://localhost:80` 依然可以访问到 nginx 的默认页面
# 因为这个命名使用了 `--net host` 选项,这个选项会让容器使用宿主机的网络,所以 Docker 中的 Nginx 依然会监听宿主机的 80 端口

# 如果是在云服务器上使用 Docker 安装 Nginx,那么下面的命令会导致,使用 8080 端口也可能访问呢不到 Nginx 的默认页面,因为一般情况下云服务器默认的防火墙会关闭 8080 端口。

docker run \
-p 8080:80 \
--name nginx \
--net host \
-v /opt/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /opt/docker/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /opt/docker/nginx/logs:/var/log/nginx \
-v /opt/docker/nginx/html:/usr/share/nginx/html \
-d nginx

参考资料: