docker是什么?
Docker 是一个开源的容器化平台,用于开发、发布和运行应用程序。它通过将应用程序及其依赖项打包成一个容器,使应用在任何支持 Docker 的环境中都能保持一致性。容器本质上是轻量级、独立的运行环境,包含了应用程序和它所需的所有资源,但与虚拟机不同的是,容器共享主机操作系统的内核,从而更高效且占用更少资源。
CTFd是什么?
CTFd 是一个用于创建和管理 CTF(Capture The Flag)竞赛的平台。它是一个开源的、基于 Flask 框架的工具,常用于举办信息安全竞赛。在 CTFd 中,竞赛组织者可以创建各种类型的挑战题目(如逆向工程、漏洞利用、密码学等),而参赛者通过提交正确的 Flag 来得分。CTFd 提供用户注册、积分排行榜和多种题目管理功能,是开展网络安全训练和竞赛的常用平台。
1. 更换国内源
1.1 备份原源文件
cp -p /etc/apt/sources.list /etc/apt/sources_init.list
1.2 编辑源文件
使用 vim 编辑 sources.list 文件,复制以下内容:
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
1.3 更新源列表
apt update
apt update 是一个用于更新 Ubuntu 或其他基于 Debian 的 Linux 系统中的包管理器(APT,Advanced Package Tool)软件包信息的命令。
具体作用
当你运行 apt update 时,APT 会从系统中配置的软件源列表中获取最新的软件包信息。这些信息包括每个软件包的最新版本、依赖关系和其他元数据。它不会安装或升级任何软件包,只是更新你本地的软件包数据库。
运行 apt update 的主要目的是:
- 获取最新的包信息,使系统知道当前有哪些软件包的更新可用。
- 确保你在后续安装、升级软件时可以获取到最新的版本。
1.4 更新系统
apt-get upgrade
2. 安装 Docker 和 Docker Compose
2.1 安装 pip
确保系统安装 Python 3 的 pip 包管理器:
apt-get install -y python3-pip
apt-get install apt-transport-https ca-certificates curl software-properties-common 是一个命令,用于在基于 Debian 的 Linux 系统(例如 Ubuntu)上安装多个软件包。这些软件包有助于增强系统的包管理能力和安全性。以下是每个软件包的具体解释:
2.2 添加 HTTPS 支持
apt-get install apt-transport-https ca-certificates curl software-properties-common
2.3 安装必要的工具
apt-get install apt-utils && apt-get install git -y
pt-get install apt-utils && apt-get install git -y 是一个在基于 Debian 的 Linux 系统(例如 Ubuntu)上安装两个软件包的命令。以下是对每个部分的解释:
apt-get install apt-utils:
这个命令安装 apt-utils 包,它包含了一些 APT 的实用工具,用于改进软件包管理器的功能,如更详细的错误信息和配置帮助。在某些最小化的系统安装中,apt-utils 可能没有默认安装,因此这个命令确保其存在。
&&:
这个符号是逻辑运算符,表示“如果前一个命令成功执行,那么执行下一个命令”。也就是说,只有当 apt-get install apt-utils 成功后,系统才会继续执行后面的 apt-get install git -y。
apt-get install git -y:
这个命令安装 git,一个广泛使用的版本控制系统,用于管理和跟踪代码变更。
-y 选项表示自动确认所有提示,这样就不需要手动输入“yes”来确认安装。
2.4 添加 Docker GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
这个命令用于将 Docker 的 GPG 密钥添加到你的 Ubuntu 系统中,以确保系统能够验证并信任从 Docker 官方存储库下载的软件包。以下是该命令的详细解析:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg:
curl:一个用于从网络下载数据的命令行工具。
-f:如果请求失败,curl 会返回错误码,而不会输出错误内容。
-s:静默模式,curl 不输出进度条或错误信息。
-S:与 -s 一起使用时,在发生错误时显示错误信息。
-L:如果请求被重定向,curl 会自动跟随重定向。
https://download.docker.com/linux/ubuntu/gpg:这是 Docker 官方提供的 GPG 密钥文件的 URL。这个密钥用于验证从 Docker 官方存储库下载的软件包的真实性。
| sudo apt-key add -:
| 是管道符号,将前一个命令的输出传递给下一个命令。
sudo:以超级用户权限运行命令,确保有权限添加密钥。
apt-key add -:这个命令将通过管道传入的内容(Docker 的 GPG 密钥)添加到系统的受信任密钥列表中。- 表示从标准输入读取密钥数据。
2.5 添加 Docker 的 apt 源
echo 'deb https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/ buster stable' | sudo tee /etc/apt/sources.list.d/docker.list
2.6 更新 apt 缓存
apt update
2.7 安装 Docker
apt-get install docker.io -y
2.8 设置 Docker 启动并启动服务
systemctl enable docker && systemctl start docker
systemctl enable docker && systemctl start docker 是用于在系统上启用并启动 Docker 服务的命令。
2.9 安装 Docker Compose
apt-get install docker-compose -y
2.10 检查 Docker 和 Docker Compose 版本
docker -v
docker-compose -v
2.11 配置 Docker 镜像加速
编辑 Docker 配置文件:
vim /etc/docker/daemon.json
就是新建文件!
写入以下内容:
{"registry-mirrors": ["https://hccwwfjl.mirror.aliyuncs.com"]}
2.12 重启 Docker 服务
systemctl daemon-reload
systemctl restart docker
3. 部署 CTFd 与 CTFd-Whale
3.1 上传 CTFd 安装包
将 CTFd.zip 上传到 /root 目录
我这里用的以下是 scp 命令的简洁示例:
从本地复制文件到远程服务器:
scp /path/to/local/file username@remote_host:/path/to/remote/directory
从远程服务器复制文件到本地:
scp username@remote_host:/path/to/remote/file /path/to/local/directory
复制整个目录到远程服务器:
scp -r /path/to/local/directory username@remote_host:/path/to/remote/directory
指定 SSH 端口传输文件:
scp -P port_number /path/to/local/file username@remote_host:/path/to/remote/director是scp上传
3.2 安装解压缩工具
apt install unzip
3.3 解压安装包
unzip CTFd.zip && cd CTFd/
3.4 Docker 集群设置
启用 Docker Swarm:
docker swarm init --advertise-addr 自己的ip
别管报错
最后用docker node ls
docker swarm init --advertise-addr <你的IP地址> 是用于初始化 Docker Swarm 集群的命令,并将当前节点设为管理节点。以下是该命令的结构和使用说明:
docker swarm init --advertise-addr <你的IP地址>
参数说明
docker swarm init:初始化一个新的 Docker Swarm 集群。
--advertise-addr <你的IP地址>:指定管理节点用于与其他节点通信的 IP 地址。这通常是主机的一个可访问的 IP 地址(例如局域网 IP),确保其他节点能通过这个 IP 地址加入集群。
添加节点别名(选择一种方法):
方法 1(推荐):
docker node update --label-add "name=linux-1" $(docker node ls -q)
命令 docker node update --label-add "name=linux-1" $(docker node ls -q) 的意思是将标签 "name=linux-1" 添加到 Docker Swarm 集群中的所有节点。以下是该命令的详细分解:
docker node update:用于更新 Swarm 集群中的节点属性。
--label-add "name=linux-1":指定要添加的标签为 "name=linux-1"。标签是键值对,用于对节点进行分类和管理。
$(docker node ls -q):这是一个命令替换,返回所有节点的 ID(使用 -q 选项只显示 ID,不显示其他信息)。这部分命令将所有节点 ID 传递给 docker node update 命令。
方法 2:
docker node ls
docker node update --label-add name=linux-1 <节点 ID>
命令 docker node update --label-add "name=linux-1" $(docker node ls -q) 的意思是将标签 "name=linux-1" 添加到 Docker Swarm 集群中的所有节点。以下是该命令的详细分解:
docker node update:用于更新 Swarm 集群中的节点属性。
--label-add "name=linux-1":指定要添加的标签为 "name=linux-1"。标签是键值对,用于对节点进行分类和管理。
$(docker node ls -q):这是一个命令替换,返回所有节点的 ID(使用 -q 选项只显示 ID,不显示其他信息)。这部分命令将所有节点 ID 传递给 docker node update 命令。
3.5 构建并启动镜像
确保在 /root/CTFd 目录下执行:
docker-compose up -d
docker ps -a
3.6 管理脚本设置
在容器中执行管理脚本:
docker-compose exec ctfd python manage.py set_config whale auto_connect_network
docker-compose exec ctfd python manage.py set_config whale auto_connect_network 是用于在 Docker Compose 环境中执行 CTFd(一个开源的 Capture The Flag 平台)管理脚本来配置特定选项的。
3.7 注意事项
如果不行就重新来一下!
pip如果是要升级就再升级一下就行!
4. CTF 初始化配置
4.2 访问 CTFd
在浏览器中访问:
根据提示填写活动名称和描述信息。
4.3 管理员设置
设置管理员用户名、邮箱和密码。
4.4 主题和风格设置
保持默认点击下一步。
4.5 设置 CTF 开始和结束时间
点击完成后进入管理面板。
4.6 配置 CTFd Whale 插件
在管理面板中点击插件,配置参数。
5. 部署 CTF 题目
5.1 克隆 CTFTraining 题库
mkdir CTF && cd CTF
git clone https://github.com/CTFTraining/CTFTraining.git
5.2 下载具体题目
cd CTFTraining
git clone https://github.com/CTFTraining/0ctf_2016_unserialize.git
cd 0ctf_2016_unserialize
docker-compose up -d
5.3 访问 CTFd
在浏览器中访问:
点击登录,使用管理员账号登录 CTFd。
点击 Admin Panel
标签:node,web,apt,ctf,CTFd,Docker,com,docker From: https://blog.csdn.net/m0_70065235/article/details/143896209