在工作中常用的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:列出卷。