docker安装nginx
拉取镜像 docker pull nginx
查看镜像 docker images
docker run -d --name nginx01 -p 3344:80 nginx
![]()
-d后台运行,--name nginx01 命名为nginx01,-p 3344:80 指定把容器的80端口映射到宿主机的3344端口 (如果不指定宿主机端口,也会分配一个随机的宿主机端口给他映射,通过docker port 容器ID 查看这个随机宿主端口)最后一个nginx是指定上一步已有的镜像了
这是不指定宿主机端口,如图查到映射到宿主机的32768端口了


docker ps 查看运行的容器
curl localhost:3344 curl用于在终端访问http请求

这是宿主机和容器的端口关联,01,02容器的端口相互隔离互不影响,不会因为都是80端口导致宿主机分配给他们的端口冲突,宿主机会用不同的端口分配给他们,让他们能映射到宿主机,从而和外界交流。上面已经看到了01是80端口,宿主给他3344,容器02也是80端口而宿主给他32768

现在来测试下自己电脑连接阿里云ubuntu服务器里的docker容器,这还是上面那个图,他只是说明了主机ubuntu能正常访问本地自己的这个docker容器,我们还要能外网访问这个容器

到阿里云服务器上,配置入站规则(够了,因为只是让外网访问)

可以看到这里没有我上面对应的3344和32768(我们只做3344一个实验就行)
入方向-添加入方向规则

入站规则:控制外部设备(比如你的电脑)→ 服务器的请求(比如你访问服务器的 3344 端口、远程连接服务器)。你用浏览器访问服务器的 3344 端口 → 属于 “入站”,需要开入站规则;
出站规则:控制服务器→ 外部设备 / 网络的请求(比如服务器拉取 Docker 镜像、访问外网 API)。服务器下载软件 → 属于 “出站”,需要开出站规则(云服务器默认一般是开的)。
自己电脑的浏览器输入(要注意改成你们自己的服务器公网IP和设置的端口)![]()

docker exec -it nginx01 /bin/bash 进入nginx01的bash命令行
whereis nginx 查nginx配置文件位置 。
/usr/sbin/nginx:nginx 的可执行程序(启动 / 停止 nginx 的命令)
/usr/lib/nginx:nginx 依赖的库文件
/etc/nginx:nginx 的配置文件目录(核心配置都在这里)
/usr/share/nginx:nginx 的静态资源(包括刚才看见的默认网页)
cd /etc/nginx 这里面存放着nginx的监听端口,也就是 3344:80里的80端口
ls

exit退出容器

docker stop 983e9011b70e (直接将上面的@后的容器ID复制)
停止后,外网无法在访问

每次修改nginx文件都要进入容器内部,很麻烦,于是可以考虑在容器外部提供一个映射路径,达到在主机修改文件名,容器内部就可以自动修改。
方法为用 docker的数据卷 -v 实现 宿主机与容器配置文件的映射
更多推荐


所有评论(0)