在Linux系统上部署应用前,需先安装Docker引擎。以常见的Ubuntu/Debian和CentOS/RHEL系统为例,步骤如下:
sudo apt update(Ubuntu/Debian)或sudo yum update(CentOS/RHEL)。sudo apt install docker.io;sudo yum install -y docker。sudo systemctl enable --now docker。docker --version(显示Docker版本即成功)。sudo,可将当前用户加入docker组:sudo usermod -aG docker ${USER},注销后生效。Dockerfile是容器化的核心,用于描述镜像的构建步骤。以下以Python Flask应用(假设项目结构为app/,包含app.py和requirements.txt)为例,说明关键指令:
# 1. 选择基础镜像(优先用官方轻量级镜像,如slim或alpine)
FROM python:3.9-slim
# 2. 设置工作目录(后续命令在此目录执行)
WORKDIR /app
# 3. 复制依赖文件并安装(利用缓存减少构建时间)
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
# 4. 复制应用代码
COPY . .
# 5. 暴露应用端口(容器内端口,需与代码监听端口一致)
EXPOSE 5000
# 6. 定义启动命令(容器启动时执行的命令)
CMD ["python", "app.py"]
关键说明:
openjdk、Node.js用node);RUN、COPY等指令会创建新层,合并相关指令(如RUN apt-get update && apt-get install -y curl)可减少层数;slim(如python:3.9-slim)或alpine(如python:3.9-alpine)减少镜像体积,提升部署效率。在项目根目录(含Dockerfile)下,执行以下命令构建镜像:
docker build -t your-app-name:tag .
-t:指定镜像名称及标签(如my-flask-app:v1),建议用语义化标签(如v1、latest);.:表示构建上下文(即Dockerfile所在目录,所有COPY指令的文件均来自此目录)。docker images查看本地镜像列表。构建完成后,通过docker run命令启动容器:
docker run -d -p host-port:container-port --name container-name your-app-name:tag
-d:后台运行容器(detached模式);-p:端口映射(将宿主机的host-port映射到容器的container-port,如-p 8080:5000表示宿主机8080端口转发到容器5000端口);--name:指定容器名称(便于管理,如--name my-flask-container);your-app-name:tag:之前构建的镜像名称及标签。docker run -d -p 8080:5000 --name flask-app my-flask-app:v1。curl http://localhost:8080(返回应用响应即成功),或通过浏览器访问http://localhost:8080。docker ps(查看运行中的容器)、docker ps -a(查看所有容器,包括已停止的)。docker stop container-name(停止容器)、docker start container-name(启动已停止的容器)。docker logs container-name(查看实时日志)、docker logs -f container-name(跟踪日志输出)。docker rm container-name(删除已停止的容器)、docker rm -f container-name(强制删除运行中的容器)。docker rmi image-name(删除本地镜像)、docker push image-name:tag(推送镜像到远程仓库,如Docker Hub)。docker run -d -p 8080:5000 -v /host/path:/container/path --name flask-app my-flask-app:v1
/host/path为宿主机目录,/container/path为容器内目录,数据会持久化到宿主机。# 构建阶段(使用编译型基础镜像)
FROM golang:1.21 as builder
WORKDIR /app
COPY . .
RUN go build -o main .
# 运行阶段(使用轻量级基础镜像)
FROM alpine:latest
WORKDIR /root/
COPY --from=builder /app/main .
CMD ["./main"]
apt-get clean、rm -rf /var/lib/apt/lists/*),减少镜像体积。root用户运行容器:在Dockerfile中添加USER nonroot(需提前创建用户);docker scan image-name(需安装Docker Scan)或第三方工具(如Trivy)检测镜像漏洞。通过以上步骤,即可完成Linux环境下Docker部署应用的全流程。根据应用类型(如Java、Node.js、Go)调整Dockerfile指令,结合数据持久化、镜像优化等实践,可实现高效、安全的容器化部署。