如何用Docker在Linux部署应用
如何在Linux上使用Docker部署应用
1. 安装Docker
在Linux系统上部署应用前,需先安装Docker。以下是常见发行版的安装步骤:
-
Ubuntu/Debian:
更新软件包索引并安装依赖:sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common添加Docker官方GPG密钥和稳定版仓库:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"安装Docker CE(社区版)并启动服务:
sudo apt-get update sudo apt-get install -y docker-ce sudo systemctl start docker sudo systemctl enable docker # 设置开机自启 -
CentOS:
更新系统并安装Docker:sudo yum update -y sudo yum install -y docker启动服务并配置开机自启:
sudo systemctl start docker sudo systemctl enable docker(可选)优化配置:编辑
/etc/docker/daemon.json,添加以下内容提升安全性与性能:{ "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m"} , "storage-driver": "overlay2" }重启Docker使配置生效:
sudo systemctl restart docker -
验证安装:运行
docker version,若输出Docker版本信息(如Client: Docker Engine - Community),则说明安装成功。
2. 准备应用与Dockerfile
Dockerfile是定义镜像构建流程的核心文件,需根据应用类型编写。以下是常见场景的示例:
-
Python应用(如Flask/Django):
在应用根目录创建Dockerfile,内容如下:# 使用官方Python轻量级镜像(减少镜像体积) FROM python:3.9-slim # 设置工作目录(容器内的路径) WORKDIR /app # 复制当前目录所有文件到容器的工作目录 COPY . /app # 安装依赖(排除缓存以减小镜像大小) RUN pip install --no-cache-dir -r requirements.txt # 暴露应用端口(如Flask默认5000) EXPOSE 5000 # 定义容器启动命令(运行应用) CMD ["python", "app.py"] -
Java Spring Boot应用:
若应用已打包为app.jar(位于target目录),Dockerfile内容如下:# 使用官方OpenJDK运行时镜像(轻量且适配生产) FROM openjdk:11-jre-slim # 维护者信息(可选) LABEL maintainer="your-email@example.com" # 复制JAR文件到容器 COPY target/app.jar /app.jar # 暴露应用端口(Spring Boot默认8080) EXPOSE 8080 # 定义启动命令(直接运行JAR) ENTRYPOINT ["java", "-jar", "/app.jar"] -
Nginx静态网站:
若需部署静态网站,可直接拉取Nginx镜像,无需自定义Dockerfile(后续步骤会介绍)。
3. 构建Docker镜像
在包含Dockerfile的应用目录下,运行以下命令构建镜像:
docker build -t your-app-name .
-t your-app-name:为镜像指定名称(如my-python-app、springboot-app),便于后续管理;.:表示Dockerfile所在目录(当前目录)。
构建过程中,Docker会依次执行Dockerfile中的指令(如拉取基础镜像、复制文件、安装依赖)。构建完成后,可通过docker images查看镜像列表。
4. 运行Docker容器
构建完成后,使用docker run命令启动容器:
docker run -d -p host-port:container-port --name container-name your-app-name
-d:后台运行容器(detached模式);-p host-port:container-port:将主机的端口映射到容器的端口(如-p 5000:5000表示主机5000端口映射到容器5000端口,适用于Python/Java应用;-p 80:80适用于Nginx);--name container-name:为容器指定名称(如my-running-app、my-nginx),便于管理;your-app-name:之前构建的镜像名称。
示例:
- 运行Python应用:
docker run -d -p 5000:5000 --name my-python-app my-python-app; - 运行Nginx:
docker run --name my-nginx -d -p 80:80 nginx(nginx为官方镜像名称,无需构建)。
验证应用是否运行:打开浏览器访问http://localhost:host-port(如http://localhost:5000),若看到应用页面则说明部署成功。
5. 管理Docker容器
部署后,需掌握常用管理命令:
- 查看运行中的容器:
docker ps; - 查看所有容器(包括停止的):
docker ps -a; - 停止容器:
docker stop container-name-or-id(如docker stop my-python-app); - 启动已停止的容器:
docker start container-name-or-id; - 删除容器:
docker rm container-name-or-id(需先停止容器); - 查看容器日志:
docker logs container-name-or-id(用于排查问题)。
6. 可选优化:数据卷与网络
-
数据卷(Volume):用于持久化数据(如数据库文件、上传的图片),避免容器删除后数据丢失。
示例:运行MySQL容器并将主机/host/mysql-data目录映射到容器/var/lib/mysql:docker run -d -p 3306:3306 --name my-mysql -v /host/mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7 -
自定义网络:让多个容器互相通信(如应用与数据库分离)。
示例:创建名为my-network的自定义网络,并运行容器连接到该网络:docker network create my-network docker run -d --name my-app --network my-network my-python-app docker run -d --name my-db --network my-network mysql:5.7此时,
my-app可通过my-db主机名访问MySQL容器(无需暴露端口到主机)。
通过以上步骤,即可在Linux系统上使用Docker完成应用部署。Docker的隔离性与可移植性,能显著简化环境配置与迁移流程,提升开发与运维效率。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何用Docker在Linux部署应用
本文地址: https://pptw.com/jishu/746924.html
