Docker~介绍

docker组成部分

  • Docker Client 客户端
  • Docker Daemon 守护进程
  • Docker Image 镜像——关键之一
  • Docker Container 容器——关键之一

[!NOTE]

VMware是完全虚拟,硬件虚拟化,虚拟操作系统,驱动,应用程序-——安全,物理隔离。

共用主机的部分应用程序,服务。

云安全。有docker逃逸?

安装方式:(推荐Linux系统)

  1. docker.io: apt install docker.io Debian团队维护和打包

  2. docker.ce: Docker 官方团队维护和打包

  3. docker.ee: 商业版

    Docker环境安装:使用yijing快速安装:

1
2
3
4
5
cat etc/apt/soureces.list #检查下载源
git clone https://gitee.com/yijingsec/LinuxEnvConfig.git
cd LinuxEnvConfig
sudo bash LinuxEnvConfig.sh
#选择 11. 脚本自动进行Docker安装
1
2
apt install docker.io #手动版? 可以无视这个捏 
apt remove docker docker-engine docker.io #卸载旧版本

image-20240507210921854

相关命令操作:

1
2
3
4
5
6
7
8
# 查看docker服务状态
systemctl status docker

# 启动docker服务
systemctl start docker

# 开启自启动docker服务
systemctl enable docker

有必要的话还要安装docker-compose:最新版会自带的;

1
docker compose

Docker基础操作部分:

1.对镜像的操作:

1
2
3
4
5
6
7
docker image ls -a
docker images
REPOSITORY:镜像所在的仓库名称
TAG:镜像标签
IMAGEID:镜像ID
CREATED:镜像的创建日期(不是获取该镜像的日期)
SIZE:镜像大小

image-20240507223445979

1
2
3
4
5
6
7
8
docker image pull:抓取 image 文件的命令
library/hello-world:image 文件在仓库里面的位置
library:是 image 文件所在的组
hello-world:是 image 文件的名字
#当然因为image都是在library里面的 所以你可以
docker image pull hello-world
#顺便一提,这个命令其实也不是很重要,后面的docker run 或者 docker-compose up -d
#都是会自动拉取镜像下载的w

顺便一提,速度好慢;拉取镜像建议还是直接拉国内的项目or proxychains

image-20240507223808633

1
2
3
4
5
6
7
8
#先列出镜像
docker images
docker image rm 镜像名或镜像id
docker rmi 镜像名或镜像id
如:

docker image rm hello-world
docker rmi feb5d9fea6a5

image-20240507223941168

image-20240507224057383

看一下就知道没拉~

2.对Docker 容器进行操作

1
2
3
4
5
6
7
8
9
10
11
12
13
docker run hello-world #启动容器
#这里有几个参数要注意:
-i 表示以“交互模式”运行容器
-t 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即 分配一个伪终端。
--name 为创建的容器命名
-v 表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录,即 宿主机目录:容器中目录),可以使 用多个-v 做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后 共享到容器上。
-d 在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不 会自动登录容器,如果加-i -t 两个参数,创建后就会自动进去容器)。
-p 表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p 做多个端口映射
-e 为容器设置环境变量
--network=host 表示将主机的网络环境映射到容器中,容器的网络与主机相同
#常用的命令的话就是
docker run -d --name=Myhello hello-world #后台运行
docker run -it --name=Myhello hello-world /bin/bash #进入命令行 执行bash命令

创建成功的样子娅:

image-20240507225026390

再来个交互式运行的:(事实证明就算没有library,没有image都是可以直接run的

image-20240507231332725

这里面的文件目录都是虚假的,点进去也没有内容的x 想退出的话就exit

image-20240507231508161

image-20240507231704804

1
2
3
4
5
#创建完之后当然是....删除掉啦!
docker stop 34d #暂停运行
docker kill 34d #杀掉一个在运行的进程
docker rm -f 34d #强制删除
docker rm $(docker ps -aq) -f #全部删除

image-20240507232112795

3.容器保存为镜像 (怎么说也不一定用得到

1
2
3
# docker commit 容器名 镜像名

docker commit mycentos3 mycentos3

4.镜像备份与迁移

1
2
3
# docker save -o 保存的文件名 镜像名
docker save -o ./mycentos3.tar mycentos3
docker load -i ./mycentos3.tar

docker搭建漏洞靶场

克隆Vulhub项目

1
2
3
4
5
6
7
git clone https://gitee.com/yijingsec/vulhub.git
cd vulhub-master
cd thinkphp/5.0.23-rce
# 开启靶场
docker-compose up -d
# 关闭靶场
docker-compose down

VulnaApps

1
https://gitee.com/yijingsec/VulApps

打开浏览器访问:https://gitee.com/yijingsec/VulApps

打开read.me 按照文档操作就好了

1
2
3
4
5
6
7
# 以启动thinkphp漏洞环境为例

docker pull medicean/vulapps:t_thinkphp_2

docker run -d -p 80:80 medicean/vulapps:t_thinkphp_2

# -p 80:80 前面的 80 代表物理机的端口,可随意指定;后面的 80 为docker容器中的web服务端口,默认端口80。

Vulfocus

安装:

1
2
3
4
5
6
git clone https://gitee.com/yijingsec/LinuxEnvConfig.git

cd LinuxEnvConfig

sudo bash LinuxEnvConfig.sh
docker run -d -p 88:80 --name vulfocus --restart always -v /var/run/docker.sock:/var/run/docker.sock -e VUL_IP=192.168.190.214 registry.cn-hangzhou.aliyuncs.com/mingy123/vulfocus:latest

image-20240507233706186

你的密码~

image-20240507233725729

1
2
admin
admin