基本场景和问题描述
目前的应用场景是学校课题组希望对外开放一个即时计算、渲染科学数据的平台,因为需要较多计算资源选在校内服务器上部署一个Django
前后端网页,但是管理非常严格,不能给出sudo
权限,包括对docker
的调用。为解决这个问题探索了了rootless
的docker
部署方案。
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 发布!
共同学习,写下你的评论
评论加载中...
作者其他优质文章