使用docker pull命令从docker hub下载最新版本的nginx镜像
docker pull nginx
在宿主机下新建三个目录:www,logs,conf分别用来映射nginx容器的项目目录,日志目录,配置文件
mkdir /data/nginx
cd /data/nginx
mkdir www logs conf
使用nginx镜像创建一个nginx容器
docker run -d -p 8080:80 --name nginx-web -v /data/nginx/www:/usr/share/nginx/html -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /data/nginx/logs:/var/log/nginx nginx
-v:将宿主机目录或者文件挂载到容器对应的目录或者文件
-d:守护态(后台)运行容器
-p:将容器的端口映射到主机的端口,前面80是宿主机端口,后面的80是容器端口
--name:命名容器
在/data/nginx/conf下新建nginx.conf配置文件
touch /data/nginx/conf/nginx.conf
配置nginx.conf文件
假如我们有两个项目分别在/data/nginx/www/demo1和/data/nginx/www/demo2下,对应的域名为demo1.diandi.com和demo2.diandi.com
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
gzip on;
server {
listen 80;
server_name demo1.diandi.com;
location / {
root /usr/share/nginx/html/demo1;
index index.html;
}
}
server {
listen 80;
server_name demo2.diandi.com;
location / {
root /usr/share/nginx/html/demo2;
index index.html;
}
}
}
因为我们宿主机的/data/nginx/www目录已经代理了容器的/usr/share/nginx/html目录所以root参数/usr/share/nginx/html实际目录是/data/nginx/www
重启容器
docker restart nginx-web