以创建sqli-labs靶场为例子记录一下docker的常用指令
1. 镜像
1.2 查找镜像
docker search sqli-labs
1.3 获取镜像
docker pull sqli-labs
1.4 登录/退出第三方仓库
docker login/logout [ 仓库地址 ]
1.5 推送镜像到仓库
docker push sqli-labs
1.6 查看本地所有镜像
docker images
1.7 删除本地镜像
docker rmi 镜像名/镜像ID
docker rmi acgpiano/sqli-labs
1.8 查看镜像详情
docker inspect 镜像名/镜像ID
1.9 打包本地镜像,使用压缩包完成迁移
docker save [ 镜像名 ] > [ 文件路径 ]
1.10 导入镜像压缩包
docker load < [ 文件路径 ]
2 容器
2.1 创建容器
docker create -p 3000:80 --name sqli-labs acgpiano/sqli-labs
- docker create命令用于创建一个新的镜像。
-
-p
参数告诉 Docker 如何在容器中映射端口 80到主机操作系统。我指定容器内的端口80映射到主机操作系统中的端口3000。这与Docker中的EXPOSE命令相对应,表示这个容器将响应于请求发送至主机操作系统中的端口3000。 -
--name
参数为容器指定了一个名字,这样一来,一旦容器的已经创建了。本例中的名称是 sqli-labs。 - 最后一个参数告诉Docker要使用哪个镜像作为新容器的模板。这个命令指定了acgpiano/sqli-labs镜像,这是docker build中使用的名称。
docker run [ 参数 ] [ 镜像名 or 镜像 id ] [ 命令 ]
run指令的相关参数如下:
选项 | 说明 |
-d | 后台运行容器, 并返回容器ID;不指定时, 启动后开始打印日志, Ctrl + C 退出命令同时会关闭容器 |
-i | 以交互模式运行容器, 通常与 -t 同时使用; |
-t | 为容器重新分配一个伪输入终端, 通常与 -i 同时使用 |
--name "sqli-labs" | 为容器指定一个别名, 不指定时随机生成 |
-h docker-anyesu | 设置容器的主机名, 默认随机生成 |
--dns 8.8.8.8 | 指定容器使用的 DNS 服务器, 默认和宿主机一致 |
-e docker_host=172.17.0.1 | 设置环境变量 |
--cpuset="0-2" or --cpuset="0,1,2" | 绑定容器到指定 CPU 运行 |
-m 100M | 设置容器使用内存最大值 |
--net bridge | 指定容器的网络连接类型, 支持 bridge / host / none / container 四种类型 |
--ip 172.18.0.13 | 为容器分配固定 ip ( 需要使用自定义网络 ) |
--expose 8081 --expose 8082 | 开放一个端口或一组端口, 会覆盖镜像设置中开放的端口 |
-p [宿主机端口]:[容器内端口] | 宿主机到容器的端口映射, 可指定宿主机的要监听的 ip, 默认为 0.0.0.0 |
-P | 注意是大写的, 宿主机随机指定一组可用的端口映射容器 expose 的所有端口 |
-v [宿主机目录路径]:[容器内目录路径] | 挂载宿主机的指定目录 ( 或文件 ) 到容器内的指定目录 ( 或文件 ) |
--add-host [主机名]:[ip] | 为容器 hosts 文件追加 host , 默认会在 hosts 文件最后追加内容:[主机名]:[容器ip]
|
--volumes-from [其他容器名] | 将其他容器的数据卷添加到此容器 |
--link [其他容器名]:[在该容器中的别名] | 添加链接到另一个容器, 在本容器 hosts 文件中加入关联容器的记录, 效果类似于 --add-host |
2.2 查看运行中的容器
docker ps
docker ps -a # -a 表示查看所有容器
2.3 开启/停止/重启容器
# 关闭容器(发送SIGTERM信号,做一些‘退出前工作‘,再发送SIGKILL信号)
docker stop sqli-labs
# 强制关闭容器(默认发送SIGKILL信号, 加-s参数可以发送其他信号)
docker kill sqli-labs
# 启动容器
docker start sqli-labs
# 重启容器
docker restart sqli-labs
2.4 删除容器
docker rm [容器名 / 容器id]
2.5 查看容器详情
docker inspect sqli-labs
2.6 查看容器中正在运行的进程
docker top sqli-labs