目录
查看 Docker 版本
查看 Docker 详细信息
1 2 3
| docker info
docker info |grep Root
|
镜像
查看本地镜像列表
1 2 3
| docker image ls
docker images
|
搜索悬虚镜像
1
| docker images -f dangling=true
|
根据 created 搜索
1
| docker images -f [since 或 before]=[镜像标识]
|
根据 repository 和 tag 模糊搜索
只能搜索 Docker 官方发布的镜像。
1
| docker images -f reference='*:22*'
|
搜索 Hub 中镜像
1
| docker search image_name
|
搜索 Docker 官方发布的镜像
1
| docker search image_name -f is-official=true
|
限制 stars 最小数搜索
1
| docker search mysql -f stars=100
|
拉取 Hub 中镜像
1
| docker pull ubuntu:22.04
|
移除本地镜像
1
| docker rmi ubuntu:latest
|
批量移除本地镜像
1
| docker rmi `docker images -aq`
|
批量移除悬虚镜像
注意有关联的容器,要先把容器删除。
1 2 3
| docker image prune
docker rmi $(docker images -q -f dangling=true)
|
导出镜像
1
| docker image save centos:latest > ~/temp/centos.tgz
|
导入镜像
1
| docker load -i ~/temp/centos.tgz
|
查看镜像详情
1
| docker image inspect centos:latest
|
查看镜像历史(分层)
给镜像重贴tag
相当于给原镜像复制一份。imageID不变。
1
| docker tag [原镜像名]:[原tag] [新镜像名]:[新tag]
|
容器
创建并运行容器
1
| docker run -it ubuntu bash
|
常用 options:
名称 |
解释 |
默认值 |
–detach , -d |
Run container in background and print container ID |
|
–device |
Add a host device to the container |
|
–env , -e |
Set environment variables |
|
–env-file |
Read in a file of environment variables |
|
–interactive , -i |
Keep STDIN open even if not attached |
|
–mount |
Attach a filesystem mount to the container |
|
–name |
Assign a name to the container |
|
–network |
Connect a container to a network |
|
–publish , -p |
Publish a container’s port(s) to the host |
|
–pull |
Pull image before running (always, missing, never) |
missing |
–rm |
Automatically remove the container when it exits |
|
–tty , -t |
Allocate a pseudo-TTY |
|
–volume , -v |
Bind mount a volume |
|
容器内的进程必须处于前台运行状态,否则容器就会直接退出。自己部署一个容器运行,命令不得后台运行,前台运行即可。
如果容器内什么事也没做,容器也会挂掉。容器内,必须有一个进场在前台运行。
同创建容器
1
| docker create -it ubuntu bash
|
查看 Docker 容器列表
还根据 image,状态,存储卷,归属网络,映射端口等条件过滤。参考
移除容器
批量删除容器
1
| docker rm `docker ps -aq`
|
启动容器
停止容器运行
优雅停止
有别的客户端正在使用该容器,则无法停止。
强制停止
批量停止
1
| docker stop `docker ps -aq`
|
容器重启
容器停止
容器停止这是停止容器的对外访问,不是停止整个容器。容器中运行的服务不会停止。和start, stop有本质区别。
1 2
| docker pause [容器标识] docker unpause [容器标识]
|
打印容器日志
1
| docker logs -f -t -n 20 my_centos
|
常用 options:
名称 |
解释 |
默认值 |
–follow , -f |
Follow log output |
|
–tail , -n |
Number of lines to show from the end of the logs |
all |
–timestamps , -t |
Show timestamps |
|
进入正在运行的容器空间内
1
| docker exec -it ping_baidu bash
|
查看容器详细信息
1
| docker container inspect ping_baidu
|
查看容器端口转发情况
提交容器
这一步操作相当于把容器打包成一个本地镜像。如果不指定新的 repository 和 tag,会生成悬虚镜像。
1
| docker commit -a "Tang Lijin <ho_ho_gl@hotmail.com>" -m "测试信息" my_nginx ljtang2009/centos-test-file:2023
|
常用 options:
名称 |
解释 |
-a, –author |
作者 |
-m, –message |
附加信息 |
对容器执行命令
exec 命令
exec 原理是在容器中创建一个新的进程,执行新的命令。所以执行命令结束后,容器不会停止。
1
| docker exec -it [容器标识] [命令,例如 /bin/bash ls]
|
attach 命令
attach 原理是在容器中附着一个标准输入输出流,不是执行新的命令。输入和输出都影响和出自容器的主进程 command(DockerFile 的 CMD 配置,或者创建容器时指定的命令)。
同一个容器 attach 出来的输入输出流都会输出同样信息。
例如在 ubuntu 容器中,DockerFile 的 CMD 是bash
, 主进程是运行 bash。
所以 attach 到该容器可以执行 bash 上的任何操作。
例如在 Tomcat 容器中,DockerFile 的 CMD 配置是CMD ["catalina.sh", "run"]
,主进程是执行启动 Tomcat,并输出启动日志。
所以 attach 到该容器不能执行任何操作(除了执行停止 Tomcat 服务的操作)。
查看容器正在运行的进程
top 命令可用于查看容器中的服务是否正常运行。
查看容器日志
Docker 会记录容器的主进程 command(DockerFile 的 CMD 配置,或者创建容器时指定的命令)执行的日志。
相当于 VSCode 终端里显示的日志。
常用 options:
名称 |
解释 |
–since |
查询日志最早的时间点,(e.g. 2013-01-02T13:23:37Z) or (e.g. 42m for 42 minutes) |
–until |
查询日志最晚的时间点,(e.g. 2013-01-02T13:23:37Z) or (e.g. 42m for 42 minutes) |
-t, –timestamps |
显示时间戳 |
-n, –tail |
显示条数 |
-f, –follow |
是否动态显示,即时显示日志 |
容器和宿主机文件互拷
1 2 3 4 5
| docker cp [容器标识]:[源文件地址] [目标文件地址]
docker cp [源文件地址] [容器标识]:[目标文件地址]
|
导出容器到 tar
1
| docker export -o [tar文件地址在宿主机中] [容器标识]
|
导入容器 tar 文件成镜像
不写 repository 和 tag 会生成悬虚镜像。
1
| docker import [tar文件地址在宿主机中] [repository:tag]
|
查看运行的容器占用的资源
系统
查询帮助:
查看磁盘使用情况
获取服务日志
获取实时事件
该命令类似于查看日志,可添加 –since、–until 可选项。
移除不使用的数据
将移除一下类型数据:
- all stopped containers
- all networks not used by at least one container
- all dangling images
- all dangling build cache
网络
查看所有网络
创建网络
1
| docker create -d [driver类型] [网络名]
|
创建容器指定bridge
1
| docker run --network [网络标识] [镜像标识]
|
指定容器和bridge网络链接
1
| docker network connect [网络标识] [容器标识]
|
创建容器指定和别的容器共享网卡
新创建的容器用inspect查不到网卡。
1
| docker run --network container:[容器标识] [镜像标识]
|