Docker 常用的命令

1
2
3
4
5
6
# 查看版本
docker -v
# 查看详细信息
docker version
# 查找可用的镜像
docker search <镜像名称>

配置阿里云镜像

仓库 / Registry

1
2
3
4
# 拉取最新版,相当于docker pull redis:latest
docker pull <镜像名称>
# 拉取指定版本
docker pull redis:7.0.5

镜像 / Image

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 查看最新创建的镜像,以下两个命令等价
docker images
docker image ls
# 查看所有镜像
docker images --all
docker iamges -a
# 查看与nginx相关的镜像: docker images nginx
docker images <镜像name>
# 只显示镜像ID,可以与docker rmi命令结合使用
docker images -q

# 删除指定镜像
docker rmi <镜像ID>
# 删除所有符合过滤条件的镜像
docker rmi $(docker images -f "dangling=true" -aq)
# 删除所有Redis镜像
docker rmi $(docker images redis -aq)

# 给镜像打标签
# 语法 docker image tag sourceImage:version targetImage:version
# 简写 docker tag sourceImage:version targetImage:version
docker tag redis my-local-redis:v1.0

容器 / Container

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# 查看运行运行中的容器
docker ps
# 查看所有容器,包含已停止的
docker ps -a
# 查看容器ID, -q 等价于 --quiet
docker ps -q

# 根据某个镜像创建容器但不启动
# 语法:docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
docker create -d --name redis-demo -p 6379:6379 redis:7.0.5

# 根据某个镜像创建容器并启动
# -d 让容器在后台运行,其实就是一个进程
# --name 指定容器名称
# -p 将容器的端口映射到宿主机的端口
# --cpus CPU核心数
# -m 等价于 --memory 指定最大内存
# -e 等价于 --env,设置环境变量
docker run -d --name redis-demo -p 6379:6379 --cpus 1 -m 100m -e REDIS_NAME=my-redis-demo redis:7.0.5

# 以交互式的方式进入容器
# docker exec -it containerId /bin/bash
docker exec -it redis-demo /bin/bash

# 启动/停止/暂停/重启容器
# 启动容器,语法:docker start containerId / containerName
docker start redis-demo

# 停止容器,语法:docker stop containerId / containerName
docker stop redis-demo

# 暂停容器,语法:docker pause CONTAINER [CONTAINER...]
docker pause redis-demo

# 运行状态下重启容器,语法:docker restart containerId / containerName
docker restart redis-demo

# 查看容器详细信息
# 语法 docker inspect [OPTIONS] NAME|ID [NAME|ID...]
docker inspect redis-demo


# 查看容器资源使用情况
# 语法:docker stats [OPTIONS] [CONTAINER...]
# 以流式的方式展示所有运行中的容器资源使用数据
docker stats
# 所有容器资源使用数据
docker stats -a
# 指定容器(redis-demo)资源使用数据
docker stats redis-demo
# 资源使用快照
docker stats --no-stream redis-demo

日志 / logs

1
2
3
4
5
# 查看容器日志
# 语法:docker logs [OPTIONS] CONTAINER
docker logs redis-demo
# 实时日志, -f 等价于 --follow,-n 等价于 --tail,显示倒数多少行日志
docker logs -f -n 12 redis-demo

网络 / Network

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 查看网络列表
# 语法:docker network ls [OPTIONS]
docker network ls

# 创建一个Docker 网络
# 语法:docker network create [OPTIONS] NETWORK
# -d 等价于 --driver
# 默认就是使用bridge
docker network create -d bridge nw-redis-b

# 创建容器时指定 Network
docker run -d --name redis-demo-nw -p 6378:6379 --network nw-redis-b redis:7.0.5

# 运行中的容器连接 Docker 网络
# 语法:docker network connect [OPTIONS] NETWORK CONTAINER
docker network connect nw-redis-b redis-demo

# 运行中的容器断开Docker网络
# 语法:docker network disconnect [OPTIONS] NETWORK CONTAINER
docker network disconnect nw-redis-b redis-demo

# 删除Docker网络
# 语法:docker network rm NETWORK [NETWORK...]
docker network rm nw-redis-b

# 清理未使用的 Docker 网络

# 语法:docker network prune [OPTIONS]
docker network prune

存储 / Storage

Dockerfile

1
2
3
4
5
6
7
8
9
10
11
12
13
# 语法:docker build [OPTIONS] PATH | URL | -

##### 第一种方式,根据Dockerfile生成镜像 #####
# 切换到Dockerfile所在目录
cd dockerfile-path
# -t 等价于 --tag,指定镜像的标签
docker build -t image-from-path .

##### 第二种方式,根据URL生成镜像 #####
# URL可以是Git远程仓库(包含Dockerfile文件)
# URL也可以是预先打包好的tarball上下文链接
# URL也可以是普通文本文件(内容和Dockerfile相同)
docker build -t image-from-url github.com/creack/docker-firefox

Docker 命令通用参数总结

  • 只显示 Docker 对象 ID
    1
    2
    3
    4
    5
    # 一些示例
    docker images -q
    docker ps -q
    docker network ls -q
    docker volume ls -q
  • 过滤器
    1
    2
    # 一些示例
    docker ps -f status=exited