Docker安装Nginx,配置数据卷挂载,多端口配置

999 阅读2分钟

1.搜索镜像

docker search nginx 

#如下图 一般选取 stars 是最多,并且 official 是官方的为准

image.png

2.拉取镜像

docker pull nginx #无版本号默认最新的

3.查看镜像

docker images

image.png

4.启动镜像

docker run -d --name nginx01 -p 3344:80 nginx 
-d 表示后台运行, 
--name 表示给容器起名字,而nginx01表示起的名字, 
-p 宿主机端口 :容器内部端口 后面的3344表示主机开发的3344端口,80表示容器内部的端口
后面的nginx表示的是镜像名字。

5.查看容器是否运行

docker ps

image.png

curl localhost:3344

image.png

6.处理防火墙

# 使用防火墙命令查看开放的端口号,需要确保防火墙开启 systemctl status firewalld.service 如果没有开启,使用下面命令开启防火墙 # 开启 systemctl start firewalld.service # 关闭 systemctl stop firewalld.service # 查看已经开放的端口号 firewall-cmd --list-all # 开放新的端口号 firewall-cmd --add-port=9090/tco --permanent # 刷新端口信息 firewall-cmd --reload

image.png

7.进入容器

命令:docker exec -it nginx01 /bin/bash #进入容器 
命令:whereis nginx 
命令:cd /etc/nginx 
命令:ls查看 
命令:exit #退出 
命令:docker stop 容器id #停止Nginx容器 
可以修改配置文件nginx.conf,但是不方便,并且存在数据丢失问题

8.数据卷

docker ps -a # 查看当前nginx服务的ID 
docker cp ID:/etc/nginx/nginx.conf /workspace/nginx/conf # 将配置文件复制到自己的本地 

创建nginx数据卷挂载目录 注意:我是将nginx数据挂载在 /workspace/nginx/ 文件夹下 

cd /workspace/nginx # 进入workspace/nginx目录下,在这个目录下进行数据的挂载 
mkdir www # 挂载html文件的配置 
mkdir logs # 挂载日志文件位置 
#mkdir conf # 挂载配置文件位置,这个不用执行,上面已经创建过了 

#关闭并删除前面启动的
nginx docker stop nginx # 关闭 
docker rm nginx # 删除 

#因为nginx的配置文件需要直接挂载,需要给定权限 
cd /workspace/nginx/conf 
chmod 777 nginx.conf 

#启动nginx 并进行数据挂载 
docker run -d --name nginx01 -p 80:80 -v /workspace/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /workspace/nginx/www/:/usr/share/nginx/html -v /workspace/nginx/logs:/var/log/nginx nginx 

--www为工程目录 

--restart=always

9.多端口问题

#可以配置多个端口 -p
docker run -d --name nginx01 -p 80:80 -p 3306:3306 -v  /workspace/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /workspace/nginx/www/:/usr/share/nginx/html -v /workspace/nginx/logs:/var/log/nginx nginx


或者 将 -p 80:80 换成 --net host,即
docker run -d --name nginx01 --net host -v  /workspace/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /workspace/nginx/www/:/usr/share/nginx/html -v /workspace/nginx/logs:/var/log/nginx nginx