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:容器内路径 目的主机路径
相关推荐
Lsetea13 小时前
curl指定CA目录仍报证书不受信任:--capath与OpenSSL rehash排查
运维·https·ssl·openssl·curl
夜听莺儿鸣13 小时前
502-002_Linux驱动开发模块化编程
linux·驱动开发·模块化编程
wuminyu14 小时前
C++协程实现接收端的零拷贝Buffer管理原理剖析
java·linux·c语言·jvm·c++
优化Henry14 小时前
LTE 载波频率与频点配置详解
运维·网络·学习·5g·信息与通信
代码方舟14 小时前
数据科学风控实战:基于天远全能消金报告构建自动化信用评估网关
运维·人工智能·自动化
科力锐品牌君14 小时前
应用级灾备 | 海量非结构化数据如何实现高效数据保护
linux·运维·网络·安全·系统安全·数据安全·灾备
KaiwuDB14 小时前
KaiwuDB 运维实战04:DRBD + KaiwuDB——物联网场景下的低成本数据库高可用方案
运维·数据库·物联网·时序数据库·kaiwudb·aiot·多模数据库
zhangrelay15 小时前
ROS项目设计案例智能大模型正经乱答案例
linux·笔记·学习·ubuntu·机器人
福建佰胜张工15 小时前
A5E00839230西门子工业核心配件详解:参数、安装调试与故障运维全攻略
运维·网络·安全·自动化
流浪00115 小时前
Linux系统篇39——线程(四) pthread库的由来和线程的创建与等待
linux·操作系统·线程·pthread库