docker 基本操作
1.下载/卸载镜像[1]
-
拉取最新版本的 Nginx 镜像:
Bash
docker pull nginx
-
拉取 1.19 版本的 Nginx 镜像:
Bash
docker pull nginx:1.19
-
拉取某个特定摘要的 Nginx 镜像(通常用于确保拉取到完全一致的镜像):
docker pull nginx@sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
-
查看下载下来的镜像
┌──(root㉿kali)-[~] └─# docker images REPOSITORY TAG IMAGE ID CREATED SIZE alpine latest b0c9d60fc5e3 3 days ago 7.83MB sagikazarmark/dvwa latest e901498e651a 7 years ago 359MB
-
卸载pull下来的镜像
docker rmi [imageid/repository:tag]
2.运行/删除/创建容器[2]
-
临时创建容器,并进入交互shell[3][4][5]:
docker run --rm --privileged=true -it alpine
-
后台运行容器[6][7][8]
docker run --name twiki -d -p 7777:80 teamssix/twiki:main
-
查看正在运行的容器
docker ps
-
查看所有未被rm的容器,包括执行了docker stop的
docker ps -a
-
停止容器运行
docker stop <容器ID或名称>
向容器内的主进程发送一个 SIGTERM
信号,请求容器优雅地停止。
-
创建容器
docker create <镜像名>
给docker create提供的参数和给docker run时提供的参数相似
例:
┌──(root㉿kali)-[~] └─# docker create --name twiki2 -it -p 7778:80 teamssix/twiki:main d257900c1eea8effc9fdfecf844f36e0a5dca0c42c05569915f54989dfba1c5f
-
再次运行停止的容器/运行创建的容器
docker start <容器ID或名称>
-
删除停止的容器
docker rm <容器ID或名称>
-
强制删除未停止的/已经停止的容器
docker rm -f <容器ID或名称>
3.对已运行的容器的操作
-
进入正在运行的容器的交互shell
docker exec -it <容器ID> /bin/sh
这些镜像可以在docker hub中找到,国内最好使用代理上dockerhub ↩︎
优先从本地运行镜像,如果本地没有就pull ↩︎
-it -i (保持标准输入打开):标准输入 (STDIN) 是指程序接收用户输入的地方,通常是键盘。使用 -i 选项可以使容器的标准输入保持打开状态,这意味着你可以向容器输入命令。如果没有 -i,容器启动后就无法接收任何输入。;;; -t (分配一个伪终端): 伪终端 (pseudo-TTY,也称为 PTY) 是一种虚拟的终端设备,它模拟了真实的终端环境。使用 -t 选项可以为容器分配一个伪终端,这使得容器可以像在一个真实的终端中一样运行程序,并处理终端控制字符,例如: ↩︎
--rm表示运行玩之后自动删除镜像(自动运行一遍docker rm) ↩︎
以特权模式运行镜像(我正在学习docker逃逸所以开启了这个选项) ↩︎
设置镜像名 ↩︎
设置镜像端口80映射到物理机端口7777 ↩︎
与终端分离(后台运行) ↩︎