通过docker快速发布node.js应用
什么是Docker
开发者和运维管理员搭建的开放平台软件,可以在这个平台上创建,管理和运行生产应用。开源的应用内容引擎。体积小可快速部署。
正向代理:例如访问国外的网站,通过香港的http代理就可以正常访问外国网站,香港的这个http代理就是正向代理
反向代理:有一个对外的API服务,初期启动一台服务器,一个node.js进程就可以完成负载。后期访问量大,就需要Nginx发挥自己反向代理的作用。在Nginx后端添加或启动多个服务来分担访问压力。
Nginx放在Node.js之前
- 静态文件性能;
- 反向代理规则;
- 拓展性次;
- 稳定性和转发性能;
- 安全性和运维管理。
在生产环境中,永远把Nginx放在Node.js的前端,对安全性和拓展性能都有益处。
安装Docer和下载image镜像
对于centos系统
sudo yum install docker
#启动Docker服务并把Docker服务注册为开机启动
sudo service docker start
sudo chkconfig docker on
#检查Docker是否已经启动
ps -ef|grep docker
#若未启动成功,就需要进入/var/log查看Docker的日志文件信息
#下载centos镜像
sudo docker pull centos:7
sudo docker images centos
也可以访问https://registry.hub.docker.com/查看星星最多的
Docker常用命令
#获取帮助
docker -h
#获取镜像
sudo docker pull NAME[:TAG]
#命令例子
sudo docker pull centos:latest
#启动Container盒子
sudo docker run [options] IMAGE [COMMAND] [ARG]
#example:
sudo docker run -t -i centos /bin/bush
#查看镜像列表
sudo docker images [option] [NAME]
#example:
sudo docker images centos
#查看容器列表
sudo docker ps [options]
example:
sudo docker ps -a
#删除镜像,从本地删除一个已下载镜像
sudo docker rmi centos:latest
#移除一个或多个容器实例
sudo docker rm sudo docker ps -aq
#停止一个正在运行的容器
sudo docker kill 026e
#重启一个正在运行的容器
sudo docker restart 026e
#启动一个已停止的容器
sudo docker start 026e
启动Container盒子
image和Container之间的关系:image(镜像)可以理解为一个执行环境(env),在执行docker run之后Docker会根据当前image创建一个Container,Container是一个程序运行的沙箱,互相独立。
启动一段小程序Container
sudo docker run b15 /bin/echo 'Hello world'
Hello world
b15为之前下载的镜像(可以不用输完Image或者Container)
#启动一个稍微复杂的程序
sudo docker run -i -t b15 /bin/sh -c "while true; do echo hello world; sleep 1; done"
参数i表示同步Container的stdin,-t表示分配一个伪终端。
手动删除:sudo docker rm -f 026