直接回答:用 Docker 跑 Nginx 有两种常见做法:镜像里装好 Nginx 的适合固化环境,直接跑官方镜像再把 www、conf、logs 三个目录挂载出来,改配置不用重新构建镜像。
用 centos7 镜像装 Nginx
1.安装docker
使用yum安装docker不再重复:见 Linux常用命令
2.pull centos
1)在docker仓库中搜索centos7镜像
1 | docker search centos |

2)执行docker pull centos ,拉取search到的镜像
1 | docker pull centos |
3)查看本地镜像docker images是否拉取成功
1 | docker images |

4)执行docker run 命令开启centos容器
1 | docker run -tid <image_id> /bin/bash |
5)docker ps查看正在运行的容器
1 | docker ps |

6)进入容器
1 | docker exec -ti <container_id> /bin/bash |

3.centos容器中安装nginx
1)更新centos的yum源
1 | yum update |
2)指定Nginx的yum源
1 | rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm |
3)yum 安装nginx
1 | yum install nginx |
4)查找nginx安装路径
1 | find / -name nginx |
5)启动Nginx
1 | /usr/sbin/nginx |
6)查看nginx是否启动成功
1 | curl localhost |
4.修改容器配置
1)设置生成容器时,Nginx以非daemon启动(非后台启动)
1 | echo "\n daemon off;">>/usr/local/nginx/conf/nginx.conf |
2)编写启动ssh和Nginx服务的脚本
1 | cd /usr/local/sbin |
3)脚本内容:
1 | #!/bin/bash |
这里要看nginx的课执行程序在那里,我的是安装在/usr/sbin/nginx
4)改变脚本权限,使其可以运行
1 | chmod 755 run.sh |
将安装nginx的centos容器生成新的镜像
1)退出容器
1 | exit |
2) 将容器创建为一个新的镜像
1 | docker commit -m "message" -a "Creator" container_id NewImageName |
其他
1)查看nginx进程:
1 | ps -ef |grep nginx |
2)结束Nginx进程:
1 | kill -9 [pid] |
将镜像导出到服务器
1)将新生成的镜像导到服务器
1 | docker save -o centos1.tar.gz centos1:latest |

1 | docker run --name nginx -p 80:80 -p 443:443 \ |
挂载配置目录启动 Nginx
docker run -d -p 8080:80 --name nginx \
-v $PWD/www:/usr/share/nginx \
-v $PWD/conf:/etc/nginx/conf.d \
-v $PWD/logs:/var/log/nginx \
nginx
这篇笔记整理自我自己的实践记录,如果做法有出入,或者你踩过别的坑,欢迎到留言板一起聊聊。