ubuntu环境如何进行容器化部署
导读:Ubuntu环境下容器化部署完整流程 1. 安装Docker(容器化基础引擎) Docker是Ubuntu系统实现容器化部署的核心工具,需优先完成安装。以下是推荐的安装步骤: 更新系统软件包:确保系统包索引最新,避免依赖冲突。sudo a...
Ubuntu环境下容器化部署完整流程
1. 安装Docker(容器化基础引擎)
Docker是Ubuntu系统实现容器化部署的核心工具,需优先完成安装。以下是推荐的安装步骤:
- 更新系统软件包:确保系统包索引最新,避免依赖冲突。
sudo apt update
- 安装必要依赖:支持通过HTTPS访问Docker官方仓库。
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
- 添加Docker官方GPG密钥:验证软件包来源的安全性。
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
- 配置Docker稳定版仓库:将Docker官方仓库添加至系统源列表。
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- 安装Docker Engine:更新包索引并安装最新版本的Docker组件。
sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io
- 验证安装结果:运行测试镜像确认Docker正常工作。
sudo docker run hello-world
若需简化日常使用,可将当前用户加入docker
组(避免每次使用sudo
):
sudo usermod -aG docker $USER
newgrp docker # 立即生效
2. 创建Dockerfile(定义容器镜像)
Dockerfile是构建自定义镜像的“蓝图”,需根据应用类型编写。以下以Python Flask应用为例:
- 在项目根目录创建
Dockerfile
文件:# 使用官方Python轻量级镜像作为基础 FROM python:3.9-slim # 设置工作目录(容器内的路径) WORKDIR /app # 复制项目文件至工作目录(先复制依赖文件,利用Docker层缓存提高构建效率) COPY requirements.txt . # 安装Python依赖 RUN pip install --no-cache-dir -r requirements.txt # 复制应用代码至工作目录 COPY . . # 暴露应用运行端口(与代码中监听端口一致) EXPOSE 5000 # 定义容器启动时的默认命令(以非root用户运行更安全) USER 1000 CMD ["python", "app.py"]
注:
USER 1000
需替换为项目中存在的非root用户UID(可通过id -u
查看),避免容器以root权限运行。
3. 构建Docker镜像
通过Dockerfile生成可复用的镜像,命令格式为:
docker build -t <
镜像名称>
:<
标签>
<
Dockerfile所在目录>
示例(构建名为my-flask-app
、标签为latest
的镜像):
docker build -t my-flask-app:latest .
构建过程中,Docker会逐行执行Dockerfile指令,生成多层镜像结构。
4. 运行Docker容器
将镜像转化为运行中的容器,常用命令:
- 基础运行(映射主机端口至容器端口,后台模式):
示例(将主机8080端口映射至容器5000端口,容器名为docker run -d -p < 主机端口> :< 容器端口> --name < 容器名称> < 镜像名称>
flask-container
):docker run -d -p 8080:5000 --name flask-container my-flask-app:latest
- 查看运行状态:
docker ps # 查看正在运行的容器 docker ps -a # 查看所有容器(包括已停止的)
- 查看容器日志:
docker logs -f < 容器名称> # 实时查看日志(-f表示跟随输出)
5. 使用Docker Compose(管理多容器应用)
对于包含多个服务(如Web应用+数据库+缓存)的应用,推荐使用Docker Compose通过docker-compose.yml
文件统一管理。
- 安装Docker Compose:
sudo curl -L "https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
- 编写docker-compose.yml(以Flask+Redis为例):
version: '3.8' # 指定Compose文件格式版本 services: web: build: . # 构建当前目录下的Dockerfile ports: - "8080:5000" # 映射主机端口至容器端口 environment: - FLASK_ENV=production # 设置环境变量 volumes: - .:/app # 持久化代码(主机目录:/容器目录) depends_on: - redis # 定义服务依赖(web服务启动前需先启动redis) redis: image: redis:alpine # 使用轻量级Redis镜像 ports: - "6379:6379" # 暴露Redis端口
- 启动多容器应用:
docker-compose up --build # --build表示重新构建镜像
- 停止多容器应用:
docker-compose down
6. 关键管理操作
- 查看容器日志:
docker-compose logs -f web # 查看web服务的实时日志
- 重启容器:
docker-compose restart web # 重启web服务
- 进入容器终端:
docker exec -it < 容器名称> /bin/bash # 进入容器内部调试
7. 最佳实践(提升稳定性与安全性)
- 镜像优化:
- 使用多阶段构建减少镜像大小(如将构建环境和运行环境分离)。
- 选择轻量级基础镜像(如
alpine
、slim
版本)。
- 持久化存储:
- 使用
volumes
指令挂载宿主机目录或命名卷,避免数据丢失(如数据库文件)。
- 使用
- 安全配置:
- 避免以root用户运行容器(通过
USER
指令指定非root用户)。 - 定期扫描镜像漏洞(使用
docker scan
或第三方工具如Trivy)。
- 避免以root用户运行容器(通过
- 资源限制:
- 通过
docker run
或docker-compose.yml
设置CPU、内存限制(如--cpus="1.0"
、--memory="512m"
),防止容器占用过多资源。
- 通过
通过以上步骤,可在Ubuntu环境中完成从基础到进阶的容器化部署,满足不同规模应用的需求。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu环境如何进行容器化部署
本文地址: https://pptw.com/jishu/719616.html