抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

docker学习

查询docker信息

1
docker info       #显示docker的系统信息,包括镜像和容器和仓库信息

查询docker版本

1
2
docker -v
docker version

镜像images命令

Docker 镜像是一个只读模板,包含了运行容器所需要的文件系统和内容(如代码、运行时、库等)。

镜像可以层层叠加,节省空间。

镜像构建时是以分层式构建,多层叠加组合而成一个镜像,每次对镜像内容修改,都会叠加一层。

对镜像内容删除时,并不会真的删除,只是该层被遮盖了,并不是真正意义上的删除,所以镜像会越来越大。

查询所有镜像

1
docker images

查询镜像详细信息

1
docker image inspect 容器ID/容器名字

从仓库里搜索镜像

1
docker search 容器名

拉取镜像

1
docker pull 容器名:版本号   #版本号省略则默认使用latest版本

删除镜像

1
docker rmi 容器ID/容器名

import从本地导入镜像

1
docker import [OPTIONS] tar路径 镜像名:版本  #使用示例
参数名 简写 类型 说明
--change -c 字符串,可以重复使用 设置镜像的元数据(相当于 Dockerfile 中的命令,如 CMD, ENV, EXPOSE, ENTRYPOINT 等)
--message -m 字符串 添加导入镜像的说明信息,用于记录镜像变更备注
1
2
3
4
5
6
7
8
#示例
docker import \
-c "ENV LANG C.UTF-8" \
-c "EXPOSE 80" \
-c "CMD [\"/usr/sbin/nginx\"]" \
-m "a demo" \
nginxfs.tar nginx:latest

build构建镜像

build命令需要搭配dockerfile文件来构建镜像。

Dockerfile指令详解

指令 描述
ADD 添加本地或远程文件和目录。
ARG 使用构建时变量。
CMD 指定 default 命令。
COPY 复制文件和目录。
ENTRYPOINT 指定默认可执行文件。
ENV 设置环境变量。
EXPOSE 描述您的应用程序正在侦听的端口。
FROM 从基础映像创建新的构建阶段。
HEALTHCHECK 在启动时检查容器的运行状况。
LABEL 将元数据添加到图像中。
MAINTAINER 镜像维护作者。
ONBUILD 指定何时在构建中使用映像的说明。
RUN 执行生成命令。
SHELL 设置镜像的默认 shell。
STOPSIGNAL 指定退出容器的系统调用信号。
USER 设置用户和组 ID。
VOLUME 创建卷挂载。
WORKDIR 更改工作目录。
简易的centos镜像构建参数demo
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
# 使用官方 centos 作为基础镜像
FROM centos:7

# 镜像维护者信息(可选)
MAINTAINER yourname@example.com

# 设置环境变量
ENV LANG en_US.UTF-8
ENV TZ Asia/Shanghai

# 安装常用工具(使用 yum)
RUN yum update -y && \
yum install -y vim curl wget net-tools && \
yum clean all

# 添加本地文件到镜像中
# 假设本地有 start.sh 文件
COPY start.sh /usr/local/bin/start.sh

# 设置工作目录
WORKDIR /usr/local/bin

# 给文件赋执行权限
RUN chmod +x start.sh

# 设置容器启动时默认执行的命令
CMD ["bash", "start.sh"]

build相关指令

1
2
3
4
5
docker build [OPTIONS] PATH #使用示例

docker build -t myapp:latest .

. 表示当前目录中有 Dockerfile,作为构建上下文。

OPTIONS参数

参数说明示例
-t, --tag为构建的镜像指定名称和标签(可多次使用)-t myimage:1.0
-f, --file指定 Dockerfile 路径-f Dockerfile.dev
--build-arg构建时传递变量(Dockerfile 中 ARG 使用)--build-arg VERSION=1.2.3
--no-cache构建时不使用缓存--no-cache
--pull始终尝试从远程拉取最新基础镜像--pull
--target指定构建多阶段 Dockerfile 中的某个阶段--target builder
--platform指定构建平台(如 amd64、arm64)--platform linux/amd64
--progress构建时输出样式(plain 或 tty)--progress=plain
--output指定构建产出位置,如本地目录或类型--output type=local,dest=./out
1
2
3
4
#使用指定 Dockerfile
docker build -t test:v2 -f ./Dockerfile.dev .
#不使用缓存构建
docker build --no-cache -t nocache-image .

cp宿主机与容器文件复制

1
2
3
4
5
6
7
8
docker cp [OPTIONS] <源路径> <目标路径>   #使用示例
#<路径> 可以是容器路径(带容器名或 ID)或宿主机本地路径

#从容器拷贝文件到宿主机
docker cp 容器ID/容器名:/path/in/container /path/on/host
#从宿主机拷贝文件到容器中
docker cp /path/on/host 容器ID/容器名:/path/in/container

commit从容器创建新镜像

1
2
3
docker commit [OPTIONS] 容器ID或名字 新镜像的名称:标签(tag)   #使用示例

docker commit mycontainer myimage:v1 #样例

OPTIONS参数

选项含义
-a, --author镜像作者
-m, --message提交时的说明(类似 Git commit message)
-p, --pause提交时是否暂停容器(默认是 true,安全性更高)
1
docker commit -a "treeman" -m "a demo app" -p false mycontainer myapp:v1

save导出 load导入镜像

常用在没有公网的时候离线导入导出镜像。

导出镜像

1
2
3
4
5
6
7
docker save [OPTIONS] IMAGE [IMAGE...]

-o 指定导出的文件名
#保存单个镜像到本地文件
docker save -o nginx.tar nginx:latest
#保存多个镜像(组合多个镜像成一个 tar 包)
docker save -o my_images.tar nginx:latest busybox alpine

导入镜像

1
2
3
4
5
docker load [OPTIONS]

-i 指定要导入的 tar 文件名
#从 .tar 文件中导入镜像
docker load -i nginx.tar

容器container命令

容器资源限制与隔离

容器通过基于Linux底层的Namespace技术来实现资源隔离cgroups技术实现资源限制

Namespace(命名空间)将内核的全局资源进行封装,使得每个namespace都有一份独立资源,因此不同的进程在各自的namespace内对同一种资源的使用不会相互干扰。

Namespace类型 系统调用参数 隔离内容
PID namespace CLONE_NEWPID 进程空间(进程ID)
Mount namespace CLONE_NEWNS 文件系统挂载点
Network namespace CLONE_NEWNET 网络资源:网络设备、端口等
User namespace CLONE NEWUSER 用户ID和用户组ID
UTS namespace CLONE NEWUTS 主机名和域名
IPC namespace CLONE_NEWIP 信号量、消息队列和共享内存

cgroups 是 Linux 内核的一个子系统,主要作用是:

  • 限制资源:限制某个进程组最多可以使用多少资源。
  • 监控资源:监控某个进程组当前使用了多少资源。
  • 优先级控制:例如通过 cpu.shares 来设置容器的 CPU 调度优先级。
  • 进程分组:将进程组织在一起,进行统一管理

cgroups内存限制参数

参数说明示例
--memory-m限制容器使用的最大内存-m 512m(512MB)
--memory-swap设置总的 swap + memory 限制,必须 ≥ memory,-1 表示无限制--memory-swap 1g
--memory-reservation设置软限制(低于 memory 的值)--memory-reservation 256m
--kernel-memory(不推荐)限制内核内存使用(已弃用)--kernel-memory 50m(已被移除)
--oom-kill-disable禁用 OOM Killer--oom-kill-disable=true

CPU 限制参数

参数说明示例
--cpus限制使用的 CPU 数量(可为小数)--cpus=1.5(最多使用 1.5 核)
--cpu-shares设置 CPU 权重(相对值,默认 1024)--cpu-shares=512(权重为默认的一半)
--cpuset-cpus限制容器只能运行在哪些 CPU 核上--cpuset-cpus="0,2"
--cpu-period设置 CPU 周期(单位:微秒,默认 100000)--cpu-period=50000
--cpu-quota设置 CPU 配额(必须与 period 配合)--cpu-quota=25000
--cpuset-mems设置容器可用的内存节点(NUMA 系统使用)--cpuset-mems="0,1"

块设备 I/O 限制参数

参数说明示例
--blkio-weight设置整体 I/O 权重(范围:10~1000)--blkio-weight=300
--device-read-bps限制读取速率(按字节)--device-read-bps /dev/sda:1mb
--device-write-bps限制写入速率--device-write-bps /dev/sda:2mb
--device-read-iops限制读取 IOPS--device-read-iops /dev/sda:100
--device-write-iops限制写入 IOPS--device-write-iops /dev/sda:200
1
2
3
4
5
6
7
8
9
10
11
12
13
#样例
docker run -dt \
--memory="512m" \
--memory-swap="1g" \
--cpus="2" \
--cpuset-cpus="0,1" \
--cpu-shares="512" \
--blkio-weight=300 \
ubuntu bash


#查询该容器的限制情况
docker inspect <容器名或ID> | grep -i -A 60 "HostConfig"

列出所有运行的容器

1
2
docker ps [OPTIONS]
docker container list [OPTIONS]

OPTIONS参数

参数描述
-a查看所有容器的运行记录
-n=?显示最近创建的n个容器
-q只显示容器的id

删除指定容器

1
2
3
4
5
6
docker rm 容器id/容器名 #删除指定容器

#运行和迁移状态的容器无法直接删除,-f可以强制删除任何状态的容器
#删除所有容器
docker rm -f $(docker ps -aq)
docker ps -a -q|xargs docker rm

启动容器

1
docker start 容器id/容器名

重启容器

1
docker restart 容器id/容器名

停止容器

1
docker stop 容器id/容器名

强制停止容器

1
docker kill 容器id/容器名

容器暂停和恢复

1
2
docker pause	#暂停容器中所有的进程,后面可指定容器
docker unpause #恢复容器中所有的进程,后面可指定容器

等待容器退出返回码

1
docker wait	容器	#阻塞运行直到容器停止,然后打印出它的退出代码

exec和attach进入容器内部命令

exec与attach的比较:

比较项 docker attach docker exec
连接的是 容器主进程 容器中任意新命令
是否新开终端 ❌ 否 ✅ 是
多人同时使用 ❌ 一般不推荐 ✅ 支持多个并发
退出容器会关闭吗 ✅ 有风险(看主进程) ❌ 不会影响主进程

exec命令

1
2
3
4
5
6
7
8
9
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]   #使用示例


CONTAINER:目标容器的名字或 ID
COMMAND:你想在容器中执行的命令
[ARG...]:传给命令的参数

#样例
docker exec -it mycontainer bash

OPTIONS参数

选项含义应用示例场景解释
-d, --detach后台运行命令docker exec -d mycontainer sh -c "sleep 30"在容器中异步执行脚本,不阻塞主终端
--detach-keys自定义退出快捷键docker exec --detach-keys="ctrl-e,e" mycontainer bash默认是 ctrl-p + ctrl-q,可以改为你喜欢的组合
-e, --env设置环境变量docker exec -e ENV_MODE=debug mycontainer bash临时在容器中注入变量(如调试模式)
--env-file从文件加载环境变量docker exec --env-file ./env.list mycontainer bash一次性设置多个变量,方便管理配置
-i, --interactive保持标准输入打开常与 -t 搭配使用docker exec -it mycontainer bash
--privileged提供更高权限docker exec --privileged mycontainer bash访问内核、挂载设备等高级操作(一般不常用)
-t, --tty分配伪终端docker exec -t mycontainer bash用于格式良好的输出(如颜色、界面)
-u, --user指定运行用户docker exec -u root mycontainer bash指定以 root 或其它用户身份运行
-w, --workdir指定容器内工作目录docker exec -w /usr/local mycontainer ls控制命令在哪个目录执行

attach命令

1
docker attach [OPTIONS] 容器ID/容器名  #使用示例

attch进入容器后,可以使用默认退出方式:Ctrl + P,然后 Ctrl + Q(注意,不是 Ctrl+C

重命名容器

1
docker rename 容器 新的容器名字

run运行容器

1
docker run [OPTIONS] 镜像 [COMMAND] [ARG...]   #使用示例

OPTIONS参数

选项含义示例
-d后台运行容器(Detached)-d
-it交互模式 + 伪终端-it
--name为容器命名--name myweb
-p端口映射(主机:容器)-p 8080:80
-e设置环境变量-e ENV=prod
-v挂载卷(宿主机:容器)-v /data:/data
--rm容器退出后自动删除--rm
--restart容器异常重启策略
no,默认策略,在容器退出时不重启容器
on-failure,在容器非正常退出时(退出状态非0),才会重启容器
on-failure:3,在容器非正常退出时重启容器,最多重启3次
always,在容器退出时总是重启容器
unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器
--restart=always
--network加入指定网络,默认网络类型有host、bridge、none--network=my_net
-u指定用户-u 1000:1000
-w设置工作目录-w /app
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
--dns:指定容器使用的自定义 DNS 服务器。
示例:docker run --dns 8.8.8.8 image_name
--dns-search:指定容器的 DNS 搜索域。
示例:docker run --dns-search example.com image_name
--cap-add 和 --cap-drop:增加或删除容器的 Linux 能力,用于控制容器的权限。
示例:docker run --cap-add=SYS_ADMIN image_name
--privileged:给容器赋予特权,可以访问主机的设备。
示例:docker run --privileged image_name
--tmpfs:在容器内创建临时文件系统,用于存储临时数据。
示例:docker run --tmpfs /tmp image_name
--ulimit:设置容器的资源限制,如最大打开文件数、最大进程数等。
示例:docker run --ulimit nofile=1024:1024 image_name
--security-opt:设置容器的安全选项,如 AppArmor 配置、Seccomp 配置等。
示例:docker run --security-opt seccomp:unconfined image_name
--cpu-shares:设置容器的 CPU 份额,用于控制 CPU 资源的分配。
示例:docker run --cpu-shares 512 image_name
--memory:设置容器可使用的内存限制。
示例:docker run --memory 1g image_name
--network:指定容器使用的网络模式。
示例:docker run --network bridge image_name
--hostname:设置容器的主机名。
示例:docker run --hostname my_container image_name
--user:指定容器运行时的用户名或 UID。
示例:docker run --user username image_name
--volume-driver:指定容器使用的卷驱动程序。
示例:docker run --volume-driver my_driver image_name
--shm-size:设置容器的共享内存大小。
示例:docker run --shm-size 2g image_name
--add-host:向容器的 /etc/hosts 文件添加自定义主机名和 IP 映射。
示例:docker run --add-host myhost:192.168.0.100 image_name
--read-only:将容器的文件系统设置为只读模式。
示例:docker run --read-only image_name
–cpu-quota:设置容器的 CPU 配额,以微秒为单位。
示例:docker run --cpu-quota=50000 image_name
--cpu-period:设置容器的 CPU 周期,以微秒为单位。
示例:docker run --cpu-period=100000 image_name
--dns-option:为容器的 DNS 配置添加自定义选项。
示例:docker run --dns-option=timeout:5 image_name
--sysctl:设置容器的内核参数。
示例:docker run --sysctl net.ipv4.ip_forward=1 image_name
--label:为容器添加标签,用于识别和组织容器。
示例:docker run --label env=production image_name
--workdir:设置容器的工作目录。
示例:docker run --workdir /app image_name

网络network命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
docker常见的网络类型
host:
容器没有独立的网络命名空间。
使用宿主机的 IP 和端口(容器端口就是主机端口)。
bridge:
Docker 会创建一个虚拟网桥(通常叫 docker0)。
容器会获得一个私有 IP 地址(通常是 172.17.0.0/16 网段)。
容器之间可以互相通信。
none:
容器没有网络接口,不能联网。
常用于生成随机密码等私密性高的服务,不对外联网
macvlan:
容器被分配一个和宿主机同一网段的 IP。
容器拥有自己的 MAC 地址。
适合一些需要真实网络接入的应用(如 DHCP、PXE)。
overlay:
在 Docker Swarm 或 Kubernetes 中,实现不同主机上的容器通信。
适用于跨主机部署。
需要 Docker Swarm 初始化集群(或 Kubernetes CNI 支持)。

网络类型对比

网络类型适用场景是否跨主机是否分配独立 IP是否需端口映射
bridge单机容器通信是(内部私网)
host性能要求高、需与主机同网络
none网络隔离、安全测试
overlay集群容器通信(Swarm/K8s)
macvlan容器模拟物理主机,连入真实网络是(物理网段)

创建docker自定义网络

1
docker network create [OPTIONS] NETWORK_NAME #创建示例

OPTIONS参数类型

参数类型作用说明
--driver, -d字符串指定网络驱动类型,如 bridgeoverlaymacvlanhost,默认是 bridge
--subnet字符串指定自定义子网(如 192.168.100.0/24),仅部分网络类型支持(如 bridgemacvlan)。
--gateway字符串指定网关 IP(如 192.168.100.1),需与 --subnet 搭配使用。
--ip-range字符串指定 IP 分配范围,容器 IP 将从这个范围中选取。
--ipam-driver字符串指定 IP 地址管理(IPAM)驱动,默认是 default
--ipam-opt多个键值对为 IPAM 驱动指定自定义选项。
--aux-address多个键值对为某些保留地址指定名称(如为特殊设备保留地址)。
--internal创建一个内部网络,不允许外部访问(常用于安全隔离)。
--attachable允许非 swarm 服务的容器手动连接 overlay 网络(仅 overlay 类型有效)。
--ingress标记该 overlay 网络为 ingress 网络(Swarm 路由负载均衡使用)。
--config-from字符串从已有网络复制配置。
--config-only创建仅供配置使用的网络。
--label多个键值对给网络加标签(方便识别和管理)。
--opt, -o多个键值对网络驱动的自定义选项(如 macvlan 的 parent=eth0)。
1
2
3
4
5
6
7
8
9
10
11
12
13
#创建带 IP 子网的 bridge 网络
docker network create \
--driver bridge \ #网络驱动类型
--subnet=192.168.50.0/24 \ #子网
--gateway=192.168.50.1 \ #网关
my-bridge-net #创建的网络名字

#创建 overlay 网络,供容器手动加入
docker network create \
--driver overlay \ #网络驱动类型
--attachable \ #允许手动连接
my-overlay-net #创建的网络名字

查询docker网络详细信息

docker network inspect 是一个用于查看 Docker 网络详细信息的命令,常用于排查网络问题、验证容器连接、查看 IP 配置、网桥名等信息。

1
2
3
docker network inspect [OPTIONS] NETWORK_NAME | NETWORK_ID  #查询示例

docker network inspect bridge #查询bridge的网络详细信息
inspect的查询信息
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
[
{
"Name": "bridge",
"Id": "e3e5c6e...4c98",
"Driver": "bridge",
"Scope": "local",
"IPAM": {
"Driver": "default",
"Config": [
{
"Subnet": "172.17.0.0/16",
"Gateway": "172.17.0.1"
}
]
},
"Containers": {
"abc12345...": {
"Name": "my-container",
"IPv4Address": "172.17.0.2/16",
"MacAddress": "02:42:ac:11:00:02"
}
},
...
}
]

查询信息的相关字段

字段名含义
Name网络名称
Id网络的唯一标识符(UUID)
Driver网络驱动类型(如 bridge, overlay, macvlan
Scope网络的作用范围(local 表示本地,global 表示集群)
IPAMIP 地址分配信息(包括子网和网关)
Containers当前连接到此网络的容器列表及其网络信息
Options网络创建时的自定义选项
Labels用户设置的标签

容器连接多网络

docker network connect 是一个非常实用的命令,用于将已存在的容器连接到另一个网络,从而实现容器跨网络通信。它通常用于容器同时加入多个网络的场景。

1
2
3
4
docker network connect [OPTIONS] NETWORK CONTAINER  #使用示例

NETWORK:你要连接到的网络名称或 ID。
CONTAINER:你要加入该网络的容器名称或 ID。

也可以自定义加入的网络IP地址

参数 作用
--ip 手动指定容器在该网络下的 IPv4 地址(需要配合网络的 --subnet 使用)
--ip6 指定 IPv6 地址(如果网络支持)
--link 已废弃,不推荐使用
--alias 指定容器在该网络中的别名,其他容器可以用这个别名访问它
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#创建自定义网络custom-net
docker network create \
--subnet=192.168.100.0/24 \
custom-net

#运行busybox容器,容器名test
docker run -dit --name test busybox

#加入自定义网络并自定义IP和网络别名
docker network connect \
--ip 192.168.100.88 \
--alias db-alias \
custom-net \
test

希望容器的网络退出,可以使用disconnect,容器多网卡通信完毕后移除不需要的网络

1
2
3
4
docker network disconnect [OPTIONS] NETWORK CONTAINER	#断开容器的网络

NETWORK:你要取消连接到的网络名称或 ID。
CONTAINER:你要取消该网络的容器名称或 ID。

列出docker所有网络

1
docker network ls [OPTIONS]  #使用示例

OPTIONS相关参数

参数含义示例
-f, --filter使用条件过滤网络(可以使用多个)--filter driver=bridge
--format自定义输出格式(Go 模板语法)--format "{ {Name}}: { {Driver}}"
--no-trunc不截断输出(完整显示 ID 等字段)--no-trunc
-q, --quiet只列出网络 ID(适合脚本中使用)--quiet-q

过滤支持的条件

字段示例含义
driver--filter driver=bridge根据网络类型过滤(如 bridge、overlay)
name--filter name=web按网络名称(支持模糊匹配)
id--filter id=b129f4e4b8d3根据网络 ID 过滤
label--filter label=env=prod根据标签过滤
scope--filter scope=local根据作用范围过滤(local/global)
type--filter type=custom--filter type=builtin自定义网络 or 系统内置网络

清理不需要的网络

docker network prune 是一个用于清理未被任何容器使用的网络的命令。它非常适合日常清理工作环境中产生的多余网络,保持系统整洁。

执行删除时会跳过docker默认就有的网络类型:

  • bridge

  • host

  • none

1
docker network prune [OPTIONS]  #使用示例

OPTIONS相关参数

参数简写说明示例
--force-f跳过用户确认,直接执行删除操作docker network prune -f
--filter添加过滤条件,仅清除匹配的网络--filter "label!=keep"

过滤相关参数

条件名示例含义
label=<key>label=env=test只删除带有这个标签的网络
label!=<key>label!=keep忽略带有该标签的网络
until=<时间>until=24h仅删除 24 小时前创建的未使用网络。单位:s, m, h, d(秒/分/时/天)
1
docker network prune --filter "until=24h" #删除未使用并且创建超过一天的网络

docker指定删除网络

与prune不同,rm可以删除多个指定的网络,但是网络必须是用户自定义的,非内建(不能删除 bridgehostnone)。网络不能有容器连接,否则删除会失败。

1
2
3
4
5
6
7
docker network rm [NETWORK...]	#使用实例

#例如创建两个网络
docker network create mynet
docker network create mynet1
#移除自建的网络
docekr network rm mynet mynet1

卷volume命令

Volume 是 Docker 推荐用于 持久化容器数据 的机制。与容器生命周期无关,容器删除时 Volume 不会消失,可复用、易于备份、可共享。具有以下特点:

特性 描述
生命周期独立 容器删了,volume 不会删
跨容器共享 多个容器可挂载同一个 volume
可备份易迁移 可复制到其他宿主机或存储中
性能好、权限安全 优于 bind mount(绑定宿主机路径)
可用于命名挂载 /data, /var/lib/mysql

创建卷

1
docker volume create [OPTIONS] [VOLUME_NAME]  #使用示例

OPTIONS相关参数

参数名说明示例
--driver, -d使用的存储驱动,默认为 local,也可为 nfs, flocker, tmpfs--driver local
--label为卷打标签--label env=prod
--opt, -o为驱动传递选项参数--opt type=tmpfs

默认使用 local 驱动,存储路径在:/var/lib/docker/volumes/卷名/_data

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#创建并打标签的 Volume
docker volume create \
--label env=prod \
--label service=nginx \
nginx-vol
#方便后期使用 docker volume ls --filter label=env=prod 查询

#创建一个内存类型 Volume(tmpfs)
docker volume create \
--driver local \
--opt type=tmpfs \
--opt device=tmpfs \
--opt o=size=200m \
tmpfs-vol
#tmpfs 是 Linux 内存文件系统
#o=size=200m 设置容量限制

#挂载 NFS 存储(高级),适用于集群环境,把数据挂载到远程的 NFS 网络存储
docker volume create \
--driver local \
--opt type=nfs \
--opt o=addr=192.168.1.100,nolock,soft,rw \
--opt device=:/shared/data \
nfs-vol

卷相关命令

1
2
3
4
docker volume inspect 卷名	#查看详细信息
docker volume ls #列出卷
docker volume prune #删除所有未使用的卷
docker volume rm 卷名 #删除一个或多个卷

其余命令

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
docker top 容器id 	#查看容器中进程信息ps

docker config #管理Docker配置
docker config create #创建配置文件
docker config inspect #查看配置文件信息
docker config ls #显示docker里已经保存得配置文件
docker config rm #删除配置文件

docker context #管理contexts
docker context create #创建一个上下文
docker context export #将上下文导出到tar或kubecconfig文件中
docker context import #从tar或zip文件导入上下文
docker context inspect #在一个或多个上下文上显示详细信息
docker context ls #列出上下文
docker context rm #删除一个或多个上下文
docker context update #更新
docker context use #设置当前docker的上下文
docker create #创建一个新的容器但不启动它
docker diff #检查容器里文件结构的更改
docker events #从服务器获取实时事件
docker export #将文件系统作为一个tar归档文件导出到STDOUT
docker history #查看指定镜像的创建历史


docker login #登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
docker logout #登出一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
docker logs #获取容器的日志

docker manifest #管理manifest(实验,不应用于生产环境)
docker manifest annotate #向本地镜像清单添加附加信息
docker manifest create #创建用于注释和推入注册表的本地清单列表
docker manifest inspect #显示镜像清单或清单列表
docker manifest push #将清单列表推入仓库
docker manifest rm #从本地存储中删除一个或多个清单列表

docker node #管理集群(swarm)节点
docker node demote #从群集(swarm)管理器中降级一个或多个节点
docker node inspect #显示一个或多个节点的元数据
docker node ls #列出群集(swarm)中的节点
docker node promote #将一个或多个节点推入到群集管理器中
docker node ps #列出在一个或多个节点上运行的任务,默认为当前节点
docker node rm #从群集(swarm)删除一个或多个节点
docker node update #更新一个节点

docker plugin #管理插件
docker plugin create #从rootfs和配置创建一个插件。插件数据目录必须包含config.json和rootfs目录。
docker plugin disable #禁用插件
docker plugin enable #启用插件
docker plugin inspect #显示一个或多个插件的元数据
docker plugin install #安装一个插件
docker plugin ls #列出所有插件
docker plugin push #将插件推送到注册表
docker plugin rm #删除一个或多个插件
docker plugin set #更改插件的设置
docker plugin upgrade #升级现有插件
docker port #列出指定的容器的端口映射,或者查找将PRIVATE_PORT NAT到面向公众的端口

docker secret #管理Docker secrets
docker secret create #从文件或STDIN创建一个secret作为内容
docker secret inspect #显示有关一个或多个secret的详细信息
docker secret ls #列出secret
docker secret rm #删除一个或多个secret

docker service #管理服务
docker service create #创建一个服务
docker service inspect #查看服务的元数据
docker service logs #获取服务的日志
docker service ls #列出服务
docker service ps #列出一个或多个服务的任务
docker service rm #删除一个或多个服务
docker service rollback #将更改恢复到服务的配置
docker service scale #缩放一个或多个复制服务
docker service update #更新服务

docker stack #管理堆栈
docker stack deploy #部署新的堆栈或更新现有堆栈
docker stack ls #列出现有堆栈
docker stack ps #列出堆栈中的任务
docker stack rm #删除堆栈
docker stack services #列出堆栈中的服务

docker swarm #管理集群(Swarm)
docker swarm ca #查看或旋转当前群集CA证书。此命令必须针对管理器节点
docker swarm init #初始化一个群集(Swarm)
docker swarm join #加入群集作为节点和/或管理器
docker swarm join-token #管理加入令牌
docker swarm leave #离开群集(Swarm)
docker swarm unlock #解锁群集(Swarm)
docker swarm unlock-key #管理解锁钥匙
docker swarm update #更新群集(Swarm)

docker system #管理Docker
docker system df #显示docker磁盘使用情况
docker system events #从服务器获取实时事件
docker system info #显示系统范围的信息
docker system prune #删除未使用的数据
docker tag #标记本地镜像,将其归入某一仓库
docker top #查看容器中运行的进程信息,支持 ps 命令参数
docker trust #管理Docker镜像的信任
docker trust inspect #返回有关key和签名的低级信息
docker trust key #管理登入Docker镜像的keys
docker trust key generate #生成并加载签名密钥对
docker trust key load #加载私钥文件以进行签名
docker trust revoke #删除对镜像的认证
docker trust sign #镜像签名
docker trust signer #管理可以登录Docker镜像的实体
docker trust signer add #新增一个签名者
docker trust signer remove #删除一个签名者

docker update #更新一个或多个容器的配置

评论