Docker入门使用指南
内容摘录自开课吧学习资料
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

浙公网安备 33010602011771号