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:容器内路径 目的主机路径
相关推荐
tedcloud1235 小时前
Wand-Enhancer 怎么搭建?开源 Wand 客户端增强与远程控制工具介绍
大数据·服务器·人工智能·开源·音视频
Emily156853598707 小时前
ABB CI867K01 3BSE043660R1
服务器·plc·dcs·abb·ci867k01·3bse043660r1·工控模块
考虑考虑7 小时前
docker compose环境变量替换
运维·后端·自动化运维
Java陈序员8 小时前
轻量运维面板!一款现代化的服务器控制面板工具!
运维·服务器·python·react.js·github
bosins8 小时前
WSL 迁移指南:如何将 Linux 环境完整复制到另一台电脑
linux·运维·服务器
IT利刃出鞘8 小时前
Docker Compose--安装WordPress--方法/示例
运维·docker·容器
企鹅的蚂蚁10 小时前
LubanCat RK3588 实时 Linux 开发(六):启用 gs_usb 驱动并完成 USB-CAN 收发
linux·rk3588·linux驱动·socketcan·gs_usb·usb-can
2601_9622998810 小时前
Linux执行Python脚本方法
linux·python·脚本·解释器·shebang
snow@li10 小时前
服务器运维:Linux命令速查手册(全景梳理)
linux·服务器·网络
handler0110 小时前
【Linux】线程与虚拟内存的底层世界
linux·运维·服务器·c++·线程·虚拟地址空间·共享内存