Docker初学

WSL安装

什么是wsl?

Windows Subsystem for Linux(简称WSL)是一个在Windows 10\11上能够运行原生Linux二进制可执行文件ELF格式)的兼容层。

控制面板启用WSL

  • 打开 “控制面板”,选择 “程序与功能”,然后点击 “启动或关闭 Windows 功能”

  • 在显示的列表中找到并勾选以下内容

    1. “适用于 Linux 的 Windows 子系统”

    2. “虚拟机平台”

      跳出界面选择立即重启电脑

Install wsl

  • 在管理员模式下打开 PowerShell 或 Windows 命令提示符(cmd)

    在这里我的powershell不知道为什么一直不起作用,故而使用cmd

  • 输入命令

    1
    wsl --install

    重启一下

安装 Linux

打开微软商店,直接搜索并安装Ubuntu,下载后打开

这里逻辑酱遇到了一点小问题,打开Ubuntu后显示(Press any key to continue…)

ps:一般来说以管理员身份打开即可,但我遇到的问题有点小麻烦,但可以通过上述报错解决文章解决

配置

初次打开会要求设置username(不能大写)和password

!!!密码是不会显示的(逻辑酱初学阶段被这个坑过,一度因此放弃QAQ)

到这里docker的安装教程已经结束,接下来是关于docker的一些相关使用

如何用Docker部署CTF题目

首先弱要使用 Docker 复现 CTF题目,需要根据提供的 Dockerfiledocker-compose.yml 文件进行操作

(暂时未找到docker-compose.yml的示例)

Dockerfile 是一个文本文件,包含了构建 Docker 镜像的所有指令。

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

通过定义一系列命令和参数,Dockerfile 指导 Docker 构建一个自定义的镜像。

Dockerfile

  1. 获取 Dockerfile 我们需要在项目内有一个Dockerfile文件,否则我们需要自行创建一个 Dockerfile的文件。文件内容一般会提供,我们只需复制进我们的 Dockerfile中即可。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    FROM node:11
    MAINTAINER easydoc.net

    # 复制代码
    ADD . /app

    # 设置容器启动后的默认运行目录
    WORKDIR /app

    # 运行命令,安装依赖
    # RUN 命令可以有多个,但是可以用 && 连接多个命令来减少层级。
    # 例如 RUN npm install && cd /app && mkdir logs
    RUN npm install --registry=https://registry.npm.taobao.org

    # CMD 指令只能一个,是容器启动后执行的命令,算是程序的入口。
    # 如果还需要运行其他命令可以用 && 连接,也可以写成一个shell脚本去执行。
    # 例如 CMD cd /app && ./start.sh
    CMD node app.js

  2. 构建镜像 打开终端,导航到 Dockerfile 所在的目录(或者直接在项目目录中打开终端)

    然后执行以下命令构建镜像

    1
    docker build -t test .

    test 为自定义镜像名(-t 设置镜像名字和版本号)

    若运行报错npm报错:request to https://registry.npm.taobao.org failed, reason certificate has expired

    是因为淘宝镜像过期了

    在Dockerfile修改为https://registry.npmmirror.com即可

  3. 运行容器 构建成功后,运行以下命令启动容器:

    1
    docker run -d -p 8080:8080 test

    这会在后台运行容器,并将容器的端口 8080 映射到主机的端口 8080

    -p 映射容器内端口到宿主机
    --name 容器名字
    -d 后台运行

docker ps 查看当前运行中的容器
docker images 查看镜像列表
docker rm container-id 删除指定 id 的容器
docker stop/start container-id 停止/启动指定 id 的容器
docker rmi image-id 删除指定 id 的镜像
docker volume ls 查看 volume 列表
docker network ls 查看网络列表

此后就可以查看到正在运行的容器了