Docker 包括三个基本概念:
镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
仓库(Repository):仓库可看着一个代码控制中心,用来保存镜像。
-
查看所有容器
sudo docker ps -a
查看运行容器sudo docker ps
-
启动容器
docker start <容器 ID>
-
停止容器
docker stop <容器 ID>
-
重启容器
docker restart <容器 ID>
-
进入容器中qemu :
docker attach <容器 ID>
-
删除容器
docker rm -f <容器 ID>
-
运行交互式容器
docker run -it ubuntu /bin/bash
参数说明:
-i: 交互式操作。
-t: 终端。
ubuntu: ubuntu 镜像。
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
要退出终端,直接输入 exit:
8.导出容器(导出容器快照到本地文件)
如果要导出本地某个容器,可以使用 docker export 命令。
docker export 1e560fca3906 > ubuntu.tar
9.进入已经启动的某个容器
docker exec -it <容器 ID> /bin/bash
10.docker可以将镜像导出tar文件
存储本地的ubuntu:latest镜像为文件ubuntu_latest.tar
命令:docker save
命令样例:docker save -o docker_io_ubuntu_latest.tar docker.io/ubuntu:latest
11.docker加载tar文件
sudo docker load --input /opt/images/test.tar
12.加载的docker可能会没有名称,这个时候我们要为docker镜像重命名
docker tag 镜像ID REPOSITORY:TAG
13.Docker启动(以启动pwndocker为例)
sudo docker run -d --rm -h ctftest --name ctftest -v /home/adworld:/ctf/work -p 23946:23946 --cap-add=SYS_PTRACE skysider/pwndocker:v1.0
–rm 参数 automatically clean up the container and remove the file system when the container exits , 此参数与 -d 不兼容(或者说同时使用没有意义),即只能自动清理foreground容器,不能自动清理detached容器
-h 指定容器的hostname
–name 为容器指定一个名称
-v 参数将/home/adworld文件夹映射到/ctf/work上面
-p 端口映射
进入docker
docker exec -it ctf /bin/bash