环境准备
在开始之前,请确保您的系统符合以下要求:
- 操作系统: Ubuntu 20.04 或更高版本。
- 用户权限 : 拥有
sudo
权限。 - 网络连接: 确保能够访问互联网以安装依赖和拉取镜像。
安装 Docker
-
更新系统包索引:
bashsudo apt update
-
安装必要的依赖:
bashsudo apt install -y apt-transport-https ca-certificates curl software-properties-common
-
添加 Docker 的 GPG 密钥:
bashcurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
-
添加 Docker 的 APT 源:
bashecho "deb [arch=$(dpkg --print-architecture) 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:
bashsudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io
-
验证安装是否成功:
bashdocker --version
输出示例:
Docker version 20.10.21, build baeda1f
生成 Docker 镜像
创建基础应用
我们以创建一个简单的 Python Web 应用为例。以下是项目结构:
myapp/
├── app.py
├── requirements.txt
└── Dockerfile
-
创建
app.py
文件:pythonfrom flask import Flask app = Flask(__name__) @app.route('/') def home(): return "Hello, Docker!" if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)
-
创建
requirements.txt
文件:flask
-
创建
Dockerfile
文件:dockerfile# 基础镜像 FROM python:3.9-slim # 设置工作目录 WORKDIR /app # 复制项目文件 COPY . /app # 安装依赖 RUN pip install -r requirements.txt # 暴露端口 EXPOSE 5000 # 启动应用 CMD ["python", "app.py"]
构建镜像
-
打开终端,进入项目目录:
bashcd myapp
-
构建镜像:
bashsudo docker build -t myapp:1.0 .
-
查看构建完成的镜像:
bashdocker images
示例输出:
REPOSITORY TAG IMAGE ID CREATED SIZE myapp 1.0 abcdef123456 10 seconds ago 23.4MB
加载 Docker 镜像
本地加载
保存镜像为文件
-
使用
docker save
命令导出镜像:bashdocker save -o myapp.tar myapp:1.0
这将在当前目录生成
myapp.tar
文件。 -
验证文件大小:
bashls -lh myapp.tar
加载镜像到 Docker
-
将镜像加载回 Docker:
bashdocker load -i myapp.tar
-
确认镜像已加载:
bashdocker images
上传到远程仓库
登录 Docker Hub
-
登录 Docker Hub:
bashdocker login
输入用户名和密码。
推送镜像
-
为镜像添加标签:
bashdocker tag myapp:1.0 <your-dockerhub-username>/myapp:1.0
-
推送镜像:
bashdocker push <your-dockerhub-username>/myapp:1.0
-
在 Docker Hub 上查看已上传的镜像。
测试 Docker 容器
-
运行容器:
bashdocker run -d -p 5000:5000 myapp:1.0
-
验证服务是否启动:
打开浏览器,访问
http://localhost:5000
,应该看到:Hello, Docker!
-
查看运行中的容器:
bashdocker ps
-
停止容器:
bashdocker stop <container-id>
常见问题与解决
构建失败
问题 :构建镜像时出现 pip
相关错误。
解决 :确保 requirements.txt
文件正确且网络通畅。可以尝试指定国内源:
dockerfile
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
容器无法访问
问题:容器运行后无法通过浏览器访问。
解决 :确保在 Dockerfile
中暴露了正确的端口,并在运行时使用了 -p
参数进行端口映射。
总结
通过本文的详细步骤,我们学习了如何在 Ubuntu 系统上安装 Docker、生成镜像、保存与加载镜像,并通过实际案例运行一个容器化的 Python Web 应用。希望本文能帮助您快速掌握 Docker 的核心操作,提升开发与运维效率。
如有任何疑问,欢迎留言讨论!