docker命令大全

docker 命令大全

1. 镜像仓库

1.1 docker search [OPTIONS] TERM // 搜索镜像

1
2
3
4
5
6
7
8
9
10
选项:
-f --filter filter 都可以
说明:
根据条件筛选
示例:
--filter=is-automated=true 只列出 automated build类型的镜像
--filter=stars=10 列出收藏数不小于指定值的镜像

选项: --limit int 设置搜索结果的记录数量
--no-trunc 搜索结果完整显示

1.2 docker pull [OPTIONS] NAME[:TAG|@DIGEST] // 从镜像参数中拉取指定镜像

选项 说明 示例
-a 拉取所有tagged镜像
--disable-content-trust 忽略镜像的校验,默认为true

1.3 docker push [OPTIONS] NAME[:TAG] // 上传镜像到仓库(要先登录仓库)

1
2
3
4
5
6
7
8
9

选项
--disable-content-trust
说明:
忽略镜像校验
示例:
docker login
docker tag local-image:tagname yichen/mysql:tagname
docker push yichen/mysql:tagname

1.4docker login -u 用户名 -p 密码 //登录

1.5 docker logout // 登出

2. 容器操作

2.1 docker ps [OPTIONS] //列出容器

选项 说明 示例
-a 显示所有容器,默认只显示正在运行的 docker ps -a
-f 过滤 docker ps -f name=hello
-n 10 显示最近创建的容器
--no-trunc 显示全部描述
-q 只显示简略ID
-s 显示总的文件大小

2.2docker inspect [OPTIONS] NAME|ID //获取容器或镜像的元数据

选项 说明 示例
-f filter 筛选
-s 如果是一个容器的话返回其文件大小
--type image/container 返回指定类型的JSON

2.3 docker top CONTAINER // 查看指定容器中运行的进程

2.4 docker attach [OPTIONS] CONTAINER //进入正在运行的容器

选项 说明 示例
-detach-keys string
--no-stdin
--sig-proxy 默认为true --sig-proxy=false

2.5 docker events [OPTIONS] //从服务器获取实时事件

选项 说明 示例
-f filter 过滤
--since timestamp 显示在指定时间之后发生的事件 docker events --since=1467302400
--until timestamp 显示在指定时间之前所产生的事件

2.6 docker logs [OPTIONS] CONTAINER //获取容器的日志

选项 说明 示例
--details 显示详细日志
-f 日志实时输出
--since timestamp
--until timestamp
--tail num 输出最后多少行日志
-t 显示日志时间

2.7 docker wait CONTAINER... //等待容器停止并输出其退出代码

2.8 docker export -o fileName.tar CONTAINER //将指定容器打包到tar文档中,可以指定文件路径

2.9 docker port CONTAINER [PORT] // 列出容器的端口映射(容器端口与主机端口对应关系)

3.容器rootfs命令

3.1 docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] // 从一个容器创建一个新的镜像

选项 说明 示例
-a 镜像作者
-c 使用Dockerfile指令创建镜像
-m 提交时的说明文字
-p 在提交时,暂停容器
1
2
示例: docker commit ID new_image_name     #镜像打包 (保存对容器的修改)
docker commit -m="提交的描述信息" -a="作者" 容器id 要创建的目标镜像名:[标签名]

3.2 docker cp // 容器与主机之间的文件复制

1
2
3
4
5
6
7
8
9
10
11

docker cp [options] CONTAINER:SRC_PATH TAR_PATH
从容器中复制到主机
docker cp testtomcat:/usr/local/tomcat/webapps/test/js/test.js /opt

docker cp [options] SRC_PATH CONTAINER:TAR_PATH
从主机复制到容器中
docker cp /opt/test.js testtomcat:/usr/local/tomcat/webapps/test/js
选项:
-a 复制所有的gid/uid信息
-L Always follow symbol link in SRC_PATH 始终遵循原路径的符号信息

3.3 docker difff CONTAINER // 查看容器中被修改过的文件或目录
说明:C - Change, D - Delete, A - Add

4. 容器生命周期管理

4.1 docker start [options] container... //启动一个或多个容器

选项 说明 示例
-a 启动后进入容器
--detach-keys string
-i Attach container's STDIN

4.2 docker stop [options] container... //停止一个或多个容器

选项 说明 示例
-t int 多少秒后停止容器

4.3 docker restart [options] container... //重启一个或多个容器

选项 说明 示例
-t int 多少秒后重启容器

4.4 docker kill [options] container... // 杀死一个或多个容器

选项 说明 示例
-s string 给容器发送一个信号,默认为KILL

4.5 docker rm [options] container... //删除一个或多个容器

选项 说明 示例
-f, -force 强制移除容器
-l, -link 删除指定的连接
-v, -volumes 删除容器及其挂载的卷

4.6 docker pause container... // 暂停容器中所有的进程

4.7 docker unpause container... // 恢复容器中所有的进程

4.8 docker exec [options] container command [arg...] 在运行的容器中执行命令

1
docker exec -it 77cd6bef4dc9 /bin/bash   #进容器
选项 说明 示例
-d, --detach 分离模式, 在后台运行
--detach-keys str ``
-e, --env list 设置环境变量
-i, --interactive 保持STDIN打开 与-t结合使用打开一个终端
-t, --tty 分配一个伪终端 与-i结合使用打开一个终端
--privileged 授予命令扩展权限
-u, --user str 指定用户名或用户ID
-w, --workdir str 在指定文件目录下执行相应的命令 -w /home container ls
-c 执行docker容器命令 docker exec -it zeppelin bash -c 'echo $ZEPPELIN_HOME'

4.9 docker run [optoins] image [command] [arg...] // 运行一个新容器中执行一个命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
运行容器

docker run --name 容器名 -d -p 3306:3306 mysql docker 启动容器
docker run image_name
docker run -d -p 80:80 nginx:latest
run(创建并运行一个容器)
-d 放在后台
-p 端口映射 :docker的容器端口
-P 随机分配端口
-v 源地址(宿主机):目标地址(容器)

docker run -it --name centos6 centos:6.9 /bin/bash
-it 分配交互式的终端
--name 指定容器的名字
/bin/sh覆盖容器的初始命令

4.9.1 选项有90个

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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
选项:
1. --add-host list
说明: 添加自定义的host-ip映射(host:ip)
示例:

2. -a , --attach list
说明: 将容器的stdin,stdout,stderr【标准输入,标准输出,错误输出】关联到本地shell中,在执行docker run时,将所有输入输出指定到本地shell中,若执行时携带此参数,可以指定将stdin,stdout,stderr的某一个或某几个关联到本地shell

3. --blkio-weight uint16
说明: 限制容器读写权重,当宿主机有1个以上容器时,可以设置容器的读写优先权,权重值在10~1000之间,0为关闭权重(默认)

4. --blkio-weight-device list
说明: 设置针对指定设备的权重,权重值在10~1000之间,且优先级高于blkio.weight
示例: --blkio-weight-device "/dev/sda:100" ubuntu:latest

5. --cap-add list
说明:增强linux能力,在docker容器内限制了大部分的linux能力,在之前,需要开启这些功能需要结合--privileged开启特权模式才能使用这些参数,考虑到安全性,可以通过该参数来开启指定的linux功能【默认开启的功能及全部定义详见docker runc】,若参数为all则默认开启所有linux能力

6. --cap-drop list
说明: 移除linux能力

7. --cgroup-parent str
说明: 配置容器的控制组,继承该控制组的资源限制模式。

8. --cidfile str
说明: 创建一个容器,并将该容器的id输出到某一文件中,若该文件存在,则会返回一个错误

9. --cpu-period int
说明: 与参数--cpu-quota配合使用,用于设定cpu从新分配资源的时间周期,时间周期结束后,会对cpu进行重新分配

10. --cpu-quota int
说明:与参数--cpu-period配合使用,用于设定该容器在资源分配周期内占用cpu的时间,若容器设定--cpu-quota=1000000 --cpu-period=500000,则该容器在这个时间周期内权重为50%,这两个参数主要是提升宿主机内某一容器的权重比,可以用来解决宿主机内若干容器的资源抢占导致重要容器cpu性能不足的场景。该模式应用于Linux 的CFS模式

11. --cpu-rt-period int
说明: --cpu-period的微秒版

12. --cpu-rt-runtime int
说明: 在一个cpu资源分配周期内,优先保证某容器的cpu使用的最大微秒数。例如,默认周期为 1000000 微秒(1秒),设置 --cpu-rt-runtime=950000 可确保使用实时调度程序的容器每 1000000 微秒可运行 950000 微秒,并保留至少 50000 微秒用于非实时任务

13. -c, --cpu-shares int
说明: CPU份额(相对权重),默认为0

14. --cpus decimal
说明: 设置容器使用cpu的数量
示例: --cpus=".5" ubuntu:latest

15. --cpuset-cpus str
说明: 设置容器允许在哪个cpu上执行该进程,譬如--cpuset-cpus="1,3"为指定在cpu 1 和cpu 3上执行,--cpuset-cpus="0-2"为指定在cpu0,cpu1,cpu2上执行
示例: --cpuset-cpus="1,3"

16. --cpuset-mems str
说明: 同参数--cpuset-cpus,但该参数是作用于NUMA 架构的 CPU

17. -d, --detach
说明: 后台运行容器并返回容器ID

18. --detach-keys str
说明: 设置容器的键盘映射键位,在容器被链接到前台时,若宿主机的键盘键位与容器键位冲突,可以使用该指令对容器的键位进行重新映射

19. --device list
说明: 向容器中添加主机设备

20. --device-cgroup-rule list
说明: 将宿主机的设备添加到cgroup规则列表中

21. --device-read-bps list
说明: 限制设备的读取速率(每秒字节数)
22. --device-read-iops list
说明: 限制设备的读取速率(每秒IO操作次数)
23. --device-write-bps list
说明: 限制设备的写速率(每秒字节数)
24. --device-write-iops list
说明: 限制设备的写速率(每秒IO操作次数)
25. --disable-content-trust
说明: 忽略镜像的校验(默认为true)

26. --dns list
说明: 指定容器使用的DNS服务器,默认与主机一致
27. --dns-option list
说明: 设置DNS选项,同修改/etc/resolv.conf文件
28. --dns-search list
说明: 指定容器DNS搜索域名,默认与主机一致
29. -entrypoint str
说明: 覆盖映像默认的entrypoint

30. -e, --env list
说明: 给容器设置环境变量
31. --env-file list
说明: 从指定文件读取环境变量

32. --expose list
说明: 开放一个或多个端口
33. --group-add list
说明: 为容器添加用户组

34. --health-cmd str
说明: 执行一个健康检查命令
35. --health-interval duration
说明: 配合--health-cmd参数,设置健康检查的执行的间隔时间(ms /s / m / h)
36. --health-retries int
说明: 配合--health-cmd参数,设置健康检查命令失败重试的次数
37. --health-statr-period duration
说明: 配合--health-cmd参数,设置健康检查的启动时间(ms /s / m / h)
38. --health-timout
说明: 配合--health-cmd参数,设置健康检查命令超时时间(ms /s / m / h)

39. -h, --hostname str
说明: 指定容器的hostname
示例: docker run --name consul -p 8500:8500 -h consul -d progrium/consul -server -bootstrap
-h指定了容器的主机名为consul

40. --init
说明: 在容器中新增一个守护进程,来预防该容器出现僵尸进程的可能性

41. -i, --interactive
说明: 以交互模式运行容器,常与-t同时使用

42. --ip str
说明: 设置容器的IPv4地址
43. --ip6 str
说明: 设置容器的IPv6地址

44. --ipc str
说明: 使用IPC模式
45. --isolation str
说明: 使用容器隔离, 该参数拥有三个值<br>(1)default 即与使用dockerd --exec-opt的参数默认效果相同<br>(2)process 使用linux内核命名空间进行隔离,该参数不支持windows环境。<br>(3)使用微软的Hyper-V虚拟技术进行隔离,该参数仅限windows环境

46. --kernel-memory bytes
说明: 限制该容器内核的内存使用
47. -l, --label list
说明: 设置该容器的元数据
48. --label-file list
说明: 通过本地文件导入元数据至该容器

49. --link list
--link <name or id>:alias
其中,name和id是源容器的name和id,alias是源容器在link下的别名。
说明: 指定容器间的关联,使用其他容器的IP、env等信息
示例: docker run -it --name mycentos4 --restart=always --link mycentos2:centos2 --link mycentos3:centos3 -d centos

50. --link-local-ip list
说明: 容器IPv4/IPv6链路本地地址

51. --log-driver str
说明: 设置日志工具,用于动态收集日志
52. --log-opt list
说明: 配合参数--log-driver使用,用于日志配置

53. --mac-address str
说明: 设置该容器mac地址

54. -m, --memory byte
说明: 设置容器使用的最大内存
55. --memory-reservation bytes
说明: 软限制该容器的内存使用,当宿主机内存空闲时,该容器的内存使用可以一定比例超出限制,但当宿主机内存紧张时,会强制该容器内存使用限制在该参数之内

56. --memory-swap bytes
说明: 内存交换分区大小限制。配合参数--memory使用,且最小内存交换限制应该大于内存限制。该参数有4种情况:<br> (1)不设置--memory与该参数:则该容器默认可以用完宿舍机的所有内存和 宿主机 swap 分区。<br> (2)设置--memory 50MB 不设置--memory-swap(默认为0):则--memory-swap值等于限制内存大小,即该容器能够申请的最大内存为100MB。<br> (3)设置--memory 50MB --memory-swap为-1:则该容器最大可以申请的内存为50MB+宿主机swap分区大小 <br> (4)设置--memory 50MB --memory-swap 100MB:则该容器可以申请的最大内存为100MB-50MB=50MB

57. --memory-swappiness int
说明: 用于调整虚拟内存的控制行为,为0~100之间的整数。在linux内存管理中,将内存中不活跃的页交换至硬盘中,以缓解内存紧张,该参数设置为0则认定该容器所有内存中的内容均不允许交换至硬盘,用以保障最大性能,若设置为100,则认为该容器所有内存中的数据均可以交换至硬盘。

58. --mount mount
说明: 将文件系统挂载到容器
59. --name str
说明: 为容器指定一个名称

60. --network str
说明: 将容器连接到网络,支持bridge/host/none/container四种类型
61. --network-alias list
说明: 设置该容器在网络上的别名
62. --no-healthcheck
说明: 禁止一切健康检查行为
63. --oom-kill-disable
说明: 设置是否禁止oom kill行为,若该容器因为需要大量请求内存,导致宿主机内存不足或触发到内存限制,导致杀死该容器进程,若设置该参数为true则会关闭这个检查

64. --oom-score-adj int
说明: 调整主机的OOM首选项(从-1000到1000)此处需要注意的是,非专业人士docker官方是不建议用户修改--oom-score-adj--oom-kill-disable这两个参数的

65. --pid string
说明: 设置该容器的pid
66. --pids-limit int
说明: 限制该容器所能创建的最大进程数。默认-1不限制

67. --privileged
说明: 在该容器上开启特权模式,让该容器拥有所有的linux能力

68. -p, --publish list
说明: 将容器的端口映射到宿主机上
示例: docker run -p 8000:8000 ubuntu

69. --publish-all
说明: 将该容器的所有端口均随机映射至宿主机
70. --read-only
说明: 设置该容器只读
71. --restart str
说明: 在退出该容器时重启该容器,默认为no
其他: --restart=always 重启Docker时,容器自动启动。
可以后期添加:docker container update --restart=always 容器名

72. --rm
说明: 当容器退出时自动删除它

73. --runtime str
说明: 指定该容器关联一个runtime的容器,在使用该参数时注意runtime specified必须在dockerd --add-runtime注册过

74. --security-opt list
说明: 设置安全属性,在windows上使用CredentialSpec模块来执行身份识别
75. --shm-size bytes
说明: 设置/dev/shm/目录的大小

76. --sig-proxy
说明: 代理进程所接收的所有字符,当指定--sig-proxy=false时,ctrl+c和ctrl+d 不会传递信号给docker进程而关闭容器,默认为true

77. --stop-signal str
说明: 停止带有信号的容器,在linux环境下输入kill -l,就可以看到所有信号名称,可以指定容器发出某种信号时停止该容器,譬如SIGKILL,默认为SIGTERM

78. --stop-timeout int
说明: 设置容器调用命令超时后自动退出。该参数可以设置容器在调用命令时导致超时后多少秒退出,0(默认)为永远不退出,该参数单位为秒

79. --storage-opt list
说明: 容器的存储设置,可以分别指定dm.basesize、dm.loopdatasize、dm.loopmetadatasize等项
示例: --storage-opt dm.basesize=20G

80. --sysctl map
说明: 内核参数,对应修改容器中的/etc/sysctl.conf文件
81. --tmpfs list
说明: 指定挂载一个tmpfs目录,tmpfs是一种虚拟内存文件系统。

82. -t, -tty
说明: 打开一个伪终端,常与-i同时使用
83. --ulimit ulimit
说明: 设置容器的ulimit选项

84. -u, --user str
说明: 用户名或UID

85. --userns str
说明:

86. --uts str
说明: 使用uts命名空间

87. -v, --volume list
说明: 在该容器下挂载卷 先在本地mkdir /my/own/datadir 目录
示例: docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql

88. --volume-driver str
说明: 容器的可选卷驱动程序

89. --volumes-from list
说明: 从指定容器装入卷

90. -w, --workdir str
说明: 指定容器的工作目录

4.10 docker create [optoins] image [command] [arg...] // 创建一个新容器
参数 同run

5. 镜像管理

5.1 docker images [options] [repository[:tag]] //列出镜像

选项 说明 示例
-a --all 列出所有镜像
--digests 显示摘要信息(sha256)
-f --filter filter 过滤
--format str ``
--no-trunc ``
-q --quiet 仅显示ID

5.2 docker rmi [options] image...//删除镜像

选项 说明 示例
-f --force 强制删除
--no-prune ``

5.4 docker tag src_image[:tag] tar_image[:tag] // 创建某个镜像的副本

示列: docker image tag openspug/spug:latest openspug/spug:v1

5.5 docker history [options] image //查看指定镜像的创建历史。

选项 说明 示例
--format str 使用Go模板打印漂亮的图像
-H --human 以可读的形式打印日志和大小
--no-trunc 不截断输出
-q --quiet 仅显示数字标识

5.6 docker save [options] image... //将指定镜像保存为tar归档文件

选项 说明 示例
-o --output str 输出至指定的文件

5.6 docker import [options] file/url/- [repository[:tag]] //由tar文档生成镜像

选项 说明 示例
-c , --change list 用dockerfile指令创建镜像
-m, --message str 为创建的镜像设置描述信息

5.7 docker build [options] path / url / - //使用dockerfile创建镜像

选项 说明 示例
--add-host list ``
--build-arg list 设置镜像创建时的变量
--cache-from str ``
--cgroup-parent str ``
--compress 使用zip压缩构建上下文
--cpu-period int 限制 CPU CFS周期
--cpu-quota int 限制 CPU CFS配额
-c --cpu-shars int 设置 cpu 使用权重
--cpuset-cpus str 指定使用的CPU id
--cpuset-mems str 指定使用的内存 id
--disable-content-trust 忽略校验,默认开启
-f --file str 指定要使用的Dockerfile路径
--force-rm 设置镜像过程中删除中间容器
--iidfile str 指定保存镜像id的文件
--isolation str 使用容器隔离技术
--label list 设置镜像使用的元数据
-m --memory bytes 设置内存最大值
--memory-swap bytes 设置Swap的最大值为内存+swap,"-1"表示不限swap
--network str 设置镜像网络模式
--no-cache 创建镜像的过程不使用缓存
--pull 尝试去更新镜像的新版本
-q, --quiet 只输出镜像ID
--rm 设置镜像成功后删除中间容器
--security-opt str 安全设置
--shm-size bytes 设置/dev/shm的大小,默认值是64M
-t, --tag list 指定要创建的目标镜像名
--target str 设置要生成的目标生成阶段
--ulimit ulimit Ulimit配置

6,volume卷管理

docker volume 可以理解成一个container中的磁盘,既可以跟随container的生命周期(在Dockerfile 中定义使用VOLUME关键字),也可以单独创建,永久存储,直到用docker volume rm 命令删除。

1.查看volume

1
docker volume ls

2.创建volume

1
2
3
4
5
6
7
8
9
docker volume create [options] 卷名 
options选项有两个参数
-d 指定存储设备,默认是local
-o 直接卷的存储路径 默认是 map[]
示例1:
docker volume create -d local-persist -o mountpoint=/data/images --name=myvoluem
示例2: 参数默认
docker volume create vo_logs
这时候卷的存放路径是/var/lib/docker/volumes/vo_logs/_data

3.查看volume的详细信息

1
docker volume inspect vo_logs

4.删除卷

1
2
3
4
5
6
7
docker volume rm -f vo_logs
-f 表示强制删除

docker volume prune [options]
删除未被任何容器使用的本地卷
--filter 提供过滤值
-f , --force 不提示确认信息,直接删除

5.卷的使用

1
2
3
4
5
6
7
docker run -t --name mysql --restart=always -p 3306:3306 -v myvoluem:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mypassword -d mysql

这时候容器里的/var/lib/mysql的数据就存在myvoluem这个数据卷里了,

第二种是本地挂载
绑定宿主目录的概念很容易理解,就是将宿主目录绑定到容器中的某个目录位置。这样容器可以直接访问宿主目录的文件。其形式是
docker run --name some-mysql -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql

6.卷和挂载目录有什么区别?

卷 (Docker Volume) 是受控存储,是由 Docker 引擎进行管理维护的。因此使用卷,你可以不必处理 uid、SELinux 等各种权限问题,Docker 引擎在建立卷时会自动添加安全规则,以及根据挂载点调整权限。并且可以统一列表、添加、删除。另外,除了本地卷外,还支持网络卷、分布式卷。

而挂载目录那就没人管了,属于用户自行维护。你就必须手动处理所有权限问题。特别是在 CentOS 上,很多人碰到 Permission Denied,就是因为没有使用卷,而是挂载目录,而且还对 SELinux 安全权限一无所知导致。

7. 其他命令

7.1 docker info //显示docker系统信息

7.2 docker version 或者docker -v // 显示docker相关的版本信息

评论


:D 一言句子获取中...

加载中,最新评论有1分钟缓存...