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 按照这份说明书,自动构建出一个镜像

相关推荐
無名路人2 小时前
Zsh 脚本 + VS Code 任务:NestJS + Vue3 一键部署到 1Panel
运维·后端·自动化运维
我叫张小白。2 小时前
Dify系列(一):平台安装部署+界面操作
docker·ai·语言模型·大模型·dify·智能体
anarckk2 小时前
docker volume 导入导出命令
运维·docker·容器
信创DevOps先锋2 小时前
Gitee:中国开发者生态的数字化转型基石与创新加速器
运维·gitee·devops
Brandon汐2 小时前
从0开始搭建一主两节点k8s集群对接Ceph集群
ceph·容器·kubernetes
Crazy CodeCrafter2 小时前
房租年年涨,客流年年少,服装店还要开吗?
大数据·运维·微信·自动化·开源软件
淼淼爱喝水2 小时前
Ansible 配置与环境搭建超全教程(自动化运维基础)
运维·自动化·ansible
杨浦老苏3 小时前
音乐和有声读物播放器AudioDock
docker·群晖·多媒体·音乐·有声读物