Docker常用镜像

靶场镜像

# dvwa
docker run -d -p 43301:3306 -p 48881:80 --restart=always --name=dvwa sagikazarmark/dvwa
# pikachu
docker run -d -p 43302:3306 -p 48882:80 --restart=always --name=pikachu area39/pikachu
# sqli-labs
docker run -d -p 43303:3306 -p 48883:80 --restart=always --name=sqli-labs acgpiano/sqli-labs
docker run -d -p 43303:3306 -p 48883:80 --restart=always --name=sqli-labs registry.cn-hangzhou.aliyuncs.com/lanhuli/bachang:sqli-labs

# xss-labs
docker run -d -p 43304:3306 -p 48884:80 --restart=always --name=xss-labs vulfocus/xss-labs
# ssrf-labs
docker run -d -p 43305:3306 -p 48885:80 --restart=always --name=ssrf-labs anhkhoa14592/ssrf-labs
# webgoat 安装
docker run -d -p 48887:8080 -p 49091:9090 -e TZ=Asia/Shanghai --restart=always --name=webgoat webgoat/webgoat
# bluelotus_xss 安装
docker run -d -p 48888:80 --restart=always --name=bluelotus_xss tanyiqu/bluelotus_xss_receiver


对于某些课程,您需要在同一时区运行容器。为此,您可以设置 TZ 环境变量。
https://hub.docker.com/r/webgoat/webgoat

pdf 在线处理工具

docker pull registry.cn-hangzhou.aliyuncs.com/lanhuli/s-pdf:0.26.1
docker run -d \
  -p 18080:8080 \
  --restart=always \
  -e DOCKER_ENABLE_SECURITY=false \
  --name stirling-pdf \
  registry.cn-hangzhou.aliyuncs.com/lanhuli/s-pdf:0.26.1

# 看需求进行目录映射
#  -v /location/of/trainingData:/usr/share/tesseract-ocr/5/tessdata \
#  -v /location/of/extraConfigs:/configs \
#  -v /location/of/logs:/logs \

webdav 服务镜像

源镜像仓库: https://hub.docker.com/r/bytemark/webdav

docker run -d --name=webdav --restart always -v /srv/share/mybooks:/var/lib/dav \
    -e AUTH_TYPE=Basic -e USERNAME=123 -e PASSWORD=123 \
    -p 18888:80 \
    registry.cn-hangzhou.aliyuncs.com/lanhuli/webdav:latest

注意:阅读小说 app 使用时,AUTH_TYPE=Basic 必须使用 Basic,使用 Digest 会导致 401 报错。

容器启动后在宿主机的 mybooks 文件夹下,默认创建 data 目录,这是工作的目录,存放我们的文件。

步骤 1:
按下 “windows 徽标键” + “R”,打开运行窗口,输入 regedit,点击确定后,打开注册表编辑器窗口。

步骤 2:
将路径定位到以下路径:计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WebClient\Parameters。双击右侧界面中的 BasicAuthLevel 条目,将数值数据修改为“2”,点击确定后关闭注册表编辑器。
步骤 3:  
按下 “**windows 徽标键**” + “**R**”,打开运行窗口,输入`services.msc`,点击确定后,打开“服务”界面。找到 “**WebClient**”  
服务,右键点击打开选项菜单,选择重新启动,稍等几秒,待完成后,关闭“服务”界面。
完成上述三个步骤后,WebClient 服务已经允许使用 http 协议进行挂载。

syncthing 同步

docker run -d -p 8384:8384 -p 220 00:22000 \
    -v /srv/mydisk/share/komga:/var/syncthing \
    --name=syncthing \
    --restart=always \
    registry.cn-hangzhou.aliyuncs.com/lanhuli/syncthing:1.27

-v /srv/mydisk/share/komga:/var/syncthing

komga

docker run -d \
  --name komga \
  -v /srv/share/komga/data:/data \
  -v /srv/share/komga/config:/config \
  -p 25600:25600 \
  -e TZ=Asia/Shanghai \
  --restart=always \
  registry.cn-hangzhou.aliyuncs.com/lanhuli/komga:1.11.1

dvwa 镜像

arm64 版本

镜像来源:petechua/docker-vulnerable-dvwa: 1.0

docker run -d -p 48881:80 --restart=always --name=dvwa-arm64 registry.cn-hangzhou.aliyuncs.com/lanhuli/bachang:dvwa-arm64

数据库登录:root 密码为空

  • 用户:app
  • 密码:vulnerables
  • 注意:无法远程登录

x86 版本

镜像来源:sagikazarmark/dvwa:latest

docker run -d -p 43301:3306 -p 48881:80 --restart=always --name=dvwa registry.cn-hangzhou.aliyuncs.com/lanhuli/bachang:dvwa

MySQL 凭据配置为 DVWA 默认值:

  • 用户:root
  • 密码: p@ssw0rd
  • 数据库: dvwa

sqli-labs

镜像来源:acgpiano/sqli-labs

docker run -d -p 43303:3306 -p 48883:80 --restart=always --name=sqli-labs registry.cn-hangzhou.aliyuncs.com/lanhuli/bachang:sqli-labs

oracle 数据库镜像

oracle-11g

源镜像仓库: https://hub.docker.com/r/oracleinanutshell/oracle-xe-11g

安装(Ubuntu 18.04)

docker pull registry.cn-hangzhou.aliyuncs.com/lanhuli/oracle:11g
docker run -d -p 11521:1521 -p 10022:22 -p 18080:8080 -e ORACLE_ALLOW_REMOTE=true --name=oracle11g --restart=always registry.cn-hangzhou.aliyuncs.com/lanhuli/oracle:11g

如果要,请运行此命令:

-e ORACLE_ALLOW_REMOTE=true       # 远程连接数据库
-e ORACLE_DISABLE_ASYNCH_IO=true  # 禁用磁盘异步 IO
-e ORACLE_ENABLE_XDB=true         # 使用默认密码启用 XDB 用户

对于 APEX 用户:

docker run -d -p 49161:1521 -p 8080:8080 oracleinanutshell/oracle-xe-11g
# Login http://localhost:8080/apex/apex_admin with following credential:
username: ADMIN
password: admin
修改后的密码:Xjj#123

默认情况下,密码验证为禁用(密码永不过期) 。使用以下设置连接数据库:

hostname: localhost
port: 49161
sid: xe
username: system 或者 sys
password: oracle

orcale-12c

源镜像仓库地址: https://hub.docker.com/r/zhuyijun/oracle-12c

下载镜像

docker pull registry.cn-hangzhou.aliyuncs.com/lanhuli/oracle:12c
# 创建并运行容器,简单使用
docker run -d --name oracle12c  -p 11521:1521 -p 15500:5500 --restart=always \
-e ORACLE_SID=orcl \
-e ORACLE_PDB=orclpdb1 \
-e ORACLE_PWD=Oracle#123 \
-e ORACLE_CHARACTERSET=al32utf8 \
registry.cn-hangzhou.aliyuncs.com/lanhuli/oracle:12c

如要使用更多环境变量,参数如下

docker run --name oracle12c  -p 11521:1521 -p 15500:5500 \
-e ORACLE_SID=orcl \
-e ORACLE_PDB=orclpdb1 \
-e ORACLE_PWD=Oracle#123 \
-e ORACLE_CHARACTERSET=al32utf8 \
-e ORACLE_BASE=/opt/oracle \
-e ORACLE_HOME=/opt/oracle/product/12.2.0.1/dbhome_1 \
-e PATH=/opt/oracle/product/12.2.0.1/dbhome_1/bin:/opt/oracle/product/12.2.0.1/dbhome_1/OPatch/:/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \
-v /home/nicemoe/oradata:/opt/oracle/oradata \
registry.cn-hangzhou.aliyuncs.com/lanhuli/oracle:12c

注意使用之前修改/home/nicemoe/oradata 为自己的

/d/docker/data/oradata 意思是 D:/docker/data/oradata 文件夹

其它使用:

# 修改密码
docker exec  <container name> ./setPassword.sh <your password>
docker exec  d38c6077ec85 ./setPassword.sh Oracle*123456  # 例如这样修改密码

# 访问 OEM Express
# https://localhost:5500/em/  # 注意要用 https
# 用户名、密码、容器名:system/sys、123456、orclpdb1
# 以 sysdba 身份登录:sys、123456、orclpdb1

orcale-19c

源镜像仓库地址: https://hub.docker.com/r/zhuyijun/oracle-12c

docker pull registry.cn-hangzhou.aliyuncs.com/lanhuli/oracle:19c
# 创建并运行容器,简单使用
docker run -d --name oracle19c  -p 21521:1521 -p 25500:5500 --restart=always \
-e ORACLE_SID=orcl \
-e ORACLE_PDB=orclpdb1 \
-e ORACLE_PWD=Oracle#123 \
-e ORACLE_CHARACTERSET=al32utf8 \
registry.cn-hangzhou.aliyuncs.com/lanhuli/oracle:19c

如要使用更多环境变量,参数如下

docker run  --name myoracle  -p 1521:1521 -p 5500:5500 \
-e ORACLE_SID=orcl \
-e ORACLE_PDB=orclpdb1 \
-e ORACLE_PWD=123456 \
-e ORACLE_CHARACTERSET=zhs16gbk \
-e ORACLE_BASE=/opt/oracle \
-e ORACLE_HOME=/opt/oracle/product/12.2.0.1/dbhome_1 \
-e PATH=/opt/oracle/product/12.2.0.1/dbhome_1/bin:/opt/oracle/product/12.2.0.1/dbhome_1/OPatch/:/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin \
-v /home/nicemoe/oradata:/opt/oracle/oradata \
registry.cn-hangzhou.aliyuncs.com/lanhuli/oracle:19c

其它使用:

# 修改密码
docker exec  <container name> ./setPassword.sh <your password>
docker exec  d38c6077ec85 ./setPassword.sh Oracle*123456  # 例如这样修改密码

# 访问 OEM Express
# https://localhost:5500/em/  # 注意要用 https
# 用户名、密码、容器名:system/sys、123456、orclpdb1
# 以 sysdba 身份登录:sys、123456、orclpdb1

oracle-19c-arm64

源镜像仓库: https://hub.docker.com/r/beatrizzallo/oracle-19e-m1

  1. 使用提供的映像生成容器的命令:
docker run -d -p 18080:8080 -p 11521:1521 --name "oracle19" -e ORACLE_SID="oracle_sid" registry.cn-hangzhou.aliyuncs.com/lanhuli/oracle: 19c-arm64
  1. 创建并初始化(检查已完成配置的日志)后,您可以为用户生成一个新通道,如下所示:
docker exec "image-name" /opt/oracle/setPassword.sh "new-pass"
# 对密码有复杂度有要求 Oracle#123

nginx-php5.6 镜像

源镜像仓库: https://hub.docker.com/r/andreisusanu/nginx-php5.6

使用

docker run --name nginx-php5.6 -p 8000:80 -v /path/to/local/ www:/var/www/html andreisusanu/nginx-php5.6

mind-map

轻量级的思维导图: https://github.com/wanglin2/mind-map

docker 部署

docker pull shuiche/mind-map:latest
docker run -d -p 8081:8080 --name=mind-map --restart=always shuiche/mind-map:latest

注意:

  • 网页需要 https 才能进行访问,否则无法进行新建等操作。可以用在线 ssl 网站生成自签名证书,然后 nginx 反向代理
  • nginx 配置文件复制粘贴时空格报错,win 平台问题
server {
        listen 8082 ssl;
        server_name 192.168.31.211;

		# ssl 证书的 pem 文件路径
        ssl_certificate /etc/nginx/zhengshu/cert.pem;
        # ssl 证书的 key 文件路径
        ssl_certificate_key /etc/nginx/zhengshu/private.key;
        location / {
                proxy_pass http://192.168.31.211:8081 ;
        }
}

部署到静态文件服务器

项目本身不依赖后端,所以完全可以部署到一个静态文件服务器上,可以依次执行如下命令:

git clone https://github.com/wanglin2/mind-map.git
cd mind-map
cd simple-mind-map
npm i
npm link
cd ..
cd web
npm i
npm link simple-mind-map

然后你可以选择启动本地服务:

npm run serve

也可以直接打包生成构建产物:

npm run build

jellyfin

docker run -d -p 8096:8096 --name jellyfin --restart=always -v /srv/share/jellyfin/config:/config -v /srv/share/jellyfin/cache:/cache -v /srv/share/jellyfin/media:/media  e16e6f156cd4
-d: 以守护进程模式运行容器,即在后台运行。
--name: 为容器指定一个名称,这里是jellyfin。
--user: 指定运行容器的用户ID和组ID,这里使用1000:1000作为示例。这是为了安全性和文件权限管理。
--net=host: 使用宿主机的网络,这样可以使Jellyfin容易地通过宿主机的网络端口访问。
-v: 绑定宿主机的目录到容器内的目录。这里绑定了配置目录(/path/to/config)、缓存目录(/path/to/cache),以及媒体文件目录(/path/to/media)。
/path/to/config: 存储Jellyfin的配置文件和数据。
/path/to/cache: 存储Jellyfin的临时缓存文件。
/path/to/media: 媒体库目录,Jellyfin将从这里读取媒体文件。
docker run -d -p 18096:8096 --name jellyfin1 --restart=always -v jellyfin_data:/config -v jellyfin_data:/cache -v jellyfin_data:/media  e16e6f156cd4

解析 markdown 的小镜像

有时候急需翻阅笔记,查找内容,但是笔记保存在我本地的电脑上,所以想将本地保存的 markdown 笔记,同步到放到服务器上,通过浏览器网页的方式,可以直接看到 markdown 解析后的页面。能简单查看笔记内容,应一下急就行。

考虑过 hugo,hexo 等,有点麻烦,虽然我现在有用 Hugo 搭建了一个博客,但感觉过于正式,我就想简单看一下就行😂。在网上查找了一下,思否上看到这个如何在浏览器直接浏览markdown文件 回答,下面帖子里面有个兄弟自己写一个专用的服务器 Markdown Server,本地运行测试了一下,刚好就是我想要的,感谢这个兄弟♥️

我的笔记都是本地保存,图片使用相对路径在 md 文件中进行引用的,这个程序不会改变目录结构,从而显示图片,所以可以直接将整个笔记复制到程序的运行目录下。

本地运行测试页面:

网站首页

二级目录

打开笔记页面:有参数可以修改这个页面的主题,但是就这个默认的好看(github-markdown),其他的贼难看(个人看法)

打包成 docker 镜像

因为是用 npm 安装的,但是我又不想安装 node.js 和 npm,索性直接用 docker 打包成一个镜像,方便使用。

Dockerfile 文件

# 看仓库时间,这个作者最后 Published 是在2017-2018年,用的老版本镜像。
FROM node:11.1.0-alpine

# 创建工作目录
WORKDIR /markdown

# 安装 markdown-http-server
RUN npm install -g markdown-http-server
# 声明端口,仅仅只是一个声明,描述需要哪些端口
EXPOSE 80

#运行启动脚本
COPY start.sh /root/start.sh
RUN chmod +x /root/start.sh
CMD ["sh","-c","/root/start.sh"]

start.sh 文件内容

#!/bin/sh
markdown-server -p 80 /markdown/
/bin/sh

镜像使用

docker run -d -p 8080:80 --restart=always --name=markdown-server -v /your-path:/markdown registry.cn-hangzhou.aliyuncs.com/lanhuli/markdown-server:latest

注意:镜像部署的网站没有任何的身份验证功能,所以任何人都可以访问,部署在公网服务器上请注意隐私泄露问题。你可以使用 Nginx 的反向代理和 Basic_Auth 来配置简单的身份验证

mssql 数据库

参考: https://learn.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-docker?view=sql-server-ver16&tabs=cli&pivots=cs1-bash

docker pull mcr.microsoft.com/mssql/server:2017-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=你的密码" -p 1433:1433 --name=sql1 mcr.microsoft.com/mssql/server:2017-latest

注意:密码应符合 SQL Server 默认密码策略,否则容器无法设置 SQL Server,会停止工作。 默认情况下,密码必须为至少八个字符且包含以下四种字符中的三种:大写字母、小写字母、十进制数字、符号。

进入容器内部

cd /opt/mssql-tools/bin
.sqlcmd -S localhost -U sa -P "你的密码"

portainer

管理 docker 的容器和镜像

# 汉化版
docker run -d --restart=always --name="portainer" -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock 6053537/portainer-ce