ubuntu环境如何使用容器技术
小樊
38
2025-11-22 15:51:37
Ubuntu 环境使用容器技术
一 安装与验证
- 更新系统并安装依赖
- sudo apt update && sudo apt upgrade -y
- sudo apt install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
- 添加 Docker 官方 GPG 密钥与软件源(使用推荐的 keyring 方式)
- curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
- 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 并启动服务
- sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io
- sudo systemctl start docker && sudo systemctl enable docker
- 验证安装
- sudo docker run --rm hello-world
- 可选 国内镜像加速(提升拉取速度)
- sudo mkdir -p /etc/docker
- sudo tee /etc/docker/daemon.json <<-‘EOF’
{
“registry-mirrors”: [“https://<你的加速器地址>.mirror.aliyuncs.com”]
}
EOF
- sudo systemctl daemon-reload && sudo systemctl restart docker
- 说明:也可使用系统仓库的 docker.io 包快速安装(sudo apt install -y docker.io),但版本与更新节奏可能滞后于 Docker 官方仓库。
二 基本使用
- 拉取与运行 Ubuntu 容器
- 拉取镜像:docker pull ubuntu:22.04(或 ubuntu:latest)
- 交互式运行:docker run -it --name my_ubuntu ubuntu:22.04 /bin/bash
- 后台运行与进入
- 后台运行:docker run -it -d --name my_dev --restart=unless-stopped ubuntu:22.04
- 进入容器:docker exec -it my_dev /bin/bash
- 常用管理
- 查看容器:docker ps(运行中)、docker ps -a(全部)
- 启停与删除:docker start|stop|restart|rm <容器名或ID>
- 文件拷贝
- 宿主机→容器:docker cp ./app my_dev:/tmp/
- 容器→宿主机:docker cp my_dev:/tmp/out.txt ./
- 运行一次性任务
- docker run --rm ubuntu:22.04 echo “Hello from container”
- 提示:最小化 Ubuntu 镜像缺少常用工具,进入后通常先执行 apt update && apt install -y <包名>(如 vim curl wget)。
三 数据持久化与网络
- 数据持久化
- 绑定挂载(开发常用):docker run -it -d --name web -p 8080:80 -v $PWD:/var/www/html ubuntu:22.04
- 命名卷(生产更推荐):docker volume create appdata;docker run -it -d --name web -p 8080:80 -v appdata:/var/www/html ubuntu:22.04
- 端口映射
- -p 主机端口:容器端口(如 -p 8080:80);-P 随机映射所有暴露端口
- 容器间通信
- 使用自定义网络:docker network create appnet;docker run -d --name db --network appnet ubuntu:22.04;docker run -d --name web --network appnet ubuntu:22.04
- 说明:卷由 Docker 管理,更适合持久化与迁移;绑定挂载便于开发时热更新。
四 多容器应用与 Docker Compose
- 示例 docker-compose.yml(Nginx + Redis)
- version: “3.8”
- services:
- web:
- image: nginx:alpine
- ports: [“8080:80”]
- volumes: [“./html:/usr/share/nginx/html:ro”]
- redis:
- 常用命令
- 启动:docker-compose up -d(后台)
- 查看日志:docker-compose logs -f
- 停止与清理:docker-compose down(加 -v 同时删除卷)
- 适用场景:本地开发、集成测试、小型服务编排。
五 构建镜像与最佳实践
- 使用 Dockerfile 构建自定义镜像
- FROM ubuntu:22.04
- RUN apt-get update && apt-get install -y nginx && rm -rf /var/lib/apt/lists/*
- EXPOSE 80
- CMD [“nginx”, “-g”, “daemon off;”]
- 构建:docker build -t my-nginx:1.0 .
- 运行:docker run -d -p 8080:80 --name web my-nginx:1.0
- 镜像与容器管理进阶
- 导出/导入镜像:docker save -o my-nginx.tar my-nginx:1.0;docker load -i my-nginx.tar
- 提交容器为新镜像:docker commit <容器ID> my-ubuntu:custom
- 安全与运维建议
- 以非 root 用户运行应用(Dockerfile 中 USER 指令)
- 最小权限与最小镜像;定期更新基础镜像与依赖
- 为长期服务设置重启策略(如 --restart=unless-stopped)
- 为容器设置资源限制(–cpus、–memory)避免资源争用
- 说明:Dockerfile 便于可重复构建与交付;commit 适合临时记录状态但不利于可维护性与审计。