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:容器内路径 目的主机路径
相关推荐
AOwhisky1 小时前
Linux(CentOS)系统管理入门笔记(第二十一期)——防火墙管理(Firewalld)——zone、服务端口、富规则与端口转发
linux·运维·笔记·安全·centos·防火墙
腾飞开源1 小时前
01_K8s干货笔记之认识K8s
运维·笔记·云原生·容器·kubernetes·k8s·容器化部署
tg_xianheyun7 小时前
CDN节点分布如何影响网页加载速度和用户体验
服务器·cdn加速·全球访问优化
lsh曙光8 小时前
延时at指令和定时cron指令
linux·服务器·网络
圆山猫8 小时前
[Virtualization](四):Linux KVM/RISC-V 的 vCPU 运行路径
java·linux·risc-v
布鲁飞丝8 小时前
vivo Pulsar 万亿级消息处理实践()-Ansible运维部署
运维·ansible
XR1234567888 小时前
企业全光网络架构选型技术白皮书:从物理层到运维层的全链路分析
运维·网络·架构
似的8358 小时前
一步一步学习使用FireMonkey动画() 使用TAnimator类创建动画
linux·学习·nginx
HiDev_9 小时前
【非标自动化】2、认识元器件(直线模组)
运维·自动化
夏殇之殁10 小时前
包中创建自定义列表项。 . 使用自定义列表项进行数据绑定 . 将天气预报数据保存到本地内存表,通过LiveBindings进行显示。 ...
服务器·前端·javascript