1. 创建 Dockerfile 文件
(1)选择工作目录
首先,创建一个项目目录,并进入该目录:
mkdir my-docker-project
cd my-docker-project
(2)创建 Dockerfile
使用任何文本编辑器(如 nano、vim 或 gedit)创建一个名为 Dockerfile 的文件:
nano Dockerfile
注意:Dockerfile 文件名没有扩展名(例如 .txt 或 .conf),必须是纯文本格式。
2. 编写 Dockerfile 内容
以下是一个简单的 Dockerfile 示例,基于 Ubuntu 构建一个运行 Python 应用的镜像:
# 使用官方的 Python 基础镜像
FROM python:3.9-slim
# 设置工作目录
WORKDIR /app
# 复制当前目录下的所有文件到容器的 /app 目录
COPY . /app
# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt
# 暴露端口(如果需要)
EXPOSE 5000
# 启动命令
CMD ["python", "app.py"]
解释每一行的作用
- FROM python:3.9-slim:
指定基础镜像。这里选择了轻量化的 Python 3.9 镜像。
- WORKDIR /app:
设置容器内的工作目录为 /app。
- COPY . /app:
将当前目录下的所有文件复制到容器的 /app 目录。
- RUN pip install --no-cache-dir -r requirements.txt:
安装 Python 依赖。假设你有一个 requirements.txt 文件。
- EXPOSE 5000:
暴露容器的 5000 端口(如果你的应用运行在该端口上)。
- CMD [“python”, “app.py”]:
容器启动时运行的默认命令。
3. 添加必要的文件
根据你的应用需求,可能需要添加一些文件到项目目录中。例如:
(1)Python 应用文件
创建一个简单的 Python 应用文件 app.py:
from 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)
(2)依赖文件
创建一个 requirements.txt 文件,列出应用所需的依赖:
Flask==2.3.2
4. 构建 Docker 镜像
完成 Dockerfile 和相关文件后,可以使用以下命令构建镜像:
docker build -t my-python-app:latest .
-t my-python-app:latest:为镜像指定名称和标签。
.:表示当前目录是构建上下文。
构建完成后,可以通过以下命令查看镜像:
docker images
5. 运行容器
使用以下命令运行容器:
docker run -p 5000:5000 my-python-app:latest
-p 5000:5000:将容器的 5000 端口映射到主机的 5000 端口。
my-python-app:latest:使用的镜像名称。
访问 http://localhost:5000,你应该会看到 “Hello, Docker!”。
6. 常见问题及解决方法
(1)文件权限问题
如果无法保存或编辑 Dockerfile,检查文件权限:
chmod 644 Dockerfile
(2)镜像构建失败
检查 Dockerfile 中的语法是否正确。
确保所有依赖文件(如 requirements.txt)存在且内容无误。
(3)容器无法启动
检查 CMD 或 ENTRYPOINT 指令是否正确。
查看容器日志以排查问题:
docker logs <container_id>