网站首页 > 技术文章 正文
我的一点点docker部署服务习惯,就是喜欢使用官方的镜像,如果没有官方的镜像或者官方的镜像不好用,我会找第三方使用量比较多的镜像。这个习惯是基于安全的考虑,毕竟官方做得稍微安全点,有漏洞也更新最快。
一、nginx的image准备
1、docker search 搜索nginx
2、https://hub.docker.com镜像站搜索nginx
二、nginx官方部署nginx方法
1、docker 启动一个简单的nginx 实例
docker run \
--name some-nginx \
-v /data/nginx/html:/usr/share/nginx/html:ro \
-d \
nginx
docker run:是启动一个docker 容器的命令。完整书写方法应该是docker container run。
--name some-nginx: 给nginx容器起个名字,为some-nginx。
-v /data/nginx/html:/usr/share/nginx/html:ro:v是volume的首字母,是卷的意思。就是把容器的目录绑到宿主机上的目录,好方便我们查看文件,修改文件。现在这个/data/nginx/html是宿主机上存放web文件的目录,/usr/share/nginx/html是nginx容器里的目录,ro是容器内不能修改,会提示read-only。
-d: d是detach的首字母,可以理解为后台运行这个nginx容器。
nginx:指的nginx的镜像名。tag是给一个版本nginx打个标签,如果不加:tag默认为nginx:latest。nginx最新镜像。
官方还有一个加载静态文件的方法,就是以nginx官方镜像为基础镜像,把静态文件目录复制 到新的镜像里,这样就不用绑定nginx需要内容目录。这个方法应该不常用。除了你特别需求,不建议使用。
2、docker 启动一个暴露外网端口nginx 实例
#官方nginx镜像暴露端口是80
#启动一个绑定外网端口是8080的nginx容器
docker run \
--name some-nginx \
-v /data/nginx/html:/usr/share/nginx/html:ro \
-p 8080:80 \
-d \
nginx
如果宿主机的ip是192.168.1.10,向nginx发起请求地址是http://192.168.1.10:8080
3.docker 启动一个暴露外网端口和nginx配置文件路径的nginx 实例
假设宿主机的nginx配置文件存放目录/data/nginx/nginxconf,如果手头没有nginx配置文件,可以把容器的nginx配置文件复制到/data/nginx/nginxconf,不过先要启动一下没有绑配置的nginx容器,复制配置文件,删除这个nginx容器,最后就可以启动绑定nginx配置文件路径的nginx 实例。整个操作步骤如下:
第一步启动一个不绑定nginx配置文件的容器
docker run \
--name some-nginx \
-v /data/nginx/html:/usr/share/nginx/html:ro \
-p 8080:80 \
-d \
nginx
第二步复制some-nginx里nginx配置文件到宿主机的/data/nginxconf下
docker cp nginx:/etc/nginx /data/nginx/nginxconf
mv /data/nginx/nginxconf/nginx/* /data/nginx/nginxconf/
rm -rf /data/nginx/nginxconf/nginx
第三步删除nginx容器
docker rm -f some-nginx
第四步启动绑定nginx配置文件的nginx容器
docker run \
--name some-nginx \
-v /data/nginx/html:/usr/share/nginx/html:ro \
-v /data/nginx/nginxconf:/etc/nginx:ro \
-p 8080:80 \
-d \
nginx
-v /data/nginx/nginxconf:/etc/nginx:ro:/data/nginxconf宿主机上存储nginx的配置文件路径。/etc/nginx是容器里nginx配置文件路径。
三、nginx容器里运行nginx用户
上图是截至nginx官方说明,意思如下:
从1.17.0开始,基于alpine和debian的镜像变体都使用相同的用户和组id来删除工作进程的特权(容器nginx运行用户是nginx ,uid和gid都是101)
id nginx
uid=101(nginx) gid=101(nginx) groups=101(nginx)
可以将映像作为特权较低的任意UID/GID运行。然而,这需要修改nginx配置,以使用特定UID/GID对可写的目录。可以不用nginx用户运行nginx,我觉得没有必要修改运行用户。
四、docker-compose启动nginx服务
#nginx的docker-compose.yml文件,存放在/data/nginx/下
version: '3.7'
services:
nginx:
image: nginx
restart: always
hostname: nginx
container_name: nginx
privileged: true
ports:
- 8080:80
volumes:
- /data/nginx/nginxconf:/etc/nginx
- /data/nginx/html:/usr/share/nginx/html
- /data/nginx/logs/:/var/log/nginx/
/data/nginx/logs/:/var/log/nginx/ 加了一个日志映射到宿主机目录。好查看日志文件。
#docker-compose启动nginx
docker-compose -f /data/nginx/docker-compose.yml up -d
猜你喜欢
- 2024-09-30 Docker 备忘录 - 07. 常用容器部署实例
- 2024-09-30 第 8 章:NGINX 和 Docker docker nginx keepalived
- 2024-09-30 docker 基础安装部署 docker安装与使用
- 2024-09-30 Docker安装和配置Nginx docker 安装 nginx
- 2024-09-30 用docker和nginx部署前端项目,并且访问本地java网关gateway服务
- 2024-09-30 Docker部署WordPress LNMP环境实践
- 2024-09-30 Docker安装部署ElasticSearch docker-compose安装es
- 2024-09-30 Docker部署web服务器之Nginx篇(一)
- 2024-09-30 Docker 循序渐进之实例部署 docker completion
- 2024-09-30 使用容器工具docker进行nginx服务安装
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)