linux

怎样用Docker部署Linux应用

小樊
41
2025-09-18 13:01:48
栏目: 智能运维

一、准备工作:安装Docker

在Linux系统上部署应用前,需先安装Docker引擎。以常见的Ubuntu/Debian和CentOS/RHEL系统为例,步骤如下:

  1. 更新系统包sudo apt update(Ubuntu/Debian)或sudo yum update(CentOS/RHEL)。
  2. 安装Docker
    • Ubuntu/Debian:sudo apt install docker.io
    • CentOS/RHEL:sudo yum install -y docker
  3. 启动并设置开机自启sudo systemctl enable --now docker
  4. 验证安装docker --version(显示Docker版本即成功)。
    若需避免每次使用sudo,可将当前用户加入docker组:sudo usermod -aG docker ${USER},注销后生效。

二、编写Dockerfile:定义应用镜像

Dockerfile是容器化的核心,用于描述镜像的构建步骤。以下以Python Flask应用(假设项目结构为app/,包含app.pyrequirements.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"]

关键说明

三、构建Docker镜像

在项目根目录(含Dockerfile)下,执行以下命令构建镜像:

docker build -t your-app-name:tag .

四、运行Docker容器

构建完成后,通过docker run命令启动容器:

docker run -d -p host-port:container-port --name container-name your-app-name:tag

五、管理容器与镜像

  1. 查看容器状态docker ps(查看运行中的容器)、docker ps -a(查看所有容器,包括已停止的)。
  2. 停止/启动容器docker stop container-name(停止容器)、docker start container-name(启动已停止的容器)。
  3. 查看容器日志docker logs container-name(查看实时日志)、docker logs -f container-name(跟踪日志输出)。
  4. 删除容器docker rm container-name(删除已停止的容器)、docker rm -f container-name(强制删除运行中的容器)。
  5. 管理镜像docker rmi image-name(删除本地镜像)、docker push image-name:tag(推送镜像到远程仓库,如Docker Hub)。

六、优化与进阶实践

  1. 数据持久化:若应用需要保存数据(如数据库、上传文件),需使用数据卷(Volume)或绑定挂载(Bind Mount)。例如:
    docker run -d -p 8080:5000 -v /host/path:/container/path --name flask-app my-flask-app:v1
    
    /host/path为宿主机目录,/container/path为容器内目录,数据会持久化到宿主机。
  2. 镜像优化
    • 多阶段构建:适用于编译型语言(如Go、Java),将编译和运行环境分离,减少最终镜像大小。示例如下:
      # 构建阶段(使用编译型基础镜像)
      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 cleanrm -rf /var/lib/apt/lists/*),减少镜像体积。
  3. 安全实践
    • 避免以root用户运行容器:在Dockerfile中添加USER nonroot(需提前创建用户);
    • 扫描镜像漏洞:使用docker scan image-name(需安装Docker Scan)或第三方工具(如Trivy)检测镜像漏洞。

通过以上步骤,即可完成Linux环境下Docker部署应用的全流程。根据应用类型(如Java、Node.js、Go)调整Dockerfile指令,结合数据持久化、镜像优化等实践,可实现高效、安全的容器化部署。

0
看了该问题的人还看了