Skip to content

常用命令

1. 镜像

查看镜像

  1. 列出本地的镜像文件
she
docker images

image-20210618103206921

  1. 列出所有的镜像文件(包含中间映像层)
shell
## 含中间映像层
docker images -a

image-20210618103451877

  1. 常用的一些查询
shell
# 查找指定名称的镜像
docker images | grep "镜像名称"

删除指定镜像

shell
# 删除单个镜像,相当于: docker rmi ucall-admin:latest
docker rmi ucall-admin
# 强制删除(如果此镜像已经有运行的容器)
docker rmi -f ucall-admin

# 删除多个镜像
docker rmi -f ucall-admin redis nginx

# 删除本地所有的镜像
docker rmi -f $(docker images -q)

# 删除指定前缀的tag的镜像
docker rmi -f $(docker images | grep "镜像名称" | awk '{print $3}')
## 解读:
## docker images | grep "镜像名称" | awk '{print $3}' 的含义是:
## docker images 将所有的镜像输出出来,然后通过 grep "镜像名称"过滤出其中指定镜像名称的镜像,最后awk '{print $3}'的作用是将前面过滤后的镜像选取并输出第三列的数据(及IMAGE ID)的数据,这样就变成了 docker rmi -f imageid imageid imageid...
# --- 1. 删除tag为none的镜像 
docker rmi -f $(docker images | grep none | awk '{print $3}')

# 删除指定日期之前的镜像
docker image prune -a --filter "until=$(date +'%Y-%m-%dT%H:%M:%S' --date='-15 days')"

镜像的构建

shell
# -t ucall-admin:0.5.0  代表构建的镜像的名称为 ucall-admin tag为0.5.0 ( 镜像名称:Tag )
# . 代表以当前
docker build -t ucall-admin:0.5.0 .

镜像生成文件

shell
docker save imageid > xxx.jar

2. 容器相关

容器

  1. 容器的创建并启动
shell
# --name ucall-admin 指容器的名称为 ucall-admin
# -p 4031:80 指 将外部访问的3000端口映射到内部的80端口
# ucall-admin:latest 指镜像的名称和版本号
docker run -it --name ucall-admin -p 4031:80 ucall-admin:latest
  1. 停止容器

2.1. stop 关闭

docker stop [容器的ID(CONTAINER ID) | 容器的名称(NAMES11)]

shell
# ucall-admin 容器的名称
docker stop ucall-admin

image-20210618112422543

说明:

shell
# 查看当前运行中的容器
docker ps

# 停止ucall-admin容器
docker stop ucall-admin

# 这是发现运行中的容器没有ucall-admin了
docker ps 

# 查看所有的容器 就可以看到ucall-admin容器了
docker ps -a

2.2. kill 关闭

直接关闭容器

docker kill [容器的ID(CONTAINER ID) | 容器的名称(NAMES11)]

容器查看

  1. 查看正在运行的容器
shell
docker ps

image-20210618113048892

  1. 查看所有的本地容器
shell
docker ps -a

image-20210618113109113

  1. 查看容器的大小

docker ps [-s] -s去添加一个容器大小的列

shell
# 查看正在运行的容器的大小
docker ps -s

# 查看所有的容器的大小
docker ps -a -s

image-20210618113323198

image-20210618113415320

  1. 查看正在运行的容器的CONTAINER ID

docker ps -q

shell
# 查看正在运行的容器的CONTAINER ID
docker ps -q

image-20210618113706414

容器停止与删除

docker rmi [容器的ID(CONTAINER ID) | 容器的名称(NAMES11)]

  1. 删除已停止的容器
shell
docker rm ucall-admin
  1. 删除运行中的容器
shell
docker rm -f ucall-admin
  1. 删除多个容器
shell
docker rm -f ucall-admin nginx

容器重启

shell
docker start [容器的ID(CONTAINER ID) | 容器的名称(NAMES11)]

容器进程

查看容器内部的进程

shell
docker top nginx

容器日志

docker logs [-f] [-t] [-tail=100] [容器名称NAMES 或者 容器ID(CONTAINER ID)]

Options说明栗子
-f , --follow跟踪实时日志docker logs -f nginx
--tail string从日志末尾显示多少行日志, 默认是alldocker logs --tail=100 nginx
--until string显示自某个timestamp之前的日志,或相对时间,如42m(即42分钟)docker logs --until="2018-02-09T12:23:37" nginx
--since string显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)docker logs --since="2018-02-09T12:23:37" nginx
-t , --timestamps显示时间戳
--details显示更多的信息docker logs --details nginx
  1. 简单的
shell
docker logs nginx
  1. 跟踪日志输出
shell
docker logs -f -t --tail=200 nginx

容器的进入与退出

shell
# 使用run方式在创建时进入
docker run -it centos /bin/bash

# 关闭容器并退出
exit

# 仅退出容器,不关闭
# 快捷键:Ctrl + P + Q
# 直接进入centos 容器启动命令的终端,不会启动新进程,多个attach连接共享容器屏幕,参数:--sig-proxy=false  确保CTRL-D或CTRL-C不会关闭容器
docker attach --sig-proxy=false centos 

# 在 centos 容器中打开新的交互模式终端,可以启动新进程,参数:-i  即使没有附加也保持STDIN 打开;-t  分配一个伪终端
docker exec -i -t  centos /bin/bash

# 以交互模式在容器中执行命令,结果返回到当前终端屏幕
docker exec -i -t centos ls -l /tmp

# 以分离模式在容器中执行命令,程序后台运行,结果不会反馈到当前终端
docker exec -d centos  touch cache.txt

注意

  1. 删除
  • 镜像的删除用 docker rmi
  • 容器的删除用 docker rm