1. 入门使用:
必会命令
- 拉取镜像:
docker pull nginx
- 查看镜像:
docker images/docker images nginx
- 启动镜像(将www目录和nginx/html进行映射):
- 前台启动:
docker run -p 8000:80 -v $PWD/www:/usr/share/nginx/html nginx
- 后台启动:
docker run -d -p 8000:80 -v $PWD/www:/usr/share/nginx/html nginx
- 容器存在:
docker start <容器ID>
- 停止容器:
docker stop <容器ID>
- 查看运行进程:
docker ps
- 进入容器:
docker exec -it <容器ID> /bin/bash
- 删除容器:
docker rm <容器ID>
2. 定制镜像
案例1(Nginx):
- 创建Dockerfile文件
# 镜像内容 FROM nginx:latest RUN echo '<h1>Hello Docker</h1>' > /usr/share/nginx/html/index.html
- 编译
//docker build -t <定制镜像名> 当前目录 docker build -t nginx:ospoon .
- 启动
docker run -p 8000:80 nginx:ospoon
案例2(Node):
- 创建目录:
mkdir node-koa
- 初始化:
cd node-koa & npm i koa -S
- 创建koa服务:
const Koa = require("koa"); const app = new Koa(); app.use((ctx) => { ctx.body = "Hello NodeJs"; }); app.listen(3000, () => { console.log("app started at 3000"); });
- 编写Dockerfile
FROM node:10-alpine # 拷贝当前目录到容器/app目录 ADD . /app/ # 进入工作目录 WORKDIR /app # docker build 过程中运行 RUN npm install # 暴露端口 EXPOSE 3000 # 容器运行时执行 CMD ["node","app.js"]
- 编译镜像:
docker build -t node-koa .
- 启动:
docker run -d -p 3000:3000 node-koa
案例3(pm2):
- 拷贝案例2:
cp -R node-koa pm2-koa
- 编写pm2相关的yml文件
apps: - script: app.js # 进程数 instances: 2 # 监听模式 watch: true env: # 运行环境 NODE_ENV: production
- 编写Dockerfile
FROM keymetrics/pm2:latest-alpine # 工作目录 WORKDIR /usr/src/app ADD . /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"]
- 编译镜像:
docker build -t pm2-koa .
- 启动:
docker run -d -p 3000:3000 pm2-koa
3. docker-compose
负责实现对Docker容器集群的快速编排
案例:
- 编写配置文件: docker-compose.yml
# docker-compose.yml mongo + mongo-express version: '3.1' services: mongo: image: mongo restart: always ports: - 27017:27017 mongo-express: image: mongo-express restart: always ports: - 8081:8081
- 运行:
docker-compose up