Docker初学
Docker初学
Logic- docker教程:https://docker.easydoc.net
- wsl安装:安装 WSL | Microsoft Learn
- ubuntu的报错解决:https://blog.csdn.net/qq_17576885/article/details/126707239
- win11家庭版无hyper-v问题解决:https://blog.csdn.net/qq_38324605/article/details/125821951
WSL安装
什么是wsl?
Windows Subsystem for Linux(简称WSL)是一个在Windows 10\11上能够运行原生Linux二进制可执行文件(ELF格式)的兼容层。
控制面板启用WSL
打开 “控制面板”,选择 “程序与功能”,然后点击 “启动或关闭 Windows 功能”
在显示的列表中找到并勾选以下内容
“适用于 Linux 的 Windows 子系统”
“虚拟机平台”
跳出界面选择立即重启电脑
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题目,需要根据提供的 Dockerfile
或 docker-compose.yml
文件进行操作
(暂时未找到docker-compose.yml的示例)
Dockerfile 是一个文本文件,包含了构建 Docker 镜像的所有指令。
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
通过定义一系列命令和参数,Dockerfile 指导 Docker 构建一个自定义的镜像。
Dockerfile
获取 Dockerfile 我们需要在项目内有一个Dockerfile文件,否则我们需要自行创建一个 Dockerfile的文件。文件内容一般会提供,我们只需复制进我们的 Dockerfile中即可。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19FROM 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构建镜像 打开终端,导航到 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即可
运行容器 构建成功后,运行以下命令启动容器:
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
查看网络列表
此后就可以查看到正在运行的容器了