容器时相互隔离的,docker启动的nginx是容器内的服务,不影响原先我的nginx服务。

1、下载nginx镜像

docker pull nginx

2、查看下载的镜像

docker ps

3、启动nginx镜像

docker run -d —name nginx01 -p 3344:80 nginx(镜像名或者镜像id)
image.png

4、查看启动的nginx

docker ps

5、访问启动的ngixn

curl localhost:3344
image.png

linux开放防火墙端口

阿里云服务器需要配置安全组规则

配置完之后就可以在浏览器访问公网ip+3344端口号查看了

原理

端口暴露,linux端口映射到容器端口
0.0.0.0:3344->80/tcp
image.png

6.进入nginx容器

  1. docker exec -it 0a7ebd6bc291 /bin/bash
  2. root@0a7ebd6bc291:/# ls
  3. bin boot dev docker-entrypoint.d docker-entrypoint.sh etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
  4. root@0a7ebd6bc291:/# whereis nginx
  5. nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
  6. root@0a7ebd6bc291:/# cd /etc/nginx/
  7. root@0a7ebd6bc291:/etc/nginx# ls
  8. conf.d fastcgi_params mime.types modules nginx.conf scgi_params uwsgi_params
  9. root@0a7ebd6bc291:/etc/nginx#

问题探索

每次改动nginx配置,都需要进入容器内部修改,十分麻烦,能否在容器外部提供一个映射路径,达到修改配置文件,容器内部就会自动修改?

数据卷技术

nginx.conf配置文件,注意Nginx默认是后台运行的,但Docker需要其在前台运行,否则直接退出容器。配置文件中添加daemon off;关闭后台运行。可以通过Dockerfile配置CMD命令实现