Docker 常用命令
# 拉取镜像
docker pull nginx:1.21
# 使用 Dockerfile 构建镜像
# 使用 . 表示 Dockerfile 在当前路径下
# 可以使用命令指定 Dockerfile 路径 -f /path/to/Dockerfile
# fronted 为镜像名称,082123 为版本号tag 见下图
docker build -t fronted:082123 .
# 查看镜像列表
docker images
# 删除镜像
docker rmi 镜像id
# 本地打包
# docker save -o fronted-版本号.tar fronted:版本号(一般为日期)
# 创建一个新的容器并运行
# --name fronted 为定义容器名称
# fronted:082123 为镜像名称和版本
# -p 8084:80 为端口映射
docker run -d -p 8084:80 --restart=always --name fronted fronted:082123
# 查看容器列表
docker ps -a
# 进入容器
docker exec -it 容器ID或容器名称 /bin/bash
docker exec -it 容器ID或容器名称 bash
# 停止容器
docker stop 容器名称或容器ID
# 删除容器
docker rm 容器名称或容器ID
1.导出镜像:
docker save -o <保存路径/文件名.tar> <镜像名:标签>
例如:
docker save -o my_image.tar my_image:latest
2.导入镜像:
docker load -i <镜像文件.tar>
例如:
docker load -i my_image.tar
导出容器为镜像
docker export 容器id > nginx.tar
导入镜像
cat nginx.tar | docker import - nginx:1.20.1

Docker 封装前端镜像
0.目录结构

1.前端打包后,文件放在 dist 目录下
2.创建 Dockerfile 文件
# 使用NGINX镜像
# m.daocloud.io 为加速地址
From m.daocloud.io/docker.io/library/nginx:1.22
# 复制前端到镜像指定目录
COPY dist/ /home/data/fronted/dist/
# 复制配置到镜像,覆盖nginx默认站点配置
COPY nginx.conf /etc/nginx/conf.d/default.conf
# 安装vim工具,一般为了减小镜像大小不安装
# RUN apt-get update && apt-get install -y vim
3.创建 nginx.conf 文件
server {
listen 80;
listen [::]:80;
server_name localhost;
location / {
root /home/data/fronted/dist;
index index.html;
try_files $uri $uri/ /index.html;
}
}
4.构建镜像
# 构建镜像
# 使用 . 表示 Dockerfile 在当前路径下
# fronted 为名称,082123 为版本号tag 见下图
docker build -t fronted:082123 .
# 查看镜像列表
docker images

5.启动容器
# 创建一个新的容器并运行
docker run -d -p 8084:80 --restart=always --name fronted fronted:082123
# 预览
http://localhost:8084
Docker 封装后端镜像
使用 Dockerfile 封装后端镜像
直接使用 jar 包构建,新建 Dockerfile 文件,放入如下内容
#
# 使用基础镜像
FROM adoptopenjdk/openjdk11:alpine-jre
# 设置docker容器内的工作目录
WORKDIR /app
# 将已经生成的 JAR 文件复制到容器中,这里注意 sxkc_api-1.0.0.jar 的路径
COPY sxkc_api-1.0.0.jar ./app.jar
# 设置时区环境变量
ENV TZ=Asia/Shanghai
# 暴露端口
EXPOSE 8081
# 启动命令
ENTRYPOINT [ "java", "-jar", "app.jar" ]
使用 源码 构建,新建 Dockerfile 文件,放入如下内容
# 第一阶段:构建阶段(使用 Maven 构建)
FROM maven:3.8.4-openjdk-11 AS build
# 设置工作目录
WORKDIR /app
# 将项目的 pom.xml 和源代码复制到容器中
COPY pom.xml .
COPY src ./src
# 使用 Maven 构建项目
RUN mvn clean package -DskipTests
# 第二阶段:生产阶段(使用轻量化的 JRE 运行)
FROM adoptopenjdk/openjdk11:alpine-jre
# 设置工作目录
WORKDIR /app
# 从第一阶段复制生成的 JAR 文件到生产镜像中
COPY --from=build /app/target/sxkc_api-1.0.0.jar ./app.jar
# 设置时区环境变量
ENV TZ=Asia/Shanghai
# 暴露端口
EXPOSE 8081
# 启动命令
ENTRYPOINT ["java", "-jar", "app.jar"]
运行docker 构建命令,进行镜像的构建
# 构建镜像
docker build -t df-maptool:20250401 .
# 查看镜像,构建完成后即可看到 df-maptool:20250401
docker images
# 运行容器
docker run -d --name df-maptool -p 8081:8081 df-maptool:20250401
# 查看容器
dockcer ps -a
# 进入容器
docker exec -it 容器id sh
# 导出镜像
docker save -o ../df-maptool.20250401.tar df-maptool:20250401
# 导入镜像
docker load -i ../df-maptool.20250401.tar
替换镜像中的文件
1.运行容器
docker run -d -p 8084:80 --restart=always --name fronted fronted:082123
2.替换文件
# 使用 docker cp 复制文件到容器
# docker cp myfile.txt mycontainer:/root/myfile.txt
# copy整个 mydir 目录到 /root/ 下, 注意这里copy的是整个mydir目录,包含目录本身
# docker cp mydir mycontainer:/root/
docker cp dist fronted:/home/data/fronted/
# 退出容器但不停止
exit
3.重新生成新的镜像
# 提交更改,创建新镜像
# fronted 为容器名称 fronted-new 为新的镜像名称 version为版本号,不指定默认为 latest
docker commit fronted fronted-new:version
或
导出容器为镜像
docker export 容器id > nginx.tar
常见问题
1.docker 中 vim 命令 无法执行,在容器中执行如下代码安装
apt-get update下源库
apt-get install vim 命令