如何后台运行多版本Python Docker容器并在本地直接调用对应命令
多Python版本Docker容器配置方案
以下配置可实现本地直接调用python3.6/python3.7/python3.8命令对应不同容器环境,同时支持自定义默认python命令关联版本。
1. 拉取官方Python镜像
优先选择slim轻量化镜像,减少存储空间占用:
docker pull python:3.6-slim docker pull python:3.7-slim docker pull python:3.8-slim
2. 启动后台常驻容器
执行以下命令启动三个后台运行的容器,默认挂载本地当前执行命令的目录到容器内,保证本地脚本可以直接被容器内Python环境读取:
- 启动Python3.6容器:
docker run -d --name python36 -v "$(pwd):/app" -w /app python:3.6-slim tail -f /dev/null - 启动Python3.7容器:
docker run -d --name python37 -v "$(pwd):/app" -w /app python:3.7-slim tail -f /dev/null - 启动Python3.8容器:
docker run -d --name python38 -v "$(pwd):/app" -w /app python:3.8-slim tail -f /dev/null
参数说明:
tail -f /dev/null用于让容器启动后保持后台运行不自动退出,-v参数挂载本地目录到容器/app路径,-w指定容器默认工作目录为/app,和本地路径完全对应。
3. 配置本地命令别名
临时生效(仅当前终端会话有效)
直接在终端执行以下命令即可:
alias python3.6='docker exec -it python36 python' alias python3.7='docker exec -it python37 python' alias python3.8='docker exec -it python38 python' # 如需将默认python命令关联3.8版本,添加以下别名 alias python='docker exec -it python38 python'
永久生效
将上述别名命令写入对应终端配置文件:
- 若使用bash,写入
~/.bashrc,执行source ~/.bashrc生效 - 若使用zsh,写入
~/.zshrc,执行source ~/.zshrc生效
4. 使用示例
- 运行本地脚本:直接执行
python3.6 test.py即可调用3.6版本容器运行当前目录下的test.py - 安装对应版本依赖:执行
python3.7 -m pip install requests即可给3.7版本容器安装requests库 - 查看版本:执行
python3.8 --version即可验证对应版本是否正常
5. 异常处理
如果终端执行命令提示容器未运行,执行以下命令批量启动三个容器即可:docker start python36 python37 python38
内容的提问来源于stack exchange,提问作者Eli Halych
相关产品推荐
相关产品推荐

