Docker 部署nginx记录

66 阅读2分钟

1. Docker拉取nginx镜像

1.1 拉取nginx镜像

docker pull nginx:latest
-----------------------------------
latest: Pulling from library/nginx
461246efe0a7: Already exists 
060bfa6be22e: Pull complete 
b34d5ba6fa9e: Pull complete 
8128ac56c745: Pull complete 
44d36245a8c9: Pull complete 
ebcc2cc821e6: Pull complete 
Digest: sha256:1761fb5661e4d77e107427d8012ad3a5955007d997e0f4a3d41acc9ff20467c7
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

1.2 查看镜像

docker images
-----------------------------------
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    41b0e86104ba   2 weeks ago   142MB

如果TAG展示为<none>,虽然不影响使用(启动时使用IMAGE ID)但是不容易分辨,可以通过以下命令修改为指定tag。

docker tag nginx:latest
--------------------------
以本篇文章为例,执行以下命令修改容器nginx的tag为latest
docker tag 41b0e86104ba nginx:latest

2. Docker启动nginx

后台启动nginx

docker run -d -p 80:80 --name nginx nginx

查看容器启动情况

docker ps
--------------------------
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                               NAMES
8c3ee6abb5f7   nginx     "/docker-entrypoint.…"   44 minutes ago   Up 44 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp   nginxlearn

容器交互

docker exec -it container_id bash
--------------------------
以本篇文章为例,进入docker容器
docker exec -it 8c3ee6abb5f7 bash

3. 配置nginx

3.1 docker内nginx目录

docker容器内nginx默认位置

  1. 配置文件目录

    /etc/nginx

  2. 静态文件目录

    /usr/share/nginx/html

  3. 日志文件目录

    /var/log/nginx

3.2 宿主机管理内容及配置

3.2.1 创建宿主机目录

mkdir /usr/local/nginx/{conf,logs,html}

3.2.2 拷贝容器文件到宿主机

  1. 拷贝nginx.conf配置文件到本地
    docker cp nginx:/etc/nginx/nginx.conf $PWD/conf
    
  2. 拷贝conf.d目录到本地
    docker cp nginx:/etc/nginx/conf.d $PWD/conf
    

3.2.3 停止容器

docker stop nginx

3.2.4 删除容器

docker rm nginx

3.2.5 挂载目录并启动

docker run -d -p 80:80   --name nginxlearn  -v /usr/local/nginx/html:/usr/share/nginx/html  -v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf  -v /usr/local/nginx/conf/conf.d:/etc/nginx/conf.d  -v /usr/local/nginx/logs:/var/log/nginx  --privileged=true nginx

3.2.6 Docker 启动参数

  1. -d: 后台运行容器
  2. -p: 对端口进行映射(宿主机端口:容器端口)
  3. --name: 创建的容器名称
  4. -v: 挂载主机目录(将本地目录(文件)挂载到容器指定目录)
  5. --privileged: 容器授权(root)
  6. -i: 以交互模式运行容器,通常与-t同时使用
  7. -t: 为容器重新分配一个伪输入终端,通常与-i同时使用
  8. 更多启动参数参考Docker Run

3.2.6 SSL 配置

因网站备案审批中,暂时未做SSL处理,等待后续申请成功会补充此部分内容。

4 参考文档

Docker从入门到实践

使用 Docker 部署 NGINX 和 NGINX Plus