Docker 常用命令

一、帮助启动类命令

  • 启动docker: systemctl start docker
  • 停止docker: systemctl stop docker
  • 重启docker: systemctl restart docker
  • 查看docker状态: systemctl status docker
  • 开机启动: systemctl enable docker
  • 查看docker概要信息: docker info
  • 查看docker总体帮助文档: docker --help
  • 查看docker命令帮助文档: docker 具体命令 --help

二、镜像命令

列出本地主机上的镜像:docker images
下载镜像:docker pull XXX镜像名字[:tag] 其中tag表示版本号,为空表示最新版本
查看容器、镜像、数据卷所占的空间:docker system df
删除镜像:docker rmi [-f] XXX镜像名字或ID 其中[-f]表示强制(force)删除
docker rmi -f $(docker images -qa) 表示删除全部镜像

三、容器命令

新建+启动容器:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

OPTIONS说明(常用): 有些是一个减号,有些是两个减号

--name="容器新名字"为容器指定一个名称;

-d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行);

-i: 以交互模式运行容器,通常与-t同时使用;

-t: 为容器重新分配一个伪输入终端,通常与-i同时使用;也即启动交互式容器(前台有伪终端,等待交互);

-P: 随机端口映射,大写PI

-p: 指定端口映射,小写p

例如新建mysql容器并启动交互:

Go 复制代码
docker run --name test -e MYSQL_ROOT_PASSWORD=1 -d mysql

//--name test 为容器指定一个名称(可替换test为自己喜欢的名称)。
//-e MYSQL_ROOT_PASSWORD=1 设置MySQL的root密码。你应该替换1为你的实际密码。
//-d 使容器在后台运行。
//mysql:latest 是要运行的MySQL镜像和标签(在这里是最新版本)


//以数据卷的形式,创建并启动mysql容器,容器内的mysql数据不会因为容器的删除而被删除
docker run --name m1 -e MYSQL_ROOT_PASSWORD=1 -v /root/mysqlData:/var/lib/mysql --privileged=true -p 3306:3306 -d mysql

//-v /root/mysqlData:/var/lib/mysql:将数据卷/root/mysqlData映射到容器的/var/lib/mysql目录
//-p 3306:3306:将容器的3306端口映射到主机的3306端口
//--privileged=true: 使容器内的root拥有真正的root权限,解决挂载目录没有权限的问题
列出当前所有正在运行的容器:docker ps [options]
Go 复制代码
docker ps [options]

//-a: 列出当前所有正在运行的容器+历史上运行过的
//-l: 显示最近创建的容器
//-n: 显示最近n个创建的容器
//-q: 静默模式,只显示容器编号
退出容器:exit 退出容器并停止

crt + p + q (快捷键)退出容器但并不停止容器

启动已停止的容器:docker start 容器名或容器ID
重启容器:docker restart 容器名或容器ID
停止容器:docker stop 容器名或容器ID
强制停止容器:docker kill 容器名或容器ID
删除已经停止的容器:docker rm 容器名或容器ID
Go 复制代码
//强制删除正在运行的容器
docker rm -f 容器名或ID

//删除所有容器
docker rm -f $(docker ps -a -q)
或者
docker ps -a -q | xargs docker rm
查看容器日志:docker logs 容器名或ID
查看容器内运行的进程:docker top 容器名或ID
查看容器内部细节:docker inspect 容器名或ID
进入正在运行的容器并以命令交互:docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

docker attach 容器ID

两者区别:attach 进入容器不启动新的进程,用exit退出时,会导致容器停止

exec 进入容器会启动新的进程,用exit退出时,不会停止容器

Go 复制代码
//启动mysql容器并进入命令交互
docker exec -it test mysql -u root -p

//Options:
//  -d, --detach               Detached mode: run command in the background
//      --detach-keys string   Override the key sequence for detaching a container
//  -e, --env list             Set environment variables
//      --env-file list        Read in a file of environment variables
//  -i, --interactive          Keep STDIN open even if not attached
//      --privileged           Give extended privileges to the command
//  -t, --tty                  Allocate a pseudo-TTY
//  -u, --user string          Username or UID (format: "<name|uid>[:<group|gid>]")
//  -w, --workdir string       Working directory inside the container
从容器内拷贝文件到主机上:docker cp 容器ID:容器内路径 目的主机路径
导出容器:docker export 镜像ID > 镜像名
导入容器:cat 文件名.tar | docker import -镜像用户/镜像名:镜像版本号
相关推荐
Sheffield4 小时前
Docker的跨主机服务与其对应的优缺点
linux·网络协议·docker
Sheffield12 小时前
Alpine是什么,为什么是Docker首选?
linux·docker·容器
马艳泽13 小时前
win10下运行Start Broker and Proxy报错解决
docker
舒一笑1 天前
程序员效率神器:一文掌握 tmux(服务器开发必备工具)
运维·后端·程序员
NineData1 天前
数据库管理工具NineData,一年进化成为数万+开发者的首选数据库工具?
运维·数据结构·数据库
用户13573999256601 天前
Windows 从 0 搭建 WSL2 原生 AI 开发环境:Codex + Docker + VSCode
docker
vi_h2 天前
在 macOS 上通过 Docker 安装并运行 Ollama(详细可执行教程)
macos·docker·ollama
黑心老魔2 天前
通过 Docker 创建开发环境
docker·开发环境
冬奇Lab2 天前
一天一个开源项目(第41篇):Workout.cool - 现代化开源健身教练平台,训练计划与进度追踪
docker·开源·资讯
梦想很大很大2 天前
拒绝“盲猜式”调优:在 Go Gin 项目中落地 OpenTelemetry 链路追踪
运维·后端·go