在阿里云服务器上的docker下建立一个nginx的web服务器

目的:

在阿里云ECS服务器上的docker下建立一个nginx的web服务器,并启动它,让外网可以看到

01-找到需要使用的镜像

docker pull nginx:1.17.5-alpine
#可以先到nginx.org官网查看当前最新版本,再到hub.docker.com查找nginx的版本,以上选中的alpine版本是一个非常小的版本

02-查看当前系统下有多少个镜像

docker images
# 或者
docker image ls
02

03-列出容器内的目录结构(非必要操作)

docker container run nginx:1.17.5-alpine ls
# 可以看到这应该是一个小型linux的目录结构
03

04-确认容器的核心版本(非必要操作)

docker container run nginx:1.17.5-alpine cat /etc/os-release
# 可以看到系统是Alpine Linux 3.10.3
04

05-启动nginx容器

docker container run --name mynginx -d -p 99:80 nginx:1.17.5-alpine
# container可以省略
# --name 该容器的名称
# -d 后台运行
# -p 99:80 在本地服务器端口和启动的容器内端口做映射。本地对外端口99, nginx容器端口80
# 可以看到返回了一串哈希码,表明启动成功了
05

06-检查一下nginx容器是否真的启动了

docker container ls
# 或
docker container ps
# 或
docker ps
06

07-检查一下nginx的web服务是否启动了

# 先用ifconfig检查一下当前服务器的ip地址,找出来后用curl命令来检测
curl http://172.16.130.208:99
# 或
curl http://127.0.0.1:99
# 可以看到web服务器已经启动了, 能看到默认的index.html文件内容。
07

08-复制服务器文件到docker的nginx指定目录下

docker cp /home/web.zip mynginx:/usr/share/nginx/html

09-检查一下nginx容器的bin目录下有什么自带指令

docker exec -it mynginx ls /bin
09

10-进入到nginx的命令行操作界面, 使用sh指令操作nginx容器

alpine linux没有附带bash, 只有sh可用

docker exec -it mynginx sh
# 可以看到已经进入到nginx容器内了
10

11-解压复制进来的文件

把原目录下的其它文件删除掉


11-01

解压web文件


11-02

12-在阿里云ECS控制面板上放行99端口

12

13-现在可以用浏览器访问了

13

补充:

从以上步骤来看, 其实有一个步骤非常繁琐, 就是将外部web文件复制进nginx容器的默认html存储路径, 如果我们需要经常性维护该网站, 需要来回的复制解压, 划不来.
可以采用路径映射的形式来操作, web文件还是放置在服务器的常规路径上, 让这个路径与nginx的html路径进行映射对应就可以. 维护时只需要维护服务器该路径下的文件即可.

  • 停止当前的nginx容器
docker stop mynginx
  • 移除nginx容器
docker rm mynginx
  • 启动nginx容器, 并指定端口, 做好服务器端路径和nginx容器端路径映射
docker run --name mynginx -d -p 99:80 -v /usr/local/web:/usr/share/nginx/html nginx:1.17.5-alpine

现在可以检查一下了


other-01

至此, 基本完成了nginx容器的搭建和启动, 并将web程序挂载进去了, 以后更新web程序的话,只要用ftp或xshell之类的UI界面软件操作, 那样更友好.

one more thing:

web文件是从网上随便找的flutter生成的, 自己编译了一下. 仅做学习使用, 如有违规, 请提醒我删除, 谢谢!

你可能感兴趣的:(在阿里云服务器上的docker下建立一个nginx的web服务器)