为了账号安全,请及时绑定邮箱和手机立即绑定

服务器无root权限网页部署实录

标签:
Docker

基本场景和问题描述

目前的应用场景是学校课题组希望对外开放一个即时计算、渲染科学数据的平台,因为需要较多计算资源选在校内服务器上部署一个Django前后端网页,但是管理非常严格,不能给出sudo权限,包括对docker的调用。为解决这个问题探索了了rootlessdocker部署方案。

Rootless Docker安装和配置

教程见官方文档中文文档,已经较为详细。因为完全没有sudo权限,我们选用不使用软件包,直接运行安装脚本的方法。需要注意的是,中文网站上直接照搬了原curl -fsSL https://get.docker.com/rootless | sh的命令,访问有问题,脚本内容中还涉及到从download.docker.com下载,同样无法访问,可以先考虑在本地下载下载下来,将download.docker.com替换为mirrors.tuna.tsinghua.edu.cn/docker-ce或其他源,再运行脚本。在我的服务器上,还提示缺少iptables相关的依赖:

# Missing system requirements. Please run following commands to
# install the requirements and run this installer again.
# Alternatively iptables checks can be disabled with SKIP_IPTABLES=1

也没有权限安装,于是根据提示运行:

SKIP_IPTABLES=1 sh rootless

这会把docker相关的一系列可执行文件安装到$HOME/bin下,如果$HOME/bin还不在$PATH中则将其加入。但是还缺少了常用的``docker-compose`,可从GitHub上下载:

mkdir -p ~/.docker/cli-plugins/
curl -SL https://githubfast.com/docker/compose/releases/download/v2.2.3/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose #使用镜像
chmod +x ~/.docker/cli-plugins/docker-compose

注意到与一般模式下的docker不同,暂未找到rootless模式下的docker访问宿主机网络的方式,不能执行直接从公共源下载类的操作。因此在内部进行项目的构建和部署时,依赖的软件包需要从宿主机复制,如对于Python依赖,可以使用类似的方法修改原来的配置:

# 命令行运行
pip download -d /app/dependencies -r requirements.txt
# dockerfile
WORKDIR /app
COPY requirements.txt /app/
COPY dependencies /app/dependencies/
RUN pip install --no-cache-dir --no-index --find-links=/app/dependencies -r requirements.txt

这样根据docker-compose.yml中定义的转发规则,就可以在宿主机上正常得到服务的端口。

本文由博客一文多发平台 OpenWrite 发布!

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消