在Linux系統上搭建Docker開發環境的第一步是安裝Docker引擎。以常見的Ubuntu/Debian系統為例,安裝步驟如下:
sudo apt-get updatesudo apt-get install docker-ce docker-ce-cli containerd.iosudo systemctl start docker && sudo systemctl enable dockerdocker --version(查看版本) && sudo docker run hello-world(運行測試鏡像,確認功能正常)。基礎鏡像是Dockerfile的起點,需根據開發語言和環境需求選擇:
python:3.11、node:18、openjdk:17),它們包含完整的語言運行時和常用工具,適合大多數場景。slim版本(如python:3.11-slim、node:18-slim),它們基于Debian slim構建,去除了不必要的組件。python:3.11-alpine、node:18-alpine),其體積僅5-10MB,但需注意部分依賴(如glibc)可能不兼容。通過Dockerfile定義鏡像構建流程,實現環境一致性。以下是常見語言的Dockerfile示例:
# 使用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所在目錄)。
# 使用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)。對于需要多個服務(如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掛載目錄或數據卷,避免容器刪除后數據丟失(如數據庫文件、項目配置)。docker network create dev-network(創建網絡),docker run --network dev-network --name service1 my-image(將容器加入網絡)。.dockerignore文件,排除不必要的文件(如node_modules、.git、.log),加快鏡像構建速度。docker psdocker ps -adocker exec -it <容器ID或名稱> bashdocker stop <容器ID或名稱>docker rm <容器ID或名稱>docker imagesdocker rmi <鏡像ID或名稱>docker logs <容器ID或名稱>docker build -t <鏡像名稱> .。