惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog
V
Vulnerabilities – Threatpost
Apple Machine Learning Research
Apple Machine Learning Research
V
V2EX
博客园 - 叶小钗
阮一峰的网络日志
阮一峰的网络日志
人人都是产品经理
人人都是产品经理
Latest news
Latest news
博客园 - 三生石上(FineUI控件)
美团技术团队
aimingoo的专栏
aimingoo的专栏
Google Online Security Blog
Google Online Security Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
T
Threatpost
Y
Y Combinator Blog
T
Tailwind CSS Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
A
Arctic Wolf
C
Cyber Attacks, Cyber Crime and Cyber Security
小众软件
小众软件
Recent Commits to openclaw:main
Recent Commits to openclaw:main
T
Tenable Blog
W
WeLiveSecurity
L
LINUX DO - 热门话题
D
Docker
Cyberwarzone
Cyberwarzone
量子位
A
About on SuperTechFans
The Last Watchdog
The Last Watchdog
雷峰网
雷峰网
C
CERT Recently Published Vulnerability Notes
P
Palo Alto Networks Blog
The Hacker News
The Hacker News
Blog — PlanetScale
Blog — PlanetScale
P
Proofpoint News Feed
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
F
Full Disclosure
The Cloudflare Blog
T
The Blog of Author Tim Ferriss
T
The Exploit Database - CXSecurity.com
Engineering at Meta
Engineering at Meta
O
OpenAI News
Hacker News - Newest:
Hacker News - Newest: "LLM"
Scott Helme
Scott Helme
IT之家
IT之家
S
Secure Thoughts
MongoDB | Blog
MongoDB | Blog
L
Lohrmann on Cybersecurity
博客园 - 司徒正美
Google DeepMind News
Google DeepMind News

博客园 - xiashengwang

Rocky Linux 9 安装docker Rocky Linux 9 与Centos区别,以及软件安装dnf命令 《Linux 基础点滴》:(17)SSH 密钥生成与管理 – 免密登录的利器 Linux服务器安全登录:从入门到实践 putty 基础 《Linux 基础点滴》:(16)firewalld 防火墙管理命令 《Linux 基础点滴》:(15)用户管理 – 创建、删除、权限与 sudo 《Linux 基础点滴》:(14)定时任务 – 用 crontab 自动化 《Linux 基础点滴》:(13)文本编辑入门 – 使用 Vim 《Linux 基础点滴》:(12)tldr – 简化版命令手册 《Linux 基础点滴》:(11)系统信息与资源监控 – 掌握服务器状态 《Linux 基础点滴》:(10)压缩与打包 – tar 的艺术 《Linux 基础点滴》:(9)查找与过滤 – find, grep, 管道 《Linux 基础点滴》:(8)网络基础 – 查看 IP、连通性与端口 《Linux 基础点滴》:(7)进程管理 – 查看与控制运行中的程序 《Linux 基础点滴》:(6)文件权限与所有者 – 保护你的文件 《Linux 基础点滴》:(5)文件与目录操作 – 增删改查必会命令 《Linux 基础点滴》:(4)磁盘空间查看 – df 和 du 的妙用 《Linux 基础点滴》:(3)Linux 文件系统概览 – 一切皆文件 《Linux 基础点滴》:(2)SSH 连接与基础命令 – 从登录到第一次操作 《Linux 基础点滴》:(1)初识 Linux 大家族 – 发行版分类与选择 docker学习(7)-docker compose 文件 docker学习(11)- 容器的日志(log) docker学习(10)-利用Github Action 自动化部署 docker学习(9)-Docker Swarm + Nginx 跨机器负载均衡 docker学习(8)-从 Windows 开发到 Linux 部署 docker学习(6)-数据持久化与网络通信 学会 Git Tag,让版本管理不再混乱 docker学习(5)-Dockerfile docker学习(3)-一个简单的例子 docker学习(2)-安装 docker学习(1)-基本概念 Github 使用 Self-hosted Runner 实现服务器自动化部署 github创建分支 + Pull Request 合并 Git Rebase vs Git Merge:深入理解与实战选择 Git 系统学习教程:从零到团队协作 AI学习笔记(2)-OpenClaw安装 windbg分析dmp文件 docker desktop 和 Vmware冲突的解决办法
docker学习(4)-Docker常用命令
xiashengwang · 2026-04-15 · via 博客园 - xiashengwang

核心任务:

  1. 镜像操作(拉取、查看、删除、打标签)
  2. 容器生命周期(创建、运行、停止、启动、删除)
  3. 容器交互与日志(进入容器、查看输出)
  4. 资源清理与查看
  5. 简单数据卷和网络体验

1、镜像操作

1.1 拉取镜像
标准镜像的名字和TAG名可以在https://hub.docker.com/查询到。
image

如果不带TAG,那么默认会用TAGlatest,比如下面的docker pull alpine,实际是:docker pull alpine:latest

docker pull nginx:1.28
docker pull alpine

image

1.2 查看本地docker镜像
docker images
image

1.3 给镜像打标签
nginx 镜像打一个新标签,例如 my-nginx:v1
docker tag nginx:1.28 my-nginx:v1

docker tag nginx:latest   my-nginx:v1
          源镜像         新镜像名:新标签

docker images查看下:
可以发现,新生成的my-nginx:v1nginx:1.28ID相同,这是docker节省硬盘空间的机制,相同的Layer内容只会存一份。
image

1.4 删除镜像
删除刚才创建的标签镜像(只是删除标签,不影响原镜像):
docker rmi my-nginx:v1

2、容器的生命周期

2.1 运行一个简单的容器(前台运行)
docker run hello-world
这个命令会拉取 hello-world 镜像(如果本地没有),并运行一个临时容器,打印一段欢迎文字后自动退出。
image

2.2 运行一个 Nginx 容器(后台运行,端口映射)
docker run -d --name my-nginx -p 8080:80 nginx:1.28
image

  • -d:后台运行。
  • --name my-nginx:给容器起名。
  • -p 8080:80:将主机的 8080 端口映射到容器的 80 端口。
    验证: 打开浏览器访问 http://localhost:8080 ,应该能看到 Nginx 欢迎页面。

2.3 查看运行中的容器
docker ps
image
状态是up,代表在运行之中。

2.4 查看所有容器(包括已停止的)
docker ps -a
image
这会显示所有容器,包括之前运行过的 hello-world 容器(已退出)。

2.5 停止容器
docker stop my-nginx
image
注意: docker stop 容器名字 或 ID,这里ID是模糊匹配,容器名字必须写全名才能匹配。

2.6 启动已停止的容器
docker start my-nginx

2.7 重启容器
docker restart my-nginx
相当于 stop + start
用于,服务莫名卡死,或者修改配置文件后需要重启服务等场景。

2.7 重启容器
先停止容器(如果还在运行):
docker stop my-nginx
docker rm my-nginx
也可以加一个-f,强制删除运行中的容器。
docker rm my-nginx -f

3、容器交互与日志

3.1 运行一个交互式容器(Ubuntu)
docker run -it --name my-ubuntu ubuntu bash

3.2 查看容器日志
先启动一个后台 Nginx 容器:
docker run -d --name log-test nginx:1.28

查看该容器的日志:
docker logs log-test
image
默认输出 Nginx 启动日志。实时跟踪日志(类似 tail -f):
docker logs -f log-test
image
Ctrl + C 退出跟踪。

3.3 进入一个运行中的容器(exec)
确保 log-test 容器正在运行(如果停止了就 docker start log-test),然后执行:
docker exec -it log-test bash
image

可以看到nginx容器使用的是debian系统,各种linux命令都是通用的。
image

这里可以看到,exec执行的bash命令PID是26,而PID为1的主进程是nginx的守护进程。也就是说nginx这个镜像启动后,主进程是nginx,一个容器干一件事,需要查看里面的目录和文件,需要用exex bash的方式进来查看,初始化不是ubuntu镜像那样是直接交互的bash。
image

3.4 查看容器详情
docker inspect log-test
输出一个 JSON 格式的详细信息,包括网络、挂载、配置等。
image

4、资源清理与系统管理

4.1 查看 Docker 占用的磁盘空间
docker system df
df = disk free
image

4.2 清理未使用的资源
谨慎操作:删除所有停止的容器、未使用的网络、悬挂的镜像(dangling images):
docker system prune
输入 y 确认。如果要删除未使用的卷(可能会丢失数据),加上 --volumes 参数。
image

4.3 删除特定容器和镜像
docker container prune
image

5、简单数据卷体验

5.1 创建一个数据卷
docker volume create my-vol

5.2 查看所有卷
docker volume ls
image

5.3 运行一个容器,挂载该卷
docker run -d --name vol-test -v my-vol:/data alpine tail -f /dev/null

  • -v my-vol:/data:将卷 my-vol 挂载到容器的 /data 目录。
  • tail -f /dev/null:让容器保持运行(因为没有交互式进程)

5.4 在容器内写入数据
docker exec -it vol-test sh
image
在容器内执行:

echo "Hello Docker" > /data/test.txt
exit

image

5.5 停止并删除容器

docker stop vol-test
docker rm vol-test

5.6 创建新容器,挂载同一个卷,验证数据

docker run -it --rm -v my-vol:/data alpine cat /data/test.txt
  • --rm:容器退出后自动删除。
  • 应该输出 Hello Docker,说明数据持久化了。
    image

5.7 清理卷

docker volume rm my-vol

6、简单网络体验

6.1 查看 Docker 网络

docker network ls

你会看到 bridge、host、none 等默认网络。
image

6.2 创建自定义桥接网络

docker network create my-net

6.3 运行两个容器,连接到自定义网络

docker run -d --name c1 --network my-net alpine tail -f /dev/null
docker run -d --name c2 --network my-net alpine tail -f /dev/null

6.4 测试容器间通信
进入 c1,尝试 ping c2:

docker exec -it c1 sh

在容器内执行:

ping c2

按 Ctrl + C 停止 ping,你会看到成功通信(因为自定义网络提供了 DNS 解析)。
image

6.5 断开与网络的连接
进入 c1,尝试 ping c2:

docker network disconnect my-net c1

image

6.6 清理
进入 c1,尝试 ping c2:

docker stop c1 c2
docker rm c1 c2
docker network rm my-net

7、查看容器占用资源

7.1 查看内存占用情况

# 查看全部容器
docker stats --no-stream

# 查看某一个容器
docker stats --no-stream 容器名和容器ID

image
7.2 查看Docker硬盘占用情况

docker system df

image