This page looks best with JavaScript enabled

Docker | 常用Docker基础命令

 ·  ☕ 3 min read

容器/镜像使用

查看正在运行的容器:

docker ps

查看所有容器:

docker ps -a

查看所有镜像:

docker images

停止所有容器:

docker stop $(docker ps -a -q)

删除所有容器:

docker rm $(docker ps -a -q)

删除所有镜像:

docker rmi $(docker images -q)

如果是控制某一个容器/镜像,只需要将后面的变量$()换成该容器/镜像的 ID。

删除无用镜像(需要输入y):

docker image prune -a

强制删除镜像:

docker image prune -a -f 

删除异常停止的docker容器:

docker rm `docker ps -a | grep Exited | awk '{print $1}'`

删除名称或标签为none的镜像:

docker rmi -f  `docker images | grep '<none>' | awk '{print $3}'` 

显示容器使用的系统资源(一秒刷新一次,Ctrl+C退出):

docker stats

不想持续的监控容器使用资源的情况,可以通过--no-stream选项只输出当前的状态:

docker stats --no-stream

查看指定容器日志:

docker logs -f [container-name/id]

也可以和 “–tail n” 命令结合起来,查看日志最后 n 行:

docker logs --tail 10 [container-name/id]

进入容器:

有两种方式进入后台运行的容器:

  1. docker attach(如果退出会导致容器停止)
docker attach [container-name/id]
  1. docker exec(推荐)
docker exec -it [container-name/id] /bin/bash

导入/导出容器:

导出容器快照到本地(通过重定向命名):

docker export [container-name/id] > my_container.tar

将本地容器快照导入为镜像:

cat my_container.tar | docker import - my_container:new

Docker run 命令

下面介绍以下 Docker 中用得最多的运行容器命令。

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

完整的 OPTIONS 说明可以使用docker run --help查看,下面是部分常用的说明:

  • -d/--detach=true: 后台运行容器,并返回容器 ID;
  • -i/ --interactive=true: 打开 STDIN,用于控制台交互,通常与-t同时使用;
  • -t/ --tty=true: 分配 tty 设备,可以支持终端登录,默认为 false,通常与-i同时使用;
  • -P/ --publish-all=true: 随机端口映射,容器内部端口随机映射到主机的端口
  • -p/ --publish=[]: 指定端口映射,格式为:主机(宿主)端口:容器端口
  • -h/ --hostname="": 指定容器的hostname
  • -v/ --volume[]: 给容器挂载存储卷,挂载到容器的某个目录;
  • --name="test": 为容器指定一个名称;
  • --dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
  • -e username="": 设置环境变量username
  • --env-file=[]: 从指定文件读入环境变量,文件格式为每行一个环境变量;
  • --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container 四种类型;
  • --link=[]: 添加链接到另一个容器,使用其他容器的IP、env等信息;
  • --restart="no": 指定容器停止后的重启策略,no:容器退出时不重启;on-failure:容器故障退出(返回值非零)时重启;always:容器退出时总是重启;
  • --rm=false: 容器退出时自动清理容器内部的文件系统,等价于在容器退出后,执行docker rm -v,不支持以docker run -d启动的容器。

Docker system 命令

docker system命令是 Docker 提供的帮助我们管理查看 Docker 运行情况的命令,你可以通过docker system --help查看介绍:

Usage:  docker system COMMAND

Manage Docker

Commands:
  df          Show docker disk usage
  events      Get real time events from the server
  info        Display system-wide information
  prune       Remove unused data

Run 'docker system COMMAND --help' for more information on a command.

其中比较有用的是dfprune两个指令:

  • docker system df: Docker 整体磁盘使用率的概况,包括镜像、容器、本地 Volume 和过程中的 cache;
  • docker system prune: 清理没有使用的数据,包括那些已停止的容器、dangling 镜像(未被任何镜像引用的镜像)、未被容器引用的 network 和构建过程中的 cache。

还可在不同在子命令下执行prune,用来删除某类资源:

  • docker container prune: 删除所有退出状态的容器;
  • docker volume prune: 删除未被使用的数据卷;
  • docker image prune: 删除 dangling 或所有未被使用的镜像。

当然,你也可以通过下面的命令直接更加彻底的完全删除某类资源(谨慎使用):

  • docker container rm $(docker container ls -a -q): 删除所有容器;
  • docker volume rm $(docker volume ls -q): 删除所有数据卷;
  • docker image rm $(docker image ls -a -q): 删除所有镜像;
  • docker network rm $(docker network ls -q): 删除所有网络。

Roelxy
WRITTEN BY
Roelxy
新世紀摸魚戰士