如何用Linux Docker搭建开发环境
导读:一、前置准备:安装Docker 在Linux系统上搭建Docker开发环境的第一步是安装Docker引擎。以常见的Ubuntu/Debian系统为例,安装步骤如下: 更新软件包列表:sudo apt-get update 安装Docker...
一、前置准备:安装Docker
在Linux系统上搭建Docker开发环境的第一步是安装Docker引擎。以常见的Ubuntu/Debian系统为例,安装步骤如下:
- 更新软件包列表:
sudo apt-get update
- 安装Docker依赖:
sudo apt-get install docker-ce docker-ce-cli containerd.io
- 启动Docker服务并设置开机自启:
sudo systemctl start docker
& &sudo systemctl enable docker
- 验证安装:
docker --version
(查看版本) & &sudo docker run hello-world
(运行测试镜像,确认功能正常)。
二、选择合适的基础镜像
基础镜像是Dockerfile的起点,需根据开发语言和环境需求选择:
- 通用开发环境:优先选择官方镜像(如
python:3.11
、node:18
、openjdk:17
),它们包含完整的语言运行时和常用工具,适合大多数场景。 - 精简环境:若需减少镜像体积(如CI/CD流水线),可选择
slim
版本(如python:3.11-slim
、node:18-slim
),它们基于Debian slim构建,去除了不必要的组件。 - Alpine Linux:若对体积敏感(如微服务),可选择Alpine版本(如
python:3.11-alpine
、node:18-alpine
),其体积仅5-10MB,但需注意部分依赖(如glibc)可能不兼容。
三、构建自定义镜像(可选但推荐)
通过Dockerfile定义镜像构建流程,实现环境一致性。以下是常见语言的Dockerfile示例:
1. Python开发环境
# 使用Python 3.9 slim基础镜像
FROM python:3.9-slim
# 设置工作目录(容器内的默认路径)
WORKDIR /app
# 复制依赖文件(requirements.txt)到工作目录
COPY requirements.txt .
# 安装依赖(-y表示自动确认)
RUN pip install --no-cache-dir -r requirements.txt
# 复制项目代码到工作目录
COPY . .
# 暴露应用端口(如Flask默认80端口)
EXPOSE 80
# 定义容器启动命令(运行Flask应用)
CMD ["python", "app.py"]
构建命令:docker build -t my-python-app .
(-t
指定镜像名称,.
表示Dockerfile所在目录)。
2. Node.js开发环境
# 使用Node.js 18基础镜像
FROM node:18
# 设置工作目录
WORKDIR /usr/src/app
# 复制package.json和package-lock.json(用于依赖管理)
COPY package*.json ./
# 安装依赖
RUN npm install
# 复制项目代码
COPY . .
# 暴露应用端口(如Express默认3000端口)
EXPOSE 3000
# 定义容器启动命令(启动Express应用)
CMD ["node", "app.js"]
构建命令:docker build -t my-node-app .
。
四、运行开发容器
通过docker run
命令启动容器,并配置必要的参数:
- 挂载本地目录:将本地项目文件夹挂载到容器内,实现代码实时同步(避免重复构建镜像)。
示例:docker run -it --name my-python-dev -v /path/to/local/project:/app -p 8080:80 my-python-app
参数说明:-it
(交互式终端)、--name
(容器名称)、-v
(挂载目录,格式:本地路径:容器路径
)、-p
(端口映射,格式:宿主机端口:容器端口
)。 - 后台运行:若需让容器在后台运行,添加
-d
参数(如docker run -d --name my-node-dev -v $(pwd):/app -p 3000:3000 my-node-app
)。
五、使用Docker Compose管理多容器环境
对于需要多个服务(如Web应用+数据库)的项目,可使用docker-compose.yml
文件定义和启动多容器环境:
version: '3' # 指定Compose文件版本
services: # 定义服务列表
web: # Web服务(如Node.js应用)
image: my-node-app # 使用自定义镜像
ports: # 端口映射
- "3000:3000" # 宿主机3000端口映射到容器3000端口
volumes: # 挂载目录
- ./:/app # 本地当前目录挂载到容器/app目录
working_dir: /app # 设置容器工作目录
command: npm start # 覆盖镜像默认启动命令
db: # 数据库服务(如PostgreSQL)
image: postgres:13 # 使用PostgreSQL 13镜像
environment: # 环境变量(配置数据库密码)
POSTGRES_PASSWORD: example
volumes: # 数据卷(持久化数据库数据)
- postgres_data:/var/lib/postgresql/data
volumes: # 定义数据卷(需在services外)
postgres_data:
启动命令:docker-compose up -d
(-d
表示后台运行);停止命令:docker-compose down
。
六、开发环境优化技巧
- 持久化数据:使用
volumes
挂载目录或数据卷,避免容器删除后数据丢失(如数据库文件、项目配置)。 - 自定义镜像:通过Dockerfile构建个性化镜像,减少重复配置(如预装依赖、设置环境变量)。
- 网络配置:创建专用Docker网络,让容器间通过名称通信(而非IP)。
示例:docker network create dev-network
(创建网络),docker run --network dev-network --name service1 my-image
(将容器加入网络)。 - 使用.dockerignore:在项目根目录创建
.dockerignore
文件,排除不必要的文件(如node_modules
、.git
、.log
),加快镜像构建速度。
七、常用命令速查
- 查看运行中的容器:
docker ps
- 查看所有容器(包括停止的):
docker ps -a
- 进入运行中的容器:
docker exec -it < 容器ID或名称> bash
- 停止容器:
docker stop < 容器ID或名称>
- 删除容器:
docker rm < 容器ID或名称>
- 查看镜像:
docker images
- 删除镜像:
docker rmi < 镜像ID或名称>
- 查看容器日志:
docker logs < 容器ID或名称>
- 构建镜像:
docker build -t < 镜像名称> .
。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何用Linux Docker搭建开发环境
本文地址: https://pptw.com/jishu/730470.html