Docker 基本使用

286次阅读
没有评论

开始

创建一个 nodejs 项目

npm init

再创建一个 index.js 添加以下内容

var http = require('http')

http.createServer(function (req, res) {res.end("hello")
}).listen(9999,function () {console.log(" 启动成功 ")
})

创建一个 Dockerfile 文件

FROM node:22-alpine3.18
COPY package.json .
WORKDIR /data
RUN echo " 在这里运行要执行的命令 "
COPY . .
EXPOSE 9999
CMD ["node","index.js"]
命令 使用方式 作用
FROM FROM 镜像名 在 build Docker 镜像过程中选择 Docker Hub 指定镜像 为基础镜像
COPY COPY 复制文件 被复制文件 在 build Docker 镜像过程中 复制指定文件到容器
WORKDIR WORKDIR 切换的目录 在 build Docker 镜像过程中 切换在 RUN 命令在容器的工作目录 类似于 linux bash 中的 cd
RUN RUN 要执行的命令 在 build Docker 镜像过程中执行必要的命令
EXPOSE EXPOSE 端口 在 build Docker 镜像过程中声明容器使用的端口
CMD CMD [“ 服务名 ”, “ 参数 ”] 在使用 Docker 镜像过程中用来启动服务

创建一个 .dockerignore 文件

Dockerfile
.dockerignore
文件名 作用
.dockerignore 添加不需要导入到容器的文件 已换行结束
Dockerfile Docker 镜像的构建文件
index.js Nodjs 的 web 服务文件
package.json Nodejs 的项目配置文件

构建镜像

使用以下命令构建镜像 . 是代表当前目录

docker build .

查看构建的镜像

使用以下命令查看构建完毕的镜像

docker images

结果如下

REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
<none>       <none>    44ad42b77637   14 hours ago   147MB
名称 含义
REPOSITORY Docker 镜像名
TAG 一般用来标识 Docker 镜像版本
IMAGE ID Docker 镜像 id
CREATED build 镜像时间
SIZE Docker 镜像的大小

修改镜像名称

用一下命令修改镜像名称

docker tag 44ad42b77637 nodejs:v1

上传镜像到 Docker Hub

注意上传到 Doker Hub 一定要名称修改为 用户名 / 仓库名称: 标识 示例如下

修改后会存在两个文件相同 两个名称不同的 Docker 镜像

docker tag 44ad42b77637 suchenqaq/test:v1

注册 Docker Hub 账号 然后在网页客户端创建对应的项目的仓库 执行以下登录命令登录 Docker Hhub 然后 输入账号和密码 即可登录

docker login

上传

docker push suchenqaq/test:v1

删除镜像

docker rmi -f suchenqaq/test:v1 

创建并运行容器

docker run  -d -p 9999:9999 -v C:\Users\Admin\PhpstormProjects\docker-study:/data:ro -v /data/node_modules --name nodejs nodejs:v1
  • -d 代表在后台运行
  • -p 代表指定端口 参数格式:-p 母机端口: 容器端口 示例:9999:9999
  • --name 设置运行时容器名称 参数格式:-name 名字
  • -v 文件互通会自动同步修改的文件 格式:-v 母机地址: 容器地址 示例:C:\Users\Admin\PhpstormProjects\docker-study:/data 不是 上面的文件格式 就是不同步的文件夹 容器地址加上 :ro 就是不同步容器的文件的意思 本质就是容器文件只能可读

查看运行的容器

docker ps -a
  • -a 代表全部 显示运行和包括暂停的容器

结果如下

CONTAINER ID   IMAGE       COMMAND                   CREATED              STATUS              PORTS                    NAMES
cdfc131ee0b2   nodejs:v1   "docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:9999->9999/tcp   clever_blackburn

关闭运行的容器

docker stop cdfc131ee0b2

删除正在运行的容器

docker rm -f cdfc131ee0b2
  • -f 代表强制
  • -v 容器使用 -v 进行互通就要加上这个删除 volume

操作正在运行的容器

docker exec -it nodejs-server /bin/sh
  • -i 代表要对容器进行操作
  • -t 代表以终端的形式进行操作

拉取容器

docker pull nginx:1.25.5
正文完
 0
评论(没有评论)