在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指令,结合数据持久化、镜像优化等实践,可实现高效、安全的容器化部署。