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 -镜像用户/镜像名:镜像版本号
相关推荐
是阿建吖!1 分钟前
【Linux】进程状态
linux·运维
明明跟你说过30 分钟前
Linux中的【tcpdump】:深入介绍与实战使用
linux·运维·测试工具·tcpdump
O&REO37 分钟前
单机部署kubernetes环境下Overleaf-基于MicroK8s的Overleaf应用部署指南
云原生·容器·kubernetes
运维小文2 小时前
K8S资源限制之LimitRange
云原生·容器·kubernetes·k8s资源限制
登云时刻2 小时前
Kubernetes集群外连接redis集群和使用redis-shake工具迁移数据(二)
redis·容器·kubernetes
Mr_Xuhhh2 小时前
重生之我在学环境变量
linux·运维·服务器·前端·chrome·算法
朝九晚五ฺ9 小时前
【Linux探索学习】第十四弹——进程优先级:深入理解操作系统中的进程优先级
linux·运维·学习
Kkooe10 小时前
GitLab|数据迁移
运维·服务器·git
wuxingge10 小时前
k8s1.30.0高可用集群部署
云原生·容器·kubernetes
久醉不在酒11 小时前
MySQL数据库运维及集群搭建
运维·数据库·mysql