docker常用命令

Docker 是一个轻量级的容器化工具 ,能把应用 + 依赖库 + 配置 打包成一个独立 "集装箱"(容器),在任何 Linux/Windows 上一模一样地运行,解决 "我电脑上能跑、服务器上不行" 的问题。

Docker 是 C/S 架构:即后台跑一个 **Docker 服务端,**守护进程 = 后台默默一直运行的服务程序

Docker 三要素

  1. **镜像(Image)**只读模板,相当于 "安装包 / 系统盘"。
  2. **容器(Container)**镜像运行起来的实例,相当于 "正在运行的系统 / 程序"。
  3. **仓库(Repository)**存放、下载镜像的地方(如 Docker Hub)。

Docker 会打包什么

打包一个应用能独立运行所需的一切

  • 应用代码、可执行程序
  • 运行依赖库、环境(Python/Java/Node/CUDA 等)
  • 系统配置、环境变量
  • 必要的系统文件(最小化 Linux 环境)

Docker 为什么比虚拟机快

VM 是虚拟一整台电脑;Docker 只虚拟一个运行环境,共用宿主机的 Linux 内核,不虚拟硬件,不跑完整系统,只是隔离进程、文件、网络---秒级启动,内存占用极低

windows安装docker

首先必须启用 WSL 2, 然后下载 Desktop:Docker Desktop: The #1 Containerization Tool for Developers | Docker

安装完成 → 重启电脑 →PowerShell输入docker --version验证是否安装成功

Linux安装docker

curl -fsSL https://get.docker.com -o get-docker.sh #下载 Docker 官方自动安装脚本

sudo sh get-docker.sh #用管理员权限运行安装脚本

sudo usermod -aG docker $USER #把当前用户加入 docker 组(免 sudo)

常用命令

docker --help #类似于linux的man,帮助命令

docker run --rm xxxname#运行一个容器+运行完自动删除容器+镜像名字

  • 先找本地有没有
  • 本地没有 → 自动去云端(Docker Hub)下载
  • 下载完 → 自动运行

镜像相关

docker images# 查看本地所有镜像

docker images -aq #显示所有镜像(包括中间层缓存镜像),只显示镜像 ID

docker images --no-trunc #显示完整镜像 ID(不截断)

docker images -f "dangling=true" #-f过滤镜像

docker pull 镜像名# 只下载镜像,不运行

docker rmi 镜像ID/名 # 删除本地镜像

docker rmi $(docker images -f "dangling=true" -q) #批量删除虚悬镜像,拉取新版镜像时,旧版被顶替,就是虚悬镜像

docker search 关键词 # 在Docker Hub搜索镜像 Docker Hub Container Image Library | App Containerization

docker build -t my-python-app:v1 .#构建自己的镜像(会自动找Dockerfile)

容器命令

docker run -d xxx#后台运行容器(守护式)

docker run -it xxx #交互式终端(进入容器内部敲命令,会分配伪终端)

docker run -p 8080:80 xxx #端口映射(宿主机端口:容器端口),让外部能访问容器

docker run --name mynginx xxx #给容器起名字

docker run -e MYSQL_ROOT_PASSWORD=123456 mysql #设置环境变量

docker ps #查看有几个容器在运行

exit#退出当前容器,容器会停止运行

先按 Ctrl + P,松开再按 Ctrl + Q #后台退出(容器继续跑)

docker exec -it 容器名/ID bash#进入正在运行的容器,打开容器内部的命令行
docker start xxx #启动一个已经存在、但停止了的旧容器

docker restart xxx#重启

docker stop xxx#停止一个容器 kill是强制停止

docker rm xxx #删除容器,如果容器在运行,会提示,需要的话加-f

docker system prune # 清理无用镜像、容器、缓存
**docker commit #**把一个正在修改过的容器,打包成一个新的镜像

docker commit 容器ID或名字 新镜像名字:版本号

commit 会把容器当前所有内容打包进去,不会包含挂载的目录(-v 挂载的内容不会进镜像)

服务管理

systemctl start docker # 启动Docker服务

systemctl stop docker # 停止Docker服务

systemctl restart docker # 重启Docker

systemctl enable docker # 开机自启

systemctl status docker # 查看Docker状态

docker logs 容器ID # 查看容器日志

docker inspect 容器/镜像 # 查看详细信息

容器数据卷

容器数据卷 = 容器与宿主机之间的 "共享文件夹",用来让数据持久化、不丢失。

容器删了 → 里面的数据也一起删了

但像 MySQL、Redis、你的业务文件,不能丢 。所以要用 数据卷 把数据保存在宿主机上,跟容器生命周期分开。

docker run -v /宿主机目录:/容器目录 镜像名

上述命令让宿主机的某个目录 → 直接映射到容器内部

Dockerfile

Dockerfile 就是一个 "构建镜像的脚本 / 说明书",Docker 按照这份说明书,自动构建出一个镜像

相关推荐
Avan_菜菜8 小时前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
程序员老赵9 小时前
10 分钟部署 OpenCode:Docker 一键安装,浏览器打开就能用 AI 写代码(附完整命令与排错)
docker·容器·ai编程
WangMingHua11113 小时前
LM Studio Docker 部署——本地大模型一键启动
docker
SelectDB1 天前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
曲幽2 天前
别再用网页翻译看源码了!你的私人翻译神器LibreTranslate,部署避坑指南来了
python·docker·web·pot·translate·libretranslate·arogstranslate
XIAOHEZIcode3 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户0328472220703 天前
如何搭建本地yum源(上)
运维
武子康3 天前
调查研究-183 Apple container:Mac 上用轻量 VM 跑 Linux 容器,Swift 会改写本地容器体验吗?
docker·容器·apple
大树886 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠6 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql