在工作中常用的docker 命令,建议收藏

镜像相关命令

docker images 或 docker image ls:列出本地的所有镜像。

docker pull <image>:从Docker Hub或其他注册表拉取镜像。

docker build -t <tag> .:构建一个新的镜像。

构建一个名为 myimage 的镜像,标签为 latest,使用当前目录下的 Dockerfile:

docker build -t myimage:latest . 记得带上 .

构建镜像并指定 Dockerfile 的位置:

docker build -t myimage:latest -f /path/to/Dockerfile .

构建镜像时传递构建参数:

docker build -t myimage:latest --build-arg MY_VAR=myvalue .

不使用缓存构建镜像

docker build --no-cache -t myimage:latest .

从远程 Git 仓库构建镜像:

docker build -t myimage:latest https://github.com/user/repo.git

从标准输入读取 Dockerfile 内容构建镜像:

cat Dockerfile | docker build -t myimage:latest -

docker rmi <image>:删除一个镜像。

docker save <image>:将镜像保存为tar文件。

docker load:从tar文件加载镜像。

容器相关命令

docker ps 或 docker container ls:列出所有正在运行的容器。

docker ps -a 或 docker container ls -a:列出所有容器(包括停止的)。

docker run <image>:创建并运行一个新的容器。

docker exec <container> <command>:在运行中的容器内执行命令。

docker exec 命令选项

选项 (OPTIONS):

  • -d:在后台运行命令。

  • -i:即使没有附加到终端也要保持 STDIN 打开。

  • -t:分配一个伪 TTY。

  • -u, --user:设置用户 ID(和可选的组 ID)来执行命令。

  • -w, --workdir:设置工作目录。

在名为 my_container 的容器中执行 bash shell:

docker exec -it my_container bash

以 root 用户身份执行 ls -la 命令:

docker exec -it my_container ls -la

使用指定的用户 myuser 执行命令:

docker exec -u myuser my_container whoami

在容器中以后台模式运行一个命令:

docker exec -d my_container tail -f /var/log/messages

在容器中指定工作目录执行命令:

docker exec -w /app my_container ls

在容器中启动一个交互式的 shell

docker exec -it my_container /bin/bash

或者

docker exec -it my_container /bin/sh

取决于你容器中安装的shell 类型

docker stop <container>:停止一个运行中的容器。

docker rm <container>:移除一个已经停止的容器。

docker logs <container>:显示容器的日志输出。

使用 docker logs 命令来查看容器的实时日志,你可以添加 -f 或 --follow 参数来实现实时输出日志的功能。这会使得 docker logs 命令持续监听容器的日志输出,直到你手动中断它(通常通过按下 Ctrl+C)

下面是一个具体的命令示例:

docker logs -f <container_name_or_id>

如果你想同时显示每行日志的时间戳,可以加上 -t 或 --timestamps 参数:

docker logs -f -t <container_name_or_id>

如果你还希望限制显示的日志行数,可以使用 --tail 参数,例如只显示最新的100行:

docker logs -f --tail 100 <container_name_or_id>

如果你想从特定的时间点开始显示日志,可以使用 --since 参数:

docker logs -f --since "2024-07-27" <container_name_or_id>

或者使用相对时间,比如从现在起前一个小时的日志:

docker logs -f --since 1h <container_name_or_id>

例如,下面的命令将显示容器 my_container 自从一小时前开始的所有日志,并且实时更新:

docker logs -f --since 1h -t my_container

docker port <container>:列出容器的端口映射。

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container> : 查看docker容器的ip地址

其他命令

docker info:显示Docker系统的详细信息。

docker version:显示Docker的版本信息。

docker network ls:列出网络。

docker volume ls:列出卷。