在Docker中安装Nginx

# docker search nginx               #在docker hub中查找nginx镜像
# docker pull nginx                 #拉取nginx官方镜像

使用nginx默认的配置来启动一个nginx实例:

# docker run --name nginx-test -p 8088:80 -d nginx

--name 参数命名容器名称
-d 参数设置容器在后台一直运行
-p 参数端口进行映射,本地8088端口映射到容器内的80端口

# docker ps                   #列出容器
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
4d11b040dffc        nginx               "nginx -g 'daemon of…"   4 minutes ago       Up 4 minutes        0.0.0.0:8088->80/tcp   nginx-test

部署Nginx

1、创建三个目录,存放相关文件

# mkdir -p ~/nginx/www ~/nginx/logs ~/nginx/conf

www: 目录将映射为 nginx 容器配置的虚拟目录。
logs: 目录将映射为 nginx 容器的日志目录。
conf: 目录里的配置文件将映射为nginx容器的配置文件。

拷贝容器内的Nginx默认配置文件到 本地当前目录下的conf目录,容器ID可以使用命令 docker ps 查看

docker cp 4d11b040dffc:/etc/nginx/nginx.conf ~/nginx/conf

2、部署命令

# docker run -d -p 8090:80 --name nginx-test-web \
-v ~/nginx/www:/usr/share/nginx/html \
-v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v ~/nginx/logs:/var/log/nginx \
nginx

命令参数:
-d 设置容器在后台一直运行
-p 8090:80 将容器的80端口映射到主机的8090端口
–name nginx-test-web 将容器命名为 nginx-test-web
-v ~/nginx/www:/usr/share/nginx/html 将创建的www目录挂载到容器的 /usr/share/nginx/html
-v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf 将创建的nginx.conf挂载到容器的 /etc/nginx/nginx.conf
-v ~/nginx/logs:/var/log/nginx 将创建的logs挂载到容器的 /var/log/nginx

启动以上命令后进入 ~/nginx/www 目录:

# cd ~/nginx/www

创建index.html 文件,内容如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>测试页面</title>
</head>
<body>
    <h1>我的第一个标题</h1>
    <p>我的第一个段落。</p>
</body>
</html>

使用docker-compose部署

创建docker-compose.yml 文件,内容如下:

version: '3'
services:
 web:
  image: nginx
  volumes:
   - ~/nginx/www:/usr/share/nginx/html
   - ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
   - ~/nginx/logs:/var/log/nginx
  ports:
   - "8091:80"
  container_name: nginx_web_test

在docker-compose.yml 文件存放目录下,执行命令:

# docker-compose up -d
Recreating nginx_web_test_111 ... done

docker-compose up   启动所有服务
-d    参数表示在后台运行
# docker-compose ps          #列出项目中目前的所有容器

Was this article helpful?

Related Articles