docker的使用
docker安装,docker+nodejs,doker+python爬虫的使用案例,docker文档资源等
使用docker的流程
-
1.cd到项目目录下(例如web网站根目录,nodejs就是package.json所在目录).
-
2.编写Dockerfile(后面回介绍dockerfile的使用)
-
3.创建image: (在Dockerfile所在的目录下)
docker build -t \{image\_name} . ``` ```bash docker images #可查看有哪些image ```
-
4.运行容器:
# 控制台执行 docker run -p {系统端口}:{容器端口} {image\_name} . # 后台运行 docker run -d -p {系统端口}:{容器端口} {image\_name} . ```
常用命令
查看daocker正在运行的容器:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0219df69bd3d binstd-service "pm2-runtime app.js" 45 seconds ago Up 44 seconds 0.0.0.0:80->3000/tcp competent_raman
关闭正在运行的容器 :
docker stop CONTAINER_ID #上面 docker ps看到的 containid
执行容器内的命令:
#后面的cmd可以是任意的shell命令
sudo docker exec -it CONTAINER_ID cmd..
python的docker环境:
Python的另一个例子,参考官方文档: https://docs.docker-cn.com/get-started/part2/
nodejs的docker环境
以我在github上的koa2-mvp为例(一个集成了数据库,api,系统日志,错误处理,ES6)为一体的项目框架).
# 将官方 node:carbon 运行时用作父镜像
FROM node:carbon
# 收到添加pm2的方式,注意看结尾的CMD
# 也可以查看文档: http://pm2.keymetrics.io/docs/usage/docker-pm2-nodejs/
RUN npm install pm2 -g
# 设置环境变量
ENV NODE_ENV=production
# 将工作目录设置为 /app
WORKDIR /app
# 将当前目录内容复制到位于 /app 中的容器中
ADD . /app
# 如果你需要构建生产环境下的代码,请使用:
# RUN npm install --only=production
RUN npm install
# 使端口 3000 可供此容器外的环境使用
EXPOSE 3000
# 在容器启动时运行 app.py
# CMD ["python", "app.py"]
# CMD [ "npm", "prd" ]
CMD ["pm2-runtime", "app.js"]
执行容器内的命令,查看容器的nodejs版本:
sudo docker exec -it 0219df69bd3d node -v
辅助文档:
docker必备命令
使用容器中的命令
保证docker的守护进程
--restart=always
附文档:
docker中文文档: https://docs.docker-cn.com/
docker中使用pm2+nodejs (pm2本身是守护进程+多进程分配.因此难以抛弃,因为docker开多个不同端口容器太占据资源) http://pm2.keymetrics.io/docs/usage/docker-pm2-nodejs/
Dockerfile