ubuntu 20.04 docker 安装 nginx

1.卸载系统自带nginx

参考考一下文档:

Ubuntu下完全卸载nginx服务器_ubuntu 卸载nginx-CSDN博客

2.安装步骤

# 下载镜像
docker pull nginx
# 创建挂载目录
mkdir -p /opt/nginx/conf
mkdir -p /opt/nginx/log
mkdir -p /opt/nginx/html

# 生成容器 容器中的nginx.conf文件和conf.d文件夹复制到宿主机
docker run --name nginx -p 7777:80 -d nginx
# 将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf
# 将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /home/nginx/

# 直接执行docker rm nginx或者以容器id方式关闭容器
# 找到nginx对应的容器id
docker ps -a
# 关闭该容器
docker stop nginx
# 删除该容器
docker rm nginx
 
# 删除正在运行的nginx容器
docker rm -f nginx

运行命令

docker run \
-p 80:80 \
--name nginx \
-v /opt/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /opt/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /opt/nginx/log:/var/log/nginx \
-v /opt/nginx/html:/usr/share/nginx/html \
-d nginx:latest

参数说明

命令描述
--name nginx 启动容器的名字
-d后台运行
-p 80:80将容器的 80端口映射到主机的 80端口
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf挂载nginx.conf配置文件
-v /home/nginx/log:/var/log/nginx挂载nginx日志文件
-v /home/nginx/html:/usr/share/nginx/html 挂载nginx内容
nginx:latest  本地运行的版本
 shell 命令换行

      
 

1. NginxUbuntu20.04中的AppArmor配置文件 在Ubuntu 20.04中,Nginx的AppArmor配置文件位于/etc/apparmor.d/usr.sbin.nginx。该文件定义了Nginx进程可以访问的文件和目录,以及可以执行的操作。例如,以下是默认的/usr/sbin/nginx AppArmor配置文件的部分内容: ``` /usr/sbin/nginx { ... # Allow read access to all file systems. # This allows Nginx to read static files and logs. / r, /sys/devices/system/cpu/ r, /sys/devices/system/cpu/** r, /proc/stat r, /proc/meminfo r, /proc/loadavg r, /etc/nginx/ r, /etc/nginx/** r, /etc/nginx/sites-enabled/ r, /etc/nginx/sites-enabled/* r, /usr/share/nginx/html/ r, /var/log/nginx/access.log w, /var/log/nginx/error.log w, /run/nginx.pid rw, ... } ``` 该配置文件允许Nginx访问一些必要的系统文件和目录,例如/proc和/sys目录,以及Nginx的配置文件和日志文件。 2. Ubuntu20.04Docker启用AppArmor下的配置文件 在Ubuntu 20.04中,Docker默认启用AppArmor来限制容器的权限。Docker的AppArmor配置文件位于/etc/apparmor.d/docker-DEFAULT。该文件定义了Docker容器可以访问的文件和目录,以及可以执行的操作。例如,以下是默认的docker-DEFAULT AppArmor配置文件的部分内容: ``` ... # Allow read access to containers image and registry files. # Use subdirectories to make sure rslave is applied on existing directories /var/lib/docker/ r, /var/lib/docker/** rwk, /var/lib/containerd/ r, /var/lib/containerd/** rwk, /etc/docker/ r, /etc/docker/** r, # Allow rslave on container directories in case the user wants to bind mount them /var/lib/docker/*/ rslave, /var/lib/docker/*/*/ rslave, /var/lib/docker/*/*/*/ rslave, /var/lib/docker/*/*/*/*/ rslave, /var/lib/docker/*/*/*/*/*/ rslave, # Allow containerd to manage its own state /run/containerd/ r, /run/containerd/** rwk, ... ``` 该配置文件允许Docker容器访问一些必要的系统文件和目录,例如/var/lib/docker目录和/etc/docker目录,以及容器需要读取或写入的文件。 3. 优缺点比较 NginxUbuntu20.04中的AppArmor配置文件和Ubuntu20.04Docker启用AppArmor下的配置文件有以下优缺点: 优点: Nginx AppArmor配置文件: - 可以更加精细地控制Nginx进程的访问权限; - 不会影响其他进程的权限。 Docker AppArmor配置文件: - 可以更好地保护主机系统免受恶意容器的攻击; - 可以更容易地管理多个容器的权限; - 可以更容易地移植Docker容器到其他系统。 缺点: Nginx AppArmor配置文件: - 需要手动编辑,可能需要一些技术知识; - 可能无法完全保护主机系统免受Nginx进程的攻击。 Docker AppArmor配置文件: - 可能会限制容器的功能,例如无法访问某些文件或目录; - 可能会增加管理的复杂性,需要更多的配置和管理工作。 总的来说,NginxUbuntu20.04中的AppArmor配置文件更适合单独控制Nginx进程的权限,而Docker启用AppArmor下的配置文件更适合保护主机系统免受Docker容器的攻击。具体使用哪种方式取决于实际需求和应用场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值