目录
docker概况
1.docker version 版本查看
2.docker info 显示系统范围的信息
本地镜像管理
1.docker images 列出本地镜像
2.docker rmi 删除本地一个或多少镜像。
3.docker tag 标记本地镜像,将其归入某一仓库。
4.docker history 查看指定镜像的创建历史。
5.docker save 将指定镜像保存成 tar 归档文件。
6.docker load 导入使用docker save命令导出的镜像。
7.docker import 从归档文件中创建镜像。
镜像仓库
1.Docker login/logout 登录/退出
2.docker pull 从镜像仓库中拉取或者更新指定镜像
3.docker push 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库
4.docker search 从Docker Hub查找镜像
容器生命周期管理
1.docker run 创建一个新的容器并运行一个命令
2.Docker start/stop/restart 命令
3.docker kill 杀掉一个运行中的容器。
4.docker rm 删除一个或多少容器
5.Docker pause/unpause 命令
6.docker create 创建一个新的容器但不启动它
7.docker exec 在运行的容器中执行命令,退出使用exit。
容器操作
1.docker ps 列出容器
2.docker inspect 获取容器/镜像的元数据。
3. docker top 查看容器中运行的进程信息,支持 ps 命令参数。
4.docker attach 连接到正在运行中的容器。
5.docker events 从服务器获取实时事件
6.docker logs 获取容器的日志
7.docker wait 阻塞运行直到容器停止,然后打印出它的退出代码。
8.docker export 将文件系统作为一个tar归档文件导出到STDOUT
容器rootfs命令
1.docker commit 从容器创建一个新的镜像。
2. docker cp 用于容器与主机之间的数据拷贝。
3.docker diff 检查容器里文件结构的更改。
docker概况
1.docker version 版本查看
docker version [OPTIONS]
#指定格式
docker version --format , -f
eg:
#展示servier版本
docker version --format '{{.Server.Version}}'
#json格式
docker version --format '{{json .}}'2.docker info 显示系统范围的信息
docker info [OPTIONS]
#指定格式
docker info --format , -f
eg:
#json格式
docker info --format '{{json .}}'本地镜像管理
1.docker images 列出本地镜像
docker images [OPTIONS] [REPOSITORY[:TAG]]
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 77af4d6b9913 19 hours ago 1.089 GB
committ latest b6fa739cedf5 19 hours ago 1.089 GB
#images后面可以+REPOSITORY:tag来过滤
$ docker images java
REPOSITORY TAG IMAGE ID CREATED SIZE
java 8 308e519aac60 6 days ago 824.5 MB
java 7 493d82594c15 3 months ago 656.3 MB
java latest 2711b1d6f3aa 5 months ago 603.9 MB
$ docker images java:8
REPOSITORY TAG IMAGE ID CREATED SIZE
java 8 308e519aac60 6 days ago 824.5 MB
指定格式
Placeholder | Description |
| Image ID |
| Image repository |
| Image tag |
| Image digest |
| Elapsed time since the image was created |
| Time when the image was created |
| Image disk size |
$ docker images --format "{{.ID}}: {{.Repository}}"
77af4d6b9913: <none>
b6fa739cedf5: committ
78a85c484f71: <none>
30557a29d5ab: docker
$ docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"
IMAGE ID REPOSITORY TAG
77af4d6b9913 <none> <none>
b6fa739cedf5 committ latest
78a85c484f71 <none> <none>
30557a29d5ab docker latest
5ed6274db6ce <none> <none>
#展示所有的景象(默认是隐藏中间的镜像)
docker images --all , -a
#仅展示镜像id
docker images --quiet , -q
#展示完整的镜像id
docker images --no-trunc
#使用v2或更高版本格式的镜像具有名为DIGEST的内容可寻址标识符,该命令可以展示DIGEST
$ docker images --digests
REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE
localhost:5000/test/busybox <none> sha256:cbbf2f9a99b47fc460d422812b6a5adff7dfee951d8fa2e4a98caa0382cfbdbf 4986bf8c1536 9 weeks ago 2.43 MB
#添加过滤条件,条件以key=value形式添加,多个条件需要重复多次--filter , -f
docker images --filter , -f
#目前支持的过滤方式有
#########1 过滤未标记的景象#############################################
$ docker images --filter "dangling=true"
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 8abc22fbb042 4 weeks ago 0 B
<none> <none> 48e5f45168b9 4 weeks ago 2.489 MB
#未标记的景象可以通过潜逃命令删除
$ docker rmi $(docker images -f "dangling=true" -q)
8abc22fbb042
48e5f45168b9
#########2 过滤标签###################################################
$ docker images --filter "label=com.example.version"
REPOSITORY TAG IMAGE ID CREATED SIZE
match-me-1 latest eeae25ada2aa About a minute ago 188.3 MB
match-me-2 latest dea752e4e117 About a minute ago 188.3 MB
$ docker images --filter "label=com.example.version=1.0"
REPOSITORY TAG IMAGE ID CREATED SIZE
match-me latest 511136ea3c5a About a minute ago 188.3 MB
#########3 展示某个镜像之前创建的镜像列表#################################
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
image1 latest eeae25ada2aa 4 minutes ago 188.3 MB
image2 latest dea752e4e117 9 minutes ago 188.3 MB
image3 latest 511136ea3c5a 25 minutes ago 188.3 MB
$ docker images --filter "before=image1"
REPOSITORY TAG IMAGE ID CREATED SIZE
image2 latest dea752e4e117 9 minutes ago 188.3 MB
image3 latest 511136ea3c5a 25 minutes ago 188.3 MB
#########4 展示某个镜像之后创建的镜像列表#################################
$ docker images --filter "since=image3"
REPOSITORY TAG IMAGE ID CREATED SIZE
image1 latest eeae25ada2aa 4 minutes ago 188.3 MB
image2 latest dea752e4e117 9 minutes ago 188.3 MB
#########5 通过特殊的匹配格式匹配的镜像列表#################################
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest e02e811dd08f 5 weeks ago 1.09 MB
busybox uclibc e02e811dd08f 5 weeks ago 1.09 MB
busybox musl 733eb3059dce 5 weeks ago 1.21 MB
busybox glibc 21c16b6787c6 5 weeks ago 4.19 MB
$ docker images --filter=reference='busy*:*libc'
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox uclibc e02e811dd08f 5 weeks ago 1.09 MB
busybox glibc 21c16b6787c6 5 weeks ago 4.19 MB2.docker rmi 删除本地一个或多少镜像。
docker rmi [OPTIONS] IMAGE [IMAGE...]
#强制删除
docker rmi --force , -f
#不移除该镜像的过程镜像,默认移除
docker rmi --no-prune3.docker tag 标记本地镜像,将其归入某一仓库。
docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
#将镜像ubuntu:15.10标记为 runoob/ubuntu:v3 镜像。
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 MB4.docker history 查看指定镜像的创建历史。
docker history [OPTIONS] IMAGE
#-H 以可读的格式打印镜像大小和日期,默认为true;
docker history --no-trunc -q -H5.docker save 将指定镜像保存成 tar 归档文件。
docker save [OPTIONS] IMAGE [IMAGE...]
#输出到的文件
docker save -o
eg:
runoob@runoob:~$ docker save -o my_ubuntu_v3.tar runoob/ubuntu:v36.docker load 导入使用docker save命令导出的镜像。
docker load [OPTIONS]
#指定导出的文件。
docker load -i
#精简输出信息。
docker load -q
#导入镜像
docker load -i ubuntu.tar
docker load < ubuntu.tar7.docker import 从归档文件中创建镜像。
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
options:
-c :应用docker 指令创建镜像;
-m :提交时的说明文字;
eg:从镜像归档文件my_ubuntu_v3.tar创建镜像,命名为runoob/ubuntu:v4
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
镜像仓库
1.Docker login/logout 登录/退出
docker login [OPTIONS] [SERVER]
docker login -u 用户名 -p 密码
docker logout [OPTIONS] [SERVER]
docker logout2.docker pull 从镜像仓库中拉取或者更新指定镜像
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
#pull所有已打过标签的镜像
docker pull --all-tags , -a
#忽略镜像的校验,默认开启
docker pull --disable-content-trust3.docker push 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库
docker push [OPTIONS] NAME[:TAG]
忽略镜像的校验,默认开启
docker push --disable-content-trust4.docker search 从Docker Hub查找镜像
docker search [OPTIONS] TERM
#只列出 automated build类型的镜像,推荐使用filter
docker search --automated
#列出至少有N颗星星的镜像,推荐使用filter
docker search --stars=N
#显示完整的镜像描述;
docker search --no-trunc
#限制查询结果数 默认25
docker search --limit#格式化结果
docker search --formatPlaceholder | Description |
| Image Name |
| Image description |
| Number of stars for the image |
| “OK” if image is official |
| “OK” if image build was automated |
{% raw %}
$ docker search --format "{{.Name}}: {{.StarCount}}" nginx
nginx: 5441
jwilder/nginx-proxy: 953
richarvey/nginx-php-fpm: 353
million12/nginx-php: 75
webdevops/php-nginx: 70
h3nrik/nginx-ldap: 35
bitnami/nginx: 23
evild/alpine-nginx: 14
million12/nginx: 9
maxexcloo/nginx: 7
{% endraw %}
{% raw %}
$ docker search --format "table {{.Name}}\t{{.IsAutomated}}\t{{.IsOfficial}}" nginx
NAME AUTOMATED OFFICIAL
nginx [OK]
jwilder/nginx-proxy [OK]
richarvey/nginx-php-fpm [OK]
jrcs/letsencrypt-nginx-proxy-companion [OK]
million12/nginx-php [OK]
webdevops/php-nginx [OK]
{% endraw %}
#过滤条件
docker search --filter , -f
#目前支持的过滤条件
###########1.stars (int - 镜像拥有的星星数)#####################################
$ docker search --filter stars=3 busybox
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
busybox Busybox base image. 325 [OK]
progrium/busybox 50 [OK]
radial/busyboxplus Full-chain, Internet enabled, busybox made... 8 [OK]
###########2.IS-AUTOMATED (boolean - true or false)-镜像是否automated#########################
$ docker search --filter is-automated busybox
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
progrium/busybox 50 [OK]
radial/busyboxplus Full-chain, Internet enabled, busybox made... 8 [OK]
###########3.is-official (boolean - true or false) - 是否是官方的###############
$ docker search --filter "is-official=true" --filter "stars=3" busybox
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
progrium/busybox 50 [OK]
radial/busyboxplus Full-chain, Internet enabled, busybox made... 8 [OK]容器生命周期管理
1.docker run 创建一个新的容器并运行一个命令
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
options:
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-P: 随机端口映射,容器内部端口随机映射到主机的高端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb": 为容器指定一个名称;
--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h "mars": 指定容器的hostname;
-e username="ritchie": 设置环境变量;
--env-file=[]: 从指定文件读入环境变量;
--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
--link=[]: 添加链接到另一个容器;
--expose=[]: 开放一个端口或一组端口;
--volume , -v: 绑定一个卷
eg:docker run -d -i -p 5672:5672 -p 15672:15672 --name 'rabbitmq'-h 'rabbit' 7c2.Docker start/stop/restart 命令
docker start :启动一个或多个已经被停止的容器
docker start [OPTIONS] CONTAINER [CONTAINER...]
docker stop :停止一个运行中的容器
docker stop [OPTIONS] CONTAINER [CONTAINER...]
docker restart :重启容器
docker restart [OPTIONS] CONTAINER [CONTAINER...]3.docker kill 杀掉一个运行中的容器。
docker kill [OPTIONS] CONTAINER [CONTAINER...]
options:
-s :向容器发送一个信号
eg:杀掉运行中的容器mynginx
runoob@runoob:~$ docker kill -s KILL mynginx
mynginx4.docker rm 删除一个或多少容器
docker rm [OPTIONS] CONTAINER [CONTAINER...]
options:
-f :通过SIGKILL信号强制删除一个运行中的容器
-l :移除容器间的网络连接,而非容器本身
-v :-v 删除与容器关联的卷
eg:强制删除容器db01、db02
docker rm -f db01 db02
移除容器nginx01对容器db01的连接,连接名db
docker rm -l db
删除容器nginx01,并删除容器挂载的数据卷
docker rm -v nginx015.Docker pause/unpause 命令
docker pause :暂停容器中所有的进程。
docker pause [OPTIONS] CONTAINER [CONTAINER...]
docker unpause :恢复容器中所有的进程。
docker unpause [OPTIONS] CONTAINER [CONTAINER...]6.docker create 创建一个新的容器但不启动它
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
语法同 docker run7.docker exec 在运行的容器中执行命令,退出使用exit。
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
options:
-d :分离模式: 在后台运行
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端
eg:
在容器 mynginx 中以交互模式执行容器内 /root/ 脚本:
runoob@runoob:~$ docker exec -it mynginx /bin/sh /root/
http://www.runoob.com/
在容器 mynginx 中开启一个交互模式的终端:
runoob@runoob:~$ docker exec -i -t mynginx /bin/bash
root@b1a0703e41e7:/#容器操作
1.docker ps 列出容器
docker ps [OPTIONS]
options:
-a :显示所有的容器,包括未运行的。
-f :根据条件过滤显示的内容。
--format :指定返回值的模板文件。
-l :显示最近创建的容器。
-n :列出最近创建的n个容器。
--no-trunc :不截断输出。
-q :静默模式,只显示容器编号。
-s :显示总的文件大小。2.docker inspect 获取容器/镜像的元数据。
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
options:
docker inspect -f :指定返回值的模板文件。
docker inspect -s :显示总的文件大小。
docker inspect --type :为指定类型返回JSON。
eg:
获取镜像mysql:5.6的元信息。
runoob@runoob:~$ docker inspect mysql:5.6
[
{
"Id": "sha256:2c0964ec182ae9a045f866bbc2553087f6e42bfc16074a74fb820af235f070ec",
"RepoTags": [
"mysql:5.6"
],
"RepoDigests": [],
"Parent": "",
"Comment": "",
"Created": "2016-05-24T04:01:41.168371815Z",
"Container": "e0924bc460ff97787f34610115e9363e6363b30b8efa406e28eb495ab199ca54",
"ContainerConfig": {
"Hostname": "b0cf605c7757",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"3306/tcp": {}
},
...
获取正在运行的容器mymysql的 IP。
runoob@runoob:~$ docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mymysql
172.17.0.33. docker top 查看容器中运行的进程信息,支持 ps 命令参数。
容器运行时不一定有/bin/bash终端来交互执行top命令,而且容器还不一定有top命令,可以使用docker top来实现查看container中正在运行的进程。
docker top [OPTIONS] CONTAINER [ps OPTIONS]4.docker attach 连接到正在运行中的容器。
docker attach [OPTIONS] CONTAINER
如果运行的/bin/bash类容器,效果相当于docker exec。要attach上去的容器必须正在运行,可以同时连接上同一个container来共享屏幕(与screen命令的attach类似)。5.docker events 从服务器获取实时事件
docker events [OPTIONS]
options:
-f :根据条件过滤事件;
--since :从指定的时间戳后显示所有事件;
--until :流水时间显示到指定的时间为止;
eg:
显示docker 2016年7月1日后的所有事件。
runoob@runoob:~/mysql$ docker events --since="1467302400"
显示docker 镜像为mysql:5.6 2016年7月1日后的相关事件。
runoob@runoob:~/mysql$ docker events -f "image"="mysql:5.6" --since="1467302400"
如果指定的时间是到秒级的,需要将时间转成时间戳。如果时间为日期的话,可以直接使用,如--since="2016-07-01"。6.docker logs 获取容器的日志
docker logs [OPTIONS] CONTAINER
options:
-f : 跟踪日志输出
--since :显示某个开始时间的所有日志
-t : 显示时间戳
--tail :仅列出最新N条容器日志7.docker wait 阻塞运行直到容器停止,然后打印出它的退出代码。
docker wait [OPTIONS] CONTAINER [CONTAINER...]8.docker export 将文件系统作为一个tar归档文件导出到STDOUT
docker export [OPTIONS] CONTAINER
options:
-o :将输入内容写到文件。
eg:
将id为a404c6c174a2的容器按日期保存为tar文件。
runoob@runoob:~$ docker export -o mysql-`date +%Y%m%d`.tar a404c6c174a2
runoob@runoob:~$ ls mysql-`date +%Y%m%d`.tar
mysql-20160711.tar9.docker port 列出指定的容器的端口映射,或者查找将PRIVATE_PORT NAT到面向公众的端口
docker port [OPTIONS] CONTAINER [PRIVATE_PORT[/PROTO]]容器rootfs命令
1.docker commit 从容器创建一个新的镜像。
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
options:
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
eg:
将容器a404c6c174a2 保存为新的镜像,并添加提交人信息和说明信息。
runoob@runoob:~$ docker commit -a "runoob.com" -m "my apache" a404c6c174a2 mymysql:v1
sha256:37af1236adef1544e8886be23010b66577647a40bc02c0885a6600b33ee28057
runoob@runoob:~$ docker images mymysql:v1
REPOSITORY TAG IMAGE ID CREATED SIZE
mymysql v1 37af1236adef 15 seconds ago 329 MB2. docker cp 用于容器与主机之间的数据拷贝。
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
options:
-L :保持源目标中的链接
eg:
将主机/www/runoob目录拷贝到容器96f7f14e99ab的/www目录下。
docker cp /www/runoob 96f7f14e99ab:/www/
将主机/www/runoob目录拷贝到容器96f7f14e99ab中,目录重命名为www。
docker cp /www/runoob 96f7f14e99ab:/www
将容器96f7f14e99ab的/www目录拷贝到主机的/tmp目录中。
docker cp 96f7f14e99ab:/www /tmp/3.docker diff 检查容器里文件结构的更改。
docker diff [OPTIONS] CONTAINER
eg:
查看容器mymysql的文件结构更改。
runoob@runoob:~$ docker diff mymysql
A /logs
A /mysql_data
C /run
C /run/mysqld
A /run/mysqld/mysqld.pid
A /run/mysqld/mysqld.sock
C /tmp另外:
windows下查看docker虚拟机ip docker-machine ip
















