




















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

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

1.2 查看本地docker镜像
docker images

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:v1和nginx:1.28ID相同,这是docker节省硬盘空间的机制,相同的Layer内容只会存一份。

1.4 删除镜像
删除刚才创建的标签镜像(只是删除标签,不影响原镜像):
docker rmi my-nginx:v1
2.1 运行一个简单的容器(前台运行)
docker run hello-world
这个命令会拉取 hello-world 镜像(如果本地没有),并运行一个临时容器,打印一段欢迎文字后自动退出。

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

2.3 查看运行中的容器
docker ps

状态是up,代表在运行之中。
2.4 查看所有容器(包括已停止的)
docker ps -a

这会显示所有容器,包括之前运行过的 hello-world 容器(已退出)。
2.5 停止容器
docker stop my-nginx

注意: 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.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

默认输出 Nginx 启动日志。实时跟踪日志(类似 tail -f):
docker logs -f log-test

按 Ctrl + C 退出跟踪。
3.3 进入一个运行中的容器(exec)
确保 log-test 容器正在运行(如果停止了就 docker start log-test),然后执行:
docker exec -it log-test bash

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

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

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

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

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

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

5.1 创建一个数据卷
docker volume create my-vol
5.2 查看所有卷
docker volume ls

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

在容器内执行:
echo "Hello Docker" > /data/test.txt
exit

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

5.7 清理卷
docker volume rm my-vol
6.1 查看 Docker 网络
docker network ls
你会看到 bridge、host、none 等默认网络。

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 解析)。

6.5 断开与网络的连接
进入 c1,尝试 ping c2:
docker network disconnect my-net c1

6.6 清理
进入 c1,尝试 ping c2:
docker stop c1 c2
docker rm c1 c2
docker network rm my-net
7.1 查看内存占用情况
# 查看全部容器
docker stats --no-stream
# 查看某一个容器
docker stats --no-stream 容器名和容器ID

7.2 查看Docker硬盘占用情况
docker system df

此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。