网站建设背景图片大小的修改,台州网站制作 外贸,网站开发需要什么人,wordpress 语言Docker 是一个轻量级容器化平台#xff0c;通过将应用及其依赖打包到容器中#xff0c;实现快速部署和环境一致性。以下是 Docker 的实践与应用场景举例#xff0c;结合具体操作步骤#xff1a; 一、基础实践
1. 快速启动一个容器
# 运行一个Nginx容器#xff0c;映射宿…Docker 是一个轻量级容器化平台通过将应用及其依赖打包到容器中实现快速部署和环境一致性。以下是 Docker 的实践与应用场景举例结合具体操作步骤 一、基础实践
1. 快速启动一个容器
# 运行一个Nginx容器映射宿主机80端口到容器80端口
docker run -d -p 80:80 --name my-nginx nginx-d: 后台运行-p: 端口映射--name: 容器名称
2. 查看容器状态
docker ps -a # 查看所有容器
docker logs my-nginx # 查看容器日志3. 进入容器内部
docker exec -it my-nginx /bin/bash二、应用场景举例
1. Web 服务部署
场景部署一个 Python Flask 应用 步骤
编写 DockerfileFROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD [gunicorn, --bind, 0.0.0.0:5000, app:app]构建镜像docker build -t my-flask-app .运行容器docker run -d -p 5000:5000 my-flask-app2. 数据库容器化
场景运行 MySQL 数据库并持久化数据
# 创建数据卷
docker volume create mysql_data# 启动MySQL容器
docker run -d \--name mysql-db \-e MYSQL_ROOT_PASSWORDmy-secret-pw \-v mysql_data:/var/lib/mysql \-p 3306:3306 \mysql:8.0-v: 将容器内的 /var/lib/mysql 挂载到宿主机卷 mysql_data实现数据持久化。 3. 多容器协作Docker Compose
场景部署一个包含 Web 应用、Redis 缓存的完整服务
编写 docker-compose.ymlversion: 3
services:web:build: .ports:- 5000:5000depends_on:- redisredis:image: redis:alpinevolumes:- redis_data:/data
volumes:redis_data:启动服务docker-compose up -d4. 持续集成CI/CD
场景在 GitLab CI 中运行测试 示例 .gitlab-ci.yml
test:image: node:16script:- npm install- npm test三、进阶实践
1. 自定义网络
# 创建自定义网络
docker network create my-network# 将容器连接到网络
docker run -d --network my-network --name app1 my-app
docker run -d --network my-network --name app2 my-app同一网络内的容器可通过容器名直接通信如 app1 可直接访问 app2:8080。
2. 镜像优化
使用多阶段构建减少镜像体积# 构建阶段
FROM golang:1.18 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp# 运行阶段
FROM alpine:latest
COPY --frombuilder /app/myapp /
CMD [/myapp]四、常见问题解决
容器时区问题 在 Dockerfile 中设置时区RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime容器内存限制docker run -m 512m --memory-swap 1g my-app五、应用场景总结
场景工具/技术核心优势微服务部署Docker Compose环境隔离一键启动开发环境统一Docker镜像消除“在我机器上能运行”问题快速原型验证预构建镜像如Jupyter秒级启动无需安装依赖蓝绿部署Docker Swarm/K8s无缝切换零停机更新 通过 Docker 可以实现
环境一致性开发、测试、生产环境完全一致快速部署镜像秒级启动无需配置依赖资源隔离每个容器独立运行避免依赖冲突弹性伸缩结合 Kubernetes 实现自动扩缩容