官方推荐启动:
docker run -d \
--rm \
-h ${ctf_name} \
--name ${ctf_name} \
-v $(pwd)/${ctf_name}:/ctf/work \
-p 23946:23946 \
--cap-add=SYS_PTRACE \
skysider/pwndocker
拆解:
1.docker run -d: 后台运行容器,并返回容器ID;
2.执行docker run命令带--rm命令选项,等价于在容器退出后,执行docker rm -v;
3.docker rm -v:删除与容器关联的卷;
4.docker run -h "mars": 指定容器的hostname;
5.docker run --name="nginx-lb": 为容器指定一个名称;
6.docker run (--volume or -v): 绑定一个卷;
7.docker run -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
8.docker run --cap-add:Add Linux capabilities,添加权限的。
第二条辅助理解:
在Docker容器退出时,默认容器内部的文件系统仍然被保留,以方便调试并保留用户数据。
但是,对于foreground容器,由于其只是在开发调试过程中短期运行,其用户数据并无保留的必要,因而可以在容器启动时设置--rm选项,这样在容器退出时就能够自动清理容器内部的文件系统。
具体命令辅助理解:
-v $(pwd)/${ctf_name}:/ctf/work 是将当前目录下的文件映射到 docker /ctf/work目录下
这样你在物理机修改文件,docker里面也会发生变化,就不用再docker cp了
注:
docker container cp命令用于从正在运行的 Docker 容器里面,将文件拷贝到本机。
进入docker:
sudo docker exec -it 775c7c9ee1e1 /bin/bash
775c7c9ee1e1 是容器ID
非常好的docker教程推荐:
https://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html