0x00
Docker使用hyper-v,所以在使用docker的时候无法使用类似vmware的虚拟机设备
管理员权限下的cmd使用bcdedit /set hypervisorlaunchtype off关闭hyper-v
使用bcdedit /set hypervisorlaunchtype auto开启
0x01
什么是docker
在我的理解下docker就属于一种可以快速部署的环境
docker镜像就是我们使用的环境镜像文件
docker容器则是我们基于这个镜像生成的一个运行状态
多个容器可以基于同一个镜像,有点类似虚拟机中多个快照同时基于一个镜像运行
但是docker所占用的资源远远小于虚拟机,在各种项目中复杂的环境变量等问题都可以用docker解决,甚至像VulApps和vulhub这种用docker搭建漏洞复现环境
0x03 常用命令
搜索镜像
docker search image_name
搜索结果过滤:
是否是官方:
docker search –filter “is-official=true” image_name
是否是自动化构建
docker search –filter “is-automated=true” image_name
大于多少颗星
docker search –filter stars=3 image_name
拉取镜像
docker pull image_name
本地镜像的查看
docker images
本地镜像的删除
docker rmi image_name
###创建容器
docker run -itd –name=container_name image_name
-i 表示以交互模式运行容器;
-d 表示后台运行容器,并返回容器ID;
-t 为容器重新分配一个伪输入终端;
–name 为容器指定名称
查看容器(运行中的)
docker ps (-a)
停止容器
docker stop container_name/container_id
启动容器
docker start container_name/container_id
重启容器
docker restart container_name/container_id
删除容器
docker rm container_name/container_id
容器的修改及保存
进入容器
docker exec -it container_name/container_id /bin/bash
退出容器
exit
提交修改
docker commit -a “author” -m “message” container_name/container_id new_image_name:tag_name
-a:参数可选,用于指定作者,可以写你的名字
-m:参数可选,提交信息,可以说一下你做了哪些修改
container_id:该参数为被修改的容器ID
new_image_name:此为新镜像的名字,可自定义
tag_name:此为新镜像的标签,可不写,不写时标签默认为latest
端口映射
docker run -itd -p 宿主机端口号:容器端口号
文件挂载
docker run -itd -v /宿主机/文件目录:/容器/目录
将容器的文件复制到本地
docker cp 容器名:/容器目录/文件名 /宿主机目录/文件名
将本地的文件复制到容器
docker cp /宿主机目录/文件名 容器名:/容器目录/文件名
容器互联
docker run -itd –link 要关联的容器名字:容器在被关联的容器中的别名
容器的本地导出/入
docker save/export xxx > xxx.tar
docker load < xxx.tar
save 命令导出的是镜像,而export导出的是容器