Docker基本命令

Docker run的运行流程

底层原理

C/S结构,守护进程运行在主机上,通过Socket从客户端来访问

Docker Server 接收到客户端(Docker-Client)的指令,就会去执行这个命令

Docker有着比虚拟机更少的抽象层,Docker利用的是宿主机的内核,VM则需要Guest OS

所以,新建一个容器时,docker不需要向虚拟机一样重新加载一个操作系统内核,避免引导

虚拟机是加载Guest OS 分钟级别,而docker则利用宿主机的操作系统,省略这个复杂的过程,秒级。

Docker的常用命令

复制代码
#帮助命令:
docker version      #显示docker的版本信息
docker info         #显示docker的详细信息
docker --help       #帮助命令

镜像命令

#image

docker images --help

docker images #查看所有本地的主机上的镜像

(-a #列出所有镜像;-q #只显示镜像的ID)

docker search 搜索镜像

docker search mysql/nginx/tomcat

(通过收藏数来过滤 --filter=STARTS=3000 搜索出来的镜像收藏数不小于3000)

docker pull 下载镜像

docker pull 镜像名 :tag(版本)

(不指定tag,就默认下载latest(最新版),分层下载,

bash 复制代码
docker pull mysql:5.7


docker remove images(等同于docker rmi)删除镜像

-f,全部删除

docker rmi 镜像ID #删除指定镜像

bash 复制代码
docker rmi -f $(docker images -aq)
#强制删除本地 Docker 环境中所有镜像(无论是否被容器引用),且只通过镜像 ID 精准删除。
#docker images -aq:只输出本地所有镜像的 ID(-a 是所有镜像,-q 是静默模式只显示 ID);
#$(...):把前面获取的所有镜像 ID 作为参数传给后面的命令;
#docker rmi -f:rmi 是删除镜像,-f 是强制删除(哪怕镜像被停止的容器引用也能删)

容器命令

有了镜像才可以创建容器
1.新建容器并启动

docker run [可选参数] images

#参数说明:

--name="Name" 容器名字,如tomcat01 tomcat02,用于区分容器

-d 后台方式运行

-it 交互方式运行

-p 指定容器的端口 8080:8080

①-p 主机端口:容器端口

②-p 容器端口

③-p ip 主机端口:容器端口ji

④容器端口

bash 复制代码
#基于 CentOS 镜像创建并启动一个交互式容器,直接进入容器的 bash 命令行终端
docker run -it centos /bin/bash
退出容器的两种方式
操作 效果 适用场景
输入 exit / 按 Ctrl+D 退出终端,容器停止运行 临时调试,用完就关
Ctrl+P+Q 退出终端,容器保持运行 想保留容器,后续再进入
bash 复制代码
# 重新进入
docker exec -it 容器ID /bin/bash

-P 随机指定端口

列出正在运行的容器

docker ps # -a 列出正在运行+历史运行过的容器;-n=? 显示最近创建的(n是个数)几个容器; -q 只显示容器的编号

删除容器

docker rm 容器ID #删除指定容器,不能删除正在运行的容器,强制(-f)

docker rm -f $(docker ps -aq) #删除所有的容器

docker ps -a -q | xargs docker rm #删除所有的容器

#xargs把管道传递过来的容器 ID "拆分" 成单个参数,逐个传给 docker rm(解决批量参数传递问题)

常用的其他命令

后台启动容器
bash 复制代码
#命令docker run -d 镜像名
docker run -d centos
#问题是docker ps时,发现centos停止了
#常见的坑,docker容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止。
#如nginx,容器启动后,发现自己没有提供服务就会立刻停止,就是没有程序了
查看日志
bash 复制代码
docker logs -tf --tail 10 容器ID
#-tf        显示日志
#--tail number 显示的日志条数
查看容器中的进程信息
bash 复制代码
docker top
查看镜像的元数据
bash 复制代码
docker inspect 容器ID
进入当前正在运行的容器
bash 复制代码
#容器通常以后台方式运行,需要进入容器,修改配置
docker exec -it 容器ID /bin/bash
#或docker attach 容器ID

docker exec #进入容器后开启一个新的终端,可以在里面操作

docker attach #进入容器正在执行的终端,不会启动新的进程

从容器内拷贝文件到主机上
bash 复制代码
docker cp 容器ID:容器内路径 目的主机路径
相关推荐
Albert Edison2 小时前
【ProtoBuf 语法详解】enum 类型
java·linux·服务器
05大叔2 小时前
Docker
运维·docker·容器
恒创科技HK2 小时前
海外服务器回国线路对比,带宽选择指南
运维·服务器
China_Yanhy2 小时前
运维日记 - 猛男的AI拓荒录:Fabric (GitHub: danielmiessler/fabric) —— 让 AI 回归 Unix 哲学的终端神器
运维·人工智能·fabric
senijusene2 小时前
TCP并发服务器与I/O多路复用(select)
服务器·网络协议·tcp/ip
i学长的猫2 小时前
PM2 管理 Cloudflared 隧道 Neo-mac 及后台运行
linux·编辑器·vim
记录无知岁月2 小时前
【Linux】bash脚本使用
linux·bash
GIOTTO情2 小时前
2026小红书投流新规下,基于Infoseek API的媒介投放自动化方案
java·linux·开发语言
FIT2CLOUD飞致云2 小时前
新增QQ频道与vLLM管理功能,1Panel v2.1.4版本发布
linux·服务器·ai·开源·1panel