Rain's Blog

docker 极简入门

Rain, Fri Jul 14 2023back

前言

本篇文章会使用docker简单部署一个node服务,用其他语言编写也是可以的,重点是掌握常用的docker命令。

首先新建一个index.js文件

// index.js

const { createServer } = require('http')

const app = createServer((req, res) => {
  res.end('<h1>hello</h1>')
})

app.listen(3001)

console.log('服务运行在http://localhost:3001')

编写完相关代码,随后在当前目录中运行 node index.js ,访问本地 3001 端口,可以看到页面展示 Hello 字段,代表服务运行成功。

接下来使用docker来部署node服务

同样在当前目录下新建一个 Dockerfile 文件,注意首字母大小写,没有拓展名。编写以下内容

# 选择镜像
FROM node:20-alpine

#设置工作目录 代表以后的RUN/CMD命令都在这个工作目录中运行
WORKDIR /runDir

# 把当前的代码都添加到这个目录中
COPY . /runDir

# 运行启动命令
CMD node index.js

构建镜像

# 这里的imageName指的是构建之后的镜像名字,而后面的 ?:version 指代是否添加版本号,
# 版本可以不填写所以用?表示,不要忘了最后的点表示当前目录
docker build -t ${imageName?:version} .

# 示例
docker build -t my-docker:v1 .
#
docker build -t my-docker .

查看本地镜像

docker images
# 
docker image ls

找到要运行的镜像id,执行命令启动容器

docker run imageId

启动镜像

docker run -p ${target-port}:${origin-port} ${image-name?:version}
# 
docker run -p ${target-port}:${origin-port} ${image-id}

查看本地所有容器,包括没有正在运行的

docker ps -a

查看本地正在运行的容器

docker ps

停止某个正在运行的容器

docker stop ${container-id}

启动某个容器

docker start ${container-id}