Docker常用操作

0x00

Windows版Docker获取

Docker使用hyper-v,所以在使用docker的时候无法使用类似vmware的虚拟机设备

管理员权限下的cmd使用bcdedit /set hypervisorlaunchtype off关闭hyper-v

使用bcdedit /set hypervisorlaunchtype auto开启

0x01

什么是docker

在我的理解下docker就属于一种可以快速部署的环境

docker镜像就是我们使用的环境镜像文件

docker容器则是我们基于这个镜像生成的一个运行状态

多个容器可以基于同一个镜像,有点类似虚拟机中多个快照同时基于一个镜像运行

但是docker所占用的资源远远小于虚拟机,在各种项目中复杂的环境变量等问题都可以用docker解决,甚至像VulAppsvulhub这种用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

import

save 命令导出的是镜像,而export导出的是容器