【亲测有效】linux centos7.9裸机极简极速安装docker,临时用干净任意版本python环境跑后台程序

张开发
2026/4/17 13:17:47 15 分钟阅读

分享文章

【亲测有效】linux centos7.9裸机极简极速安装docker,临时用干净任意版本python环境跑后台程序
docker极速安装第一步极速安装 Docker使用阿里云源如果有报错就重复执行几次有时候是网络抖动这段命令会自动安装依赖、配置阿里云 Docker 源、替换底层下载地址并完成安装与启动# 1. 安装必备的依赖工具sudo yum install -y yum-utils device-mapper-persistent-data lvm2# 2. 添加阿里云的 Docker CE 镜像源sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# 3. 强制将 repo 文件中的官方地址替换为阿里云地址防止部分依赖仍然去官方拉取导致超时sudo sed -i sdownload.docker.commirrors.aliyun.com/docker-ce /etc/yum.repos.d/docker-ce.repo# 4. 安装 Docker 核心组件sudo yum install -y docker-ce docker-ce-cli containerd.io# 5. 启动 Docker 并设置开机自启sudo systemctl enable --now dockerdocker第二步配置国内拉取镜像加速器一劳永逸为了让你以后docker run或docker pull任何镜像都不再卡顿我们需要配置daemon.json。# 1. 创建配置目录sudo mkdir -p /etc/docker# 2. 写入国内可用的镜像源配置sudo tee /etc/docker/daemon.json -EOF{registry-mirrors: [https://docker.m.daocloud.io,https://dockerpull.com,https://docker.1panel.live]}EOF# 3. 重载配置并重启 Docker 服务sudo systemctl daemon-reloadsudo systemctl restart docker第三步让xxx用户免 sudo 直接使用 Docker将操作用户加入docker用户组日常与运维最标准做法这是最常规的解决方式。Docker 在安装时通常会创建一个名为docker的用户组。该组的用户被授予了访问docker.sock的权限。操作方法这一步解决你“普通用户直接使用”的需求。我们将xxx用户加入docker专属用户组。# 1. 如果 docker 组不存在先创建通常已存在sudo groupadd docker# 2. 将当前用户bigdata加入 docker 组sudo usermod -aG docker $USER# 3. 刷新用户组权限或者退出当前终端重新登录newgrp docker⚠️ 关键最后一步执行完上述命令后权限不会立刻在当前终端窗口生效。你需要让权限刷新有两种极简方式直接执行newgrp docker仅在当前窗口立刻生效或者最推荐的彻底退出当前 SSH 连接输入exit然后重新登录xxx用户。重新登录后输入docker ps如果没有报permission denied错误说明你的极简国内 Docker 环境已经完美就绪了。以下方法无需下载单独python解释器miniconda等大文件的包全靠docker自带的镜像拉取对应的python解释器并且安装依赖极大简化在陌生的临时的linux下运行复杂依赖的python程序做快速验证快速拿结果。一次性用docker 指定python环境执行本地一个要安装依赖库的程序打印到控制台ctrlc推出程序命令级替换最快立刻就能跑不需要修改任何系统配置直接在命令里加上国内第三方镜像库的代理前缀。把你命令里的python:3.10-slim替换为docker.m.daocloud.io/library/python:3.10-slim或者dockerpull.com/python:3.10-slim。直接复制运行这段docker run --rm \-u $(id -u):$(id -g) \-v /home/xxx/workdir:/workdir \-w /workdir \-e PYTHONPATH/workdir/libs \-e HOME/workdir \docker.m.daocloud.io/library/python:3.10-slim bash -c pip install --no-cache-dir -t /workdir/libs -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple python xxx.py解释1--rm参数一旦程序被Ctrl C中断停止Docker 会立刻将这个容器彻底删除。2增加了-u $(id -u):$(id -g)映射权限以及-e HOME/workdir确保 pip 在非 root 状态下有权限写入缓存或直接用--no-cache-dir规避缓存报错。3,Docker 容器默认使用 UTC 时区 国内宿主机是 CST北京时间UTC8。不然docker里日志打印时间会相差8小时。解决方案添加 -e TZAsia/Shanghai 环境变量修改你的 Docker 运行命令-e TZAsia/Shanghai生产环境最佳实践如何让程序在后台安全运行作为数据处理任务通常运行时间较长强烈不建议将其挂在当前终端的前台运行万一 SSH 断开、电脑休眠或手滑按了CtrlC任务就全毁了。建议将其改为后台守护Detached模式。你只需要修改两个小地方去掉--rm加上-d后台运行 和--name给容器起个名字方便管理。完整后台运行命令(只需保证有网能拉取到几十MB的python:3.10-slim基础镜像)docker run -d \--name my_data_task \-u $(id -u):$(id -g) \-v /home/xxx/workdir:/workdir \-w /workdir \-e PYTHONPATH/workdir/libs \-e HOME/workdir \docker.m.daocloud.io/library/python:3.10-slim bash -c pip install --no-cache-dir -t /workdir/libs -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple python yyy.pypython:3.10-slim 使用体积较小的 slim 版本极大提升迁移复制速度亲测可以换成其他python版本python:3.11-slim python:3.12-slim python:3.13-slim后台模式的优势与操作安全退出终端敲完上面的命令后终端会立刻返回一个长长的容器 ID然后你可以放心地关闭终端、拔掉网线、按Ctrl C程序都会在 CentOS 后台稳定运行。随时查看控制台日志即使你重新连接 SSH只需要输入以下命令就能像看直播一样重新接管并查看实时的控制台输出docker logs -f my_data_task(查看日志时按Ctrl C只会退出日志查看界面绝对不会中断后台运行的程序)检查程序是否还在运行docker ps | grep my_data_task程序跑完后的清理因为去掉了--rm程序运行结束后容器会处于 Exited 状态保留了完整的现场供你排查问题。确认没问题后你可以手动清理docker rm my_data_task一、 优雅退出 Docker 后台程序既然你在启动时使用了--name data_task管理起来就非常方便了。1. 优雅退出的命令docker stop data_task为什么叫“优雅”这个命令会向容器内的主进程发送一个SIGTERM终止信号你的 Python 程序如果写了异常捕获或信号处理会有默认 10 秒钟的时间来执行清理工作比如正常关闭数据库连接、写入剩余的日志、保存临时文件等。如果程序卡死10 秒后 Docker 才会发送强制的SIGKILL杀掉它。2. 强制杀死的命令仅在卡死时备用docker kill data_task3. 退出后的清理由于你这次没有加--rmdocker stop之后容器会变成Exited退出状态但依然存在于系统中占据一点点磁盘空间保留了日志现场。当你确认不需要它了可以手动删除容器docker rm data_task极简优雅重启方案修改完 Python 代码后直接在宿主机终端执行以下命令# -t 15 表示给程序 15秒 的时间进行优雅退出默认是10秒 docker restart -t 15 data_task这行命令背后的“优雅”逻辑是这样的Docker 会先向容器内的 Python 进程发送一个SIGTERM终止信号。你的程序有 15 秒钟的时间去处理收尾工作比如提交/回滚数据库事务、关闭文件句柄、打印结束日志。如果 15 秒后程序退出了Docker 会立刻重新启动它如果 15 秒后程序卡死还没退出Docker 才会发送SIGKILL强制杀掉它然后再重新启动。重新启动时Python 会直接读取你刚刚修改过的最新代码文件并执行。

更多文章