目录
- 简介
- 镜像仓库
- login
- pull
- push
- search
- 本地镜像管理
- images
- rmi
- tag
- build
- history
- save
- load
- import
- 容器操作
- ps
- inspect
- top
- attach
- events
- logs
- wait
- export
- port
- stats
- 容器生命周期管理
- run
- start/stop/restart
- kill
- rm
- pause/unpause
- create
- exec
- update
- 容器rootfs命令
- commit
- cp
- diff
- rename
- docker管理命令
- Docker选项
简介
Docker的命令分为使用命令和管理命令,而本文对Docker的使用命令和管理命令进行了汇总和样例提示,以便于他人学习和本人回顾使用。
Docker不仅提供了在各个环节下使用的命令,还提供了DockerAPI供我们使用Http来和Docker进行交互,从而开发我们自己的Docker。
由于命令太多,下面给出一个大致的清单供大家对所有命令有一个初步了解,然后就是哪里不会点哪里。
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 |
管理命令:
container 管理容器
image 管理镜像
network 管理网络
node 管理Swarm节点
plugin 管理插件
secret 管理Docker secrets
service 管理服务
stack 管理Docker stacks
swarm 管理Swarm集群
system 查看系统信息
volume 管理卷
如:docker container ls 显示所有容器
普通命令:
// 开发应该熟练掌握的:
images 查看镜像列表
rmi 删除镜像
save 将指定镜像保存成 tar 归档文件
load 从存档或者STDIN加载镜像
build 从一个DockerFile构建镜像
commit 从容器创建一个镜像
create 创建一个容器
run 创建一个新的容器并运行一个命令
rename 重命名容器
start 启动容器
stop 停止容器
restart 重启容器
rm 删除容器
logs 获取一个容器的日志
exec 在正在运行的容器中运行命令
cp 从容器和主机文件系统之间拷贝文件
ps 查看容器列表
// 运维应该熟练掌握的:
login 登陆docker镜像仓库
logout 退出docker镜像仓库
search 从Docker Hub搜索镜像
pull 从镜像仓库拉取镜像
push 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库
tag 标记本地镜像,将其归入某一仓库
export 将容器的文件系统导出为tar存档
import 从归档文件中创建镜像
info 显示系统范围的信息
version 显示Docker的版本信息
stats 显示(实时)容器资源使用情况的统计信息
inspect 显示Docker对象的低级信息(查看对象详情)
diff 显示容器文件系统上的更改(查看容器变化)
events 显示从服务器获取实时事件(可查看docker的改动)
port 显示端口映射或容器的特定映射列表(端口查看)
top 显示一个容器中运行的进程(查看进程)
history 显示镜像的历史记录
attach 进入一个运行的容器
pause 暂停一个或多个容器中的所有进程
unpause 恢复容器中所有的进程
kill kill运行中的容器
wait 阻塞直到容器停止,然后打印退出代码
update 更新容器配置 |
镜像仓库
login
dockerlogin : 登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
docker logout : 登出一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
语法:
1 |
docker login /logout (-$) [SERVER] |
-u 登陆的用户名
-p 登陆的密码
实例:
登陆到Docker Hub
1 |
docker login -u 用户名 -p 密码 |
登出Docker Hub
1 |
docker logout |
pull
dockerpull : 从镜像仓库中拉取或者更新指定镜像
语法:
1 |
docker pull (-$) NAME[:TAG|@DIGEST] |
-a,all 拉取所有 tagged 镜像
–disable-content-trust 忽略镜像的校验,默认开启
实例:
从Docker Hub下载java最新版镜像。
1 |
docker pull java |
从Docker Hub下载REPOSITORY为java的所有镜像。
1 |
docker pull -a java |
push
docker push : 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库
语法:
1 |
docker push (-$) NAME[:TAG] |
–disable-content-trust 忽略镜像的校验,默认开启
实例:
上传本地镜像myapache:v1到镜像仓库中
1 |
docker push myapache:v1 |
推送镜像库到私有源
1 |
docker push 192.168.0.100:5000 /ubuntu |
search
docker search : 从Docker Hub查找镜像
语法:
1 |
docker search (-$) TERM |
-automated 只列出 automated build类型的镜像;
–no-trunc 显示完整的镜像描述;
-s 列出收藏数不小于指定值的镜像。
实例:
从Docker Hub查找所有镜像名包含java,并且收藏数大于10的镜像
1 |
docker search -s 10 java |
1
2
3
4
5
6
7
8 |
runoob@runoob:~$ docker search -s 10 java
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
java Java is a concurrent, class-based... 1037 [OK]
anapsix /alpine-java Oracle Java 8 (and 7) with GLIBC ... 115 [OK]
develar /java 46 [OK]
isuper /java-oracle This repository contains all java... 38 [OK]
lwieske /java-8 Oracle Java 8 Container - Full + ... 27 [OK]
nimmis /java-centos This is docker images of CentOS 7... 13 [OK] |
本地镜像管理
images
docker images : 列出本地镜像。
语法:
1 |
docker images (-$) [REPOSITORY[:TAG]] |
-a 列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层)
–digests 显示镜像的摘要信息
-f 显示满足条件的镜像
–format 指定返回值的模板文件
–no-trunc 显示完整的镜像信息
-q 只显示镜像ID。
实例:
查询出无用的镜象
1 |
docker images -f dangling= true |
列出本地镜像中REPOSITORY为alpine的镜像列表。
1 |
docker images alpine |
1
2
3
4 |
[root@master ~] # docker images alpine
REPOSITORY TAG IMAGE ID CREATED SIZE
alpine 3.9 cdf98d1859c1 3 months ago 5.53MB
alpine latest cdf98d1859c1 3 months ago 5.53MB |
rmi
docker rmi : 删除本地一个或多少镜像。
语法:
1 |
docker rmi (-$) |
-f,–force 强制删除镜像
–no-prune 不移除该镜像的过程镜像,默认移除
实例:
删除所有镜像
1 |
docker rmi $(docker images -q) |
强制删除镜像名称中包含"doss-api"的镜像
1 |
docker rmi --force $(docker images | grep doss-api | awk '{print $3}' ) |
批量删除无用镜象(三种方式都可以,想强制删除可在rmi后加-f)
1
2
3 |
docker rmi $(docker images | grep "^" | awk "{print $3}" )
docker images | grep none | awk '{print $3}' | xargs docker rmi
docker rmi $( docker images -f dangling= true ) |
tag
docker tag : 标记本地镜像,将其归入某一仓库。
语法:
1 |
docker tag (-$) IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG] |
实例:
将镜像ubuntu:15.10标记为 runoob/ubuntu:v3 镜像。
1 |
docker tag ubuntu:15.10 runoob /ubuntu :v3 |
1
2
3
4 |
root@runoob:~ # docker tag ubuntu:15.10 runoob/ubuntu:v3
root@runoob:~ # docker images runoob/ubuntu:v3
REPOSITORY TAG IMAGE ID CREATED SIZE
runoob /ubuntu v3 4e3b13c8a266 3 months ago 136.3 MB |
build
docker build 命令用于使用 Dockerfile 创建镜像。
语法:
1 |
docker build (-$) PATH | URL | - |
–build-arg=[] 设置镜像创建时的变量
–cpu-shares 设置 cpu 使用权重
–cpu-period 限制 CPU CFS周期
–cpu-quota 限制 CPU CFS配额
–cpuset-cpus 指定使用的CPU id
–cpuset-mems 指定使用的内存 id
–disable-content-trust 忽略校验,默认开启
-f 指定要使用的Dockerfile路径
–force-rm 设置镜像过程中删除中间容器
–isolation 使用容器隔离技术
–label=[] 设置镜像使用的元数据
-m 设置内存最大值
–memory-swap 设置Swap的最大值为内存+swap,"-1"表示不限swap
–no-cache 创建镜像的过程不使用缓存
–pull 尝试去更新镜像的新版本
–quiet, -q 安静模式,成功后只输出镜像 ID
–rm 设置镜像成功后删除中间容器
–shm-size 设置/dev/shm的大小,默认值是64M
–ulimit Ulimit配置。
–tag, -t 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
–network 默认 default。在构建期间设置RUN指令的网络模式
实例:
使用当前目录的 Dockerfile 创建镜像,标签为 runoob/ubuntu:v1。
1 |
docker build -t runoob /ubuntu :v1 . |
使用URL github.com/creack/docker-firefox 的 Dockerfile 创建镜像。
1 |
docker build github.com /creack/docker-firefox |
也可以通过 -f Dockerfile 文件的位置:
1 |
docker build -f /path/to/a/Dockerfile . |
在 Docker 守护进程执行 Dockerfile 中的指令前,首先会对 Dockerfile 进行语法检查,有语法错误时会返回:
1
2
3 |
docker build -t test /myapp .
Sending build context to Docker daemon 2.048 kB
Error response from daemon: Unknown instruction: RUNCMD |
history
docker history : 查看指定镜像的创建历史。
语法:
1 |
docker history (-$) IMAGE |
-H 以可读的格式打印镜像大小和日期,默认为true;
–no-trunc 显示完整的提交记录;
-q 仅列出提交记录ID。
save
docker save : 将指定镜像保存成 tar 归档文件。
语法:
1 |
docker save (-$) IMAGE [IMAGE...] |
-o 输出到的文件。
实例:
导出镜像
1 |
docker save -o /root/mytomcat7 . tar .gz docker.io /tomcat :7.0.77-jre7 |
或
1 |
docker save docker.io /tomcat :7.0.77-jre7 > /root/mytomcat7 . tar .gz |
load
docker load : 导入使用 docker save 命令导出的镜像。
语法:
1 |
docker load (-$) |
-i 指定导出的文件。
-q 精简输出信息。
实例
导入镜像
1
2
3 |
docker load -i ubuntu. tar
docker load < ubuntu. tar
docker load < /root/mytomcat7 . tar .gz |
import
docker import : 从归档文件中创建镜像。
语法:
1 |
docker import (-$) file |URL|- [REPOSITORY[:TAG]] |
-c,–change 将Dockerfile指令应用于创建的映像
-m,–message 为导入的镜像设置说明信息
–platform 如果服务器具有多平台功能,则设置平台
实例
从镜像归档文件my_ubuntu_v3.tar创建镜像,命名为runoob/ubuntu:v4
1
2
3
4
5 |
runoob@runoob:~$ docker import my_ubuntu_v3. tar runoob /ubuntu :v4
sha256:63ce4a6d6bc3fabb95dbd6c561404a309b7bdfc4e21c1d59fe9fe4299cbfea39
runoob@runoob:~$ docker images runoob /ubuntu :v4
REPOSITORY TAG IMAGE ID CREATED SIZE
runoob /ubuntu v4 63ce4a6d6bc3 20 seconds ago 142.1 MB |
容器操作
ps
dockerps : 列出容器
语法:
1 |
docker ps (-$) |
-a, –all 显示所有容器(默认显示正在运行)
-n 显示最后创建的n个容器(包括所有状态)(默认值-1)
示例:docker ps -n2-l,–latest 显示最新创建的容器(包括所有状态)
-q, –quiet 只显示数字id
-s, –size 显示总文件大小
–no-trunc 不截断输出
-f, –filter 根据提供的条件过滤输出
过滤条件如下:
Filter | Description
—|—
id | 容器的ID
name | 容器的Name
label | 表示键或键值对的任意字符串。表示为<key>或<key>=<value>
exited | 表示容器退出代码的整数。只有对所有人有用。
status | created,restarting,running,removing,paused,exited,dead之一
ancestor| 筛选指定镜像的容器,例如<image-name>[:<tag>],<image id>, or <image@digest>
before or since | 筛选在给定容器ID或名称之前或之后创建的容器
volume | 运行已挂载给定卷或绑定挂载的容器的筛选器。
network | 过滤器运行连接到给定网络的容器。
publish or expose | 筛选发布或公开给定端口的容器,例如<port>[/<proto>] or <startport-endport>/[<proto>]
health | 根据容器的健康检查状态过滤容器,例如starting, healthy, unhealthy or none.
isolation | 仅Windows守护进程,例如default, process, or hyperv.
is-task | 筛选服务的“任务”容器。布尔选项(true or false)示例:
docker ps -f name=^'modality'
docker ps –filter name=nginx
docker ps -a –filter exited=0
docker ps –filter status=running
docker ps –filter expose=3306
–format 使用Go模板漂亮地打印容器
过滤条件如下:
Placeholder | Description
—|—
.ID | 容器的ID
.Image | 镜像的ID
.Command | 引用命令
.CreatedAt | 创建容器的时间
.RunningFor | 自容器启动以来的运行时长
.Ports | 暴露的端口
.Status | 容器状态
.Size | 容器的磁盘大小
.Names | 容器的名称
.Labels | 分配给容器的所有标签
.Label | 此容器的特定标签的值,例如`{{.Label "com.docker.swarm.cpu"}}`
.Mounts | 容器挂载的卷
.Networks | 容器所用的网络名称
示例:
1 |
docker ps -- format "{{.ID}}: {{.Names}}: {{.Command}}" |
常用监控命令:
查询最近5个容器
1 |
docker ps -a -n=5 |
监控容器数量