Docker 常用命令大全
目录
一、Docker
(一)Docker基础命令
(二)docker镜像命令
(三)docker容器命令
(四)docker运维命令
一、Docker
容器是一种虚拟化技术,容器是镜像实例化对象,就像Java编译后Class构造出的一个个实例对象,本文除了生硬命令大全,还会穿插一些个人对docker的理解。
什么是 Docker? - 知乎
(一)Docker基础命令
1.docker程序操作
(1)启动docker
systemctl start docker
(2)停止docker
systemctl stop docker
(3)重启docker
systemctl restart docker
(4)随服务启动而自启
systemctl enable docker
(5)查看运行状态
systemctl status docker
(6)查看docker版本号信息
docker info
docker version
2.docker帮助命令
使用场景:忘记docker命令参数有哪些
docker --help
docker pull --help
docker push --help
(二)docker镜像命令
1.查看镜像
使用场景:查看当前服务器中docker 镜像列表
docker images

2.搜索镜像
使用场景:查找可安装的镜像和版本
docker search 镜像名docker search chrome
镜像名、描述、关注star数量、是否官方

搜索+筛选条件
例如:筛选stars数量在大于50的镜像
docker search --filter=STARS=50 chrome

3.拉取镜像
使用场景:从docker hub或公司内部镜像hub,下载镜像到本地
docker pull 镜像名称:tag
备注:没有tag默认拉取最新,等同于 docker pull mysql:latest
4.运行镜像
使用场景:拉取一个mysql镜像,运行镜像容器
docker pull mysqldocker run -it -d --name testmysql -p 8081:8080 mysql:latest
参数说明
| 参数 | 说明 |
| -it | 与容器进行交互式启动 |
| -d | 可后台运行容器 |
| --name | 给运行的容器自定义命名 |
| -p | 端口映射 -p 宿主机端口:容器内端口 |
| --restart=always | 自启动容器 |
5.容器操作
(1)停止容器
docker stop 容器ID 或 容器名称
(2)启动容器
docker start 容器ID 或 容器名称
(3)重启容器
docker restart 容器ID 或 容器名称
(4)删除容器
docker rm -f 容器ID 或 容器名称
删除容器前,需要先停止容器,运行中的容器无法删除。
6.删除镜像
docker rmi -f 镜像ID/镜像名称
删除多个镜像
docker rmi -f 镜像ID/镜像名称 镜像ID/镜像名称 镜像ID/镜像名称
强制删除镜像
docker image rm 镜像ID/镜像名称
7.保存镜像
使用场景:想将本地镜像保存为tar压缩文件,方便用于镜像转移至其他机子上,并 加载这个保存的镜像。
docker save 镜像ID/镜像名称 -o 镜像保存位置路径
例如:保存mysql镜像到当前路径位置,文件名为:mysql-20230314.tar
docker save mysql -o ./mysql-20230314.tar
8.加载镜像
使用场景:保存的镜像文件,进行加载恢复(解压tar文件)
docker load -i ./mysql-20230314.tar
我们把解压的镜像 run下
docker run mysql-20230314
9.镜像标签 tag
使用场景:有时候,我们需要对一个已有的镜像进行分类或者版本迭代,相对已有的镜像进行打标签标注版本。
docker tag 源镜像名:原tag 新镜像名:新tag
例如:将mysql最新版,打tag为测试环境1.0.0
docker tag mysql:latest mysql:test-1.0.0
(三)docker容器命令
1.查看正在运行的容器
使用场景:
docker ps
2.查看所有容器(含已停止的容器)
docker ps -a
3.运行一个容器
docker run -it -d --name 容器名称 -p 宿主机端口号:容器端口号 镜像名:tag /bin/bash
例如: 拉取mysql镜像,并启动一个mysql 把它取别名为mysql-test 并交互式运行
docker pull mysql:7.5.0docker run -it -d --name mysql-test -p 8081:8080 mysql:7.5.0 /bin/bash
备注:宿主机 端口有时候可能被占用,需要查看端口占用 情况。
linux
netstat -untlp
mac
lsof -i tcp:8080
杀进程
kill -9 进程号
每个容器都是独立安全应用,并相互隔离,容器与宿主机端口建立绑定关系(容器端口映射),那么访问宿主机的该端口,就可以访问到对应容器。
4.端口映射
使用场景:拉取镜像,运行容器,设置容器端口和宿主机端口映射关系。
例如:
启动mysql镜像,容器命名为mysql-test 映射宿主机端口8081和容器端口8080,当 我们访问8081相当于访问到容器mysql-test
docker run -it -d --name mysql-test -p 8081:8080 mysql:latest /bin/bash

容器端口如果被其他容器占用,如何修改?
方式一:进入容器内,修改配置文件
docker exec -it 容器ID/容器名词词 /bin/bash
方式二:进入容器内
docker attach 容器ID/容器名称 /bin/bash
进入容器内部后退出容器内部
exit
(1)启动容器
docker start 容器ID/容器名称
(2)停止容器
docker stop 容器ID/容器名称
(3)重启容器
docker restart 容器ID/容器名称
(4)杀掉容器
docker kill 容器ID/容器名称
5.容器文件拷贝
使用场景:
容器内部拷出文件
docker cp 容器ID:容器内部路径 容器外部路径
容器外部拷入文件
docker cp 容器外部路径 容器ID:容器内部路径
6.查看容器日志
使用场景:
docker logs -f --tail=日志数量 容器ID/容器名称
docker logs -f --tail=10 ef4ccceb9b6b
docker logs --tail=10 ef4ccceb9b6b
7.容器数据挂载
使用场景:以防容器销毁删除,造成数据丢失,将容器内数据挂载到宿主机对应位置
-v 宿主机文件存放位置:容器内文件位置
如此操作,就将容器内指定文件 挂载 宿主机对应位置,-v可多次使用,即一个容器可同时挂载多个文件到宿主机上。
12.更换容器名称
使用场景:容器已启动,不想删除重启容器情况下进行容器重命名。
docker rename 容器ID 新容器名称
13.修改容器配置
使用场景:不想删除容器,又想让容器配置变更。
例如:
修改参数,设置开机启动。
docker update --restart=always 容器ID或容器名称
docker container update --restart=always 容器ID或容器名称
14.提交一个镜像
使用场景:在已有镜像基础上,做了一些修改,希望保存封装成一个新的镜像。
docker commit -m=”提交信息“ -a=”作者信息“ 容器ID/容器名称 提交后的新镜像名称:tag
15.dockerfile
(1)环境变量
在dockerfile中定义系统环境变量名和值,在项目代码中通过获取环境变量函数,来接收参数变量(获取系统环境变量名的值)
FROM python:3.7.4
MAINTAINER jack
ENV webhook_url=https://oapi.dingtalk.com/robot/send?access_token=xxx
ENV secret_token=xxx
ENV check_interval=60
ENV db_username=root
ENV db_password=abc123456
ENV db_host=127.0.0.1
ENV db_port=3306
ENV db_name=tonghuashun
COPY . /tonghuashun
workdir /tonghuashun
run pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
cmd ["python","main.py"]
run和cmd区别:
触发时机不同
RUN 在构建镜像时 即docker build
CMD 在运行容器时(打完镜像后运行容器时)即docker run
- 在Python项目代码中获取环境变量
import os
EN_DB_USERNAME=os.getenv("db_username")
EN_DB_PASSWORD=os.getenv("db_password")
EN_DB_HOST=os.getenv("db_host")
EN_DB_PORT=os.getenv("db_port")
EN_DB_NAME=os.getenv("db_name")
- 在NodeJS项目代码中,获取环境变量
process.env.NODE_ENV //获取对应环境变量的值
- 在Golang项目代码中,获取环境变量
package main
import ( "fmt" "os")
func main() { name := os.Getenv("NAME") fmt.Println("name is:", name)}
(2)docker run时传入环境变量参数
docker run -p 9000:9000 -e environment=dev -e cluster=0 -d me/app
(3)其他
FROM nginx:1.20.0
COPY nginx.conf /etc/nginx/nginx.conf
COPY dist/ /usr/share/nginx/html/
COPY replace.sh /
RUN chmod 777 /replace.sh
CMD ["/replace.sh"]
COPY 当前dockerfile目录 的文件名 nginx.conf、文件夹dist、文件replace.sh 复制到容器指定目录中。
RUN 在docker build时运行 (打镜像时)
CMD 在docker run时运行(运行容器时)
16.docker-compose
docker-compose.yml 文件分为三个主要部分:services、networks、volumes
- services:主要用来定义各个容器
- networks:定义需要使用到的network
- volumes:定义services使用到的volume 本地数据卷
参数说明
| 参数 | 说明 |
| version | 版本 |
| build | 使用当前目录下的Dockerfile进行构 |
| image | 指定运行容器使用的镜像 |
| container_name | 默认运行出来的容器名称 |
| command | 覆盖容器启动后默认执行的命令Dockerfile定义的CMD 注意:当Dockerfile定义了entrypoint的时候,docker-comose.yml定义的command会被覆盖 |
| enrtypoint | 执行命令行,可以覆盖Dockerfile中定义的entrypoint命令 |
| links | 链接到其它服务中的容器。 使用服务名称(同时作为别名)或服务名称:服务别名 (SERVICE:ALIAS) 格式都可以 例如: version: '3' services: order-service links: - user-service - pay-service - redis |
| external_links | 链接到 docker-compose.yml 外部的容器,参数格式跟 links 类似。 |
| prot | 暴露容器端口信息 |
| expose | 指定内部端口,但不映射到宿主机,只被连接的服务访问。 |
| enviroment | 定义的变量会覆盖.env文件中定义的重名环境变量。 |
| ports | 将容器的端口80映射到宿主机的端口8080 |
| volumes | 设置容器的数据卷路径 |
| networks | 容器使用的网络设置。 |
| depends_on |
基于云镜像
基于本地dockerfile
version: '3'
services:web:build:context: ./dockerfile: mydockerfile
完整示例:
version: '3.8'
networks:test_network:external: true
services:myapidemo:image: 1312958948/myapidemo:1.1container_name: myapidemobuild: .restart: alwaysports:- "9020:5000"volumes:- /root/apilogs/logs:/app/logsnetworks:- test_networknginxapi:image: nginxcontainer_name: nginxapirestart: alwaysports:- "80:80"- "443:443"volumes:- /root/nginx/www:/usr/share/nginx/html - /root/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf - /root/nginx/logs:/var/log/nginx - /root/nginx/certs:/etc/nginx/certs networks:- test_networkmysql:image: mysql:8.0container_name: mysqlrestart: alwaysports:- "3306:3306" volumes: - /var/lib/docker/volumes/mysqldata/_data:/var/lib/mysql39environment:MYSQL_ROOT_PASSWORD: Aa123456 MYSQL_DATABASE: MyTestTZ: Asia/Shanghainetworks:- test_network redistest:image: rediscontainer_name: redistestrestart: alwaysports:- "6379:6379"command: redis-server --requirepass 123456 networks:- test_network
(四)docker运维命令
1.查看docker工作目录
sudo docker info | grep ”Docker Root Dir“
2.查看docker磁盘占用总体情况
du -hs /var/lib/docker
3.查查看docker磁盘使用具体情况
docker system df
4.删除无用容器和镜像
(1)删除异常停止的容器
docker rm `docker ps -a | grep. Exited | awk '{print $1}'`
5.查找大文件
find / -type f -size +100M -print0 | xargs -0 du -h |sort -nr
6.查找指定docker使用目录下大于指定大小文件
例如:
这边查查查找到事‘/var/lib/docker/overlay2/*’开头且文件大小大于100MB的文件
find / -type f -size +100M -print0 | xargs -0 du -h |sort -nr | grep ‘/var/lib/docker/overlay2/*’
相关文章:
Docker 常用命令大全
目录 一、Docker (一)Docker基础命令 (二)docker镜像命令 (三)docker容器命令 (四)docker运维命令 一、Docker 容器是一种虚拟化技术,容器是镜像实例…...
React项目规范:目录结构、根目录别名、CSS重置、路由、redux、二次封装axios
React项目(一)一、创建项目二、目录结构三、craco配置别名并安装less1.craco安装2.配置别名3.安装less四、CSS样式重置五、配置路由六、配置Redux1.创建大仓库2.创建小仓库(1)方式1:RTK(2)方式2…...
SystemVerilog 教程第一章:简介
SystemVerilog 教程像 Verilog 和 VHDL 之类的硬件描述语言 (HDL) 主要用于描述硬件行为,以便将其转换为由组合门电路和时序元件组成的数字块。为了验证 HDL 中的硬件描述正确无误,就需要具有更多功能特性的面向对象的编程语言 (OOP) 来支持复杂的测试过…...
【Java|基础篇】逻辑控制-顺序结构、分支结构和循环结构
文章目录顺序结构分支结构if单分支语句if else双分支语句if else if else多分支语句switch语句循环语句for循环while循环do while循环continuebreak总结顺序结构 顺序结构是指代码按照从上往下的顺序依次执行 分支结构 选择语句是条件成立时,才会执行的语句.共有三种.分为是if…...
【数据挖掘实战】——家用电器用户行为分析及事件识别(BP神经网络)
项目地址:Datamining_project: 数据挖掘实战项目代码 目录 一、背景和挖掘目标 1、问题背景 2、原始数据 3、挖掘目标 二、分析方法与过程 1、初步分析 2、总体流程 第一步:数据抽取 第二步:探索分析 第三步:数据的预处…...
Kmeans聚类算法-python
import random import pandas as pd import numpy as np import matplotlib.pyplot as plt # 计算欧拉距离 def calcDis(dataSet, centroids, k): clalist[] for data in dataSet: diff np.tile(data, (k, 1)) - centroids #相减 (np.tile(a,(2,1))就是把…...
Linux|奇怪的知识|locate命令---文件管理小工具
前言: Linux的命令是非常多的,有一些冷门的命令,虽然很少用,但可能会有意想不到的功能,例如,本文将要介绍的locate命令。 (平常很少会想到使用此命令,find命令使用的更多,偶然想起…...
Cadence Allegro 导出Function Pin Report报告详解
⏪《上一篇》 🏡《上级目录》 ⏩《下一篇》 目录 1,概述2,Function Pin Reportt作用3,Function Pin Report示例4,Function Pin Report导出方法4.1,方法14.2,方法2B站关注“硬小二”浏览更多演示视频 1,概述...
蓝桥杯2018年第九题-缩位求和
题目:在电子计算机普及以前,人们经常用一个粗略的方法来验算四则运算是否正确。比如:248 * 15 3720把乘数和被乘数分别逐位求和,如果是多位数再逐位求和,直到是1位数,得2 4 8 14 > 1 4 5;1 5 65…...
基于Yolv5s的口罩检测
1.Yolov5算法原理和网络结构 YOLOv5按照网络深度和网络宽度的大小,可以分为YO-LOv5s、YOLOv5m、YOLOv5l、YOLOv5x。本文使用YOLOv5s,它的网络结构最为小巧,同时图像推理速度最快达0.007s。YO-LOv5的网络结构主要由四部分组成,分别…...
Linux基本命令
Linux基本命令Linux的目录结构Linux命令入门目录切换相关命令(cd/pwd)相对路径、绝对路径和特殊路径符创建目录命令(mkdir)文件操作命令part1 (touch、cat、more)文件操作命令part2 (cp、mv、rm)查找命令 (which、find…...
云原生场景下的安全左移
本博客地址:https://security.blog.csdn.net/article/details/129430859 一、安全左移概述 安全左移需要考虑开发安全、软件供应链安全、镜像仓库、配置核查这四个部分。 首先是开发安全,安全团队需要关注代码漏洞,比如使用代码检查工具进…...
mysql面试经典问题
文章目录 1. 能说下myisam 和 innodb的区别吗?2. 说下mysql的索引有哪些吧,聚簇和非聚簇索引又是什么?3. 那你知道什么是覆盖索引和回表吗?4. 锁的类型有哪些呢5. 你能说下事务的基本特性和隔离级别吗?6. 那ACID靠什么保证的呢?7. 那你说说什么是幻读,什么是MVCC?幻读什…...
微信小程序|基于小程序+C#制作一个考试答题小程序
基于小程序+C#制作一个考试答题小程序打破传统线下考试答题的边界线问题,使考试不用再局限与某个统一的场所,只要有设备,哪里都能考试。 一、小程序...
【1605. 给定行和列的和求可行矩阵】
来源:力扣(LeetCode) 描述: 给你两个非负整数数组 rowSum 和 colSum ,其中 rowSum[i] 是二维矩阵中第 i 行元素的和, colSum[j] 是第 j 列元素的和。换言之你不知道矩阵里的每个元素,但是你知…...
Linux命令之nano命令
一、nano命令简介 nano是一个小型、免费、友好的编辑器,旨在取代非免费Pine包中的默认编辑器Pico。nano不仅复制了Pico的外观,还实现了Pico中一些缺失(或默认禁用)的功能,例如“搜索和替换”和“转到行号和列号”。nan…...
IT项目管理(作业1)
一.单选题(共12题,100.0分) 1.以下哪项是项目的一个实例?( ) A、改进现有的业务流程或程序B、为公司运营提供信息技术支持C、批量生产一种新近开发出来的家用电冰箱D、管理一个公司 我的答案:A 2.下列哪项不能成为项目结束的理由?( ) A…...
蓝桥杯嵌入式(G4系列):串口收发
前言: 在整个蓝桥杯考试中涉及串口的次数还是较多,这里写下这篇博客,记录一下自己的学习过程。 STM32Cubemx配置: 首先,我们点击左侧的Connectivity选择USART1进行如下配置。 使能串口中断 在左侧的管脚配置上也要做出…...
「兔了个兔」玉兔踏青,纯CSS实现瑞兔日历(附源码)
💂作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后…...
第17章 关于局部波动率的一些总结
这学期会时不时更新一下伊曼纽尔德曼(Emanuel Derman) 教授与迈克尔B.米勒(Michael B. Miller)的《The Volatility Smile》这本书,本意是协助导师课程需要,发在这里有意的朋友们可以学习一下,思…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...
uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...
Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么?它的作用是什么? Spring框架的核心容器是IoC(控制反转)容器。它的主要作用是管理对…...
