Docker Command
基础的docker使用,制作一个简易的nginx服务器
拉取官方镜像 - 面向docker的只读模板
docker pull nginx
查看
docker images nginx
启动镜像
mkdir www echo 'hello docker!!' >> www/index.html
启动
www目录里面放一个index.html
docker run -p 8000:80 -v $PWD/www:/usr/share/nginx/html nginx
后台启动
docker run -p 80:80 -v $PWD/www:/usr/share/nginx/html -d nginx
停止
docker stop ff6
查看进程
docker ps docker ps -a // 查看全部
删除镜像
docker rm ff6
在Dockerfile所在的目录下定制镜像
定制nginx镜像
-
创建Dockerfile文件,然后在其中定义内容
# 告诉docker我们是从哪个镜像开始往下写 FROM nginx:lastest # 镜像运行的过程中执行的命令 # 地址/usr/share/nginx/html/index.html为docke主机内的地址 RUN echo '<h1>hello, charph !!!</h1>' > /usr/share/nginx/html/index.html
-
构建镜像并进行测试
docker build -t mynginx .
-
运行测试镜像:
docker run -p 8000:80 mynginx
# 定制镜像, mynginx是打包出来的镜像名 docker build -t mynginx . # 运行 mynginx这个镜像 docker run -p 8000:80 mynginx
定制NodeJs镜像
-
准备好node的程序代码
npm init -y npm i koa -s
// package.json { "name": "myappp", "version": "1.0.0", "main": "app.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC", "description": "myappp", "dependencies": { "koa": "^2.7.0" } }
// app.js const Koa = require('koa') const app = new Koa() app.use(ctx => { ctx.body = 'Hello Docker' }) app.listen(3000, () => { console.log('app started at http://localhost:3000/') })
-
创建Dockerfile文件,然后在其中定义内容
# 制定node镜像的版本 FROM node:10-alpine # 将当前目录下面的文件 copy 到 app目录下 ADD . /app/ # 进入到app目录下面,类似cd WORKDIR /app # 安装依赖 RUN npm install # 对外暴露的端口 EXPOSE 3000 # docker run 的时候执行的指令, 直接理解为:程序启动脚本 CMD ["node", "app.js"]
-
构建镜像并进行测试
# 定制镜像, mynode是打包出来的镜像名 docker build -t mynode . # 运行 mynode这个镜像, -d 为后台运行 docker run -p 3000:3000 -d mynode
PM2镜像定制
一般运行node程序,不会直接去运行,而是通过PM2这样一个进程守护的程序去运行node程序
-
创建.dockeringnore文件
node_modules
-
创建process.yml文件,去描述它的运行
// process.yml apps: # 启动执行的文件,我们这个node程序启动是node app.js,所以就是app.js - script : app.js # 启动 2个 进程 instances: 2 # 对代码启用一个监听状态 watch : true # node 中的 env 设置为 生产模式 env : NODE_ENV: production
-
创建Dockerfile文件,然后在其中定义内容
# Dockerfile # 制定pm2镜像的版本 FROM keymetrics/pm2:latest-alpine # 将当前目录下面的文件 copy 到 /usr/src/app目录下 ADD . /usr/src/app # 进入到/usr/src/app目录下面,类似cd WORKDIR /usr/src/app # 安装依赖 RUN npm config set registry https://registry.npm.taobao.org/ && \ npm i # 对外暴露的端口 EXPOSE 3000 # pm2在docker中使用命令为pm2-docker CMD ["pm2-runtime", "start", "process.yml"]
-
构建镜像并进行测试
# 定制镜像, mypm2是打包出来的镜像名 docker build -t mypm2 . # 运行 mypm2这个镜像, -d 为后台运行 docker run -p 3000:3000 -d mypm2