目录

 

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

.ID

Image ID

.Repository

Image repository

.Tag

Image tag

.Digest

Image digest

.CreatedSince

Elapsed time since the image was created

.CreatedAt

Time when the image was created

.Size

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 MB

2.docker rmi  删除本地一个或多少镜像。

docker rmi [OPTIONS] IMAGE [IMAGE...]

#强制删除
docker rmi --force , -f


#不移除该镜像的过程镜像,默认移除
docker rmi --no-prune

3.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 MB

4.docker history  查看指定镜像的创建历史。

docker history [OPTIONS] IMAGE

#-H 以可读的格式打印镜像大小和日期,默认为true;
docker history --no-trunc -q -H

5.docker save  将指定镜像保存成 tar 归档文件。

docker save [OPTIONS] IMAGE [IMAGE...]

#输出到的文件
docker save -o 
eg:
runoob@runoob:~$ docker save -o my_ubuntu_v3.tar runoob/ubuntu:v3

6.docker load   导入使用docker save命令导出的镜像。

docker load [OPTIONS]

#指定导出的文件。
docker load -i 

#精简输出信息。
docker load -q

#导入镜像
docker load -i ubuntu.tar
docker load < ubuntu.tar

7.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 logout

2.docker pull  从镜像仓库中拉取或者更新指定镜像

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

#pull所有已打过标签的镜像
docker pull --all-tags , -a

#忽略镜像的校验,默认开启
docker pull --disable-content-trust

3.docker push  将本地的镜像上传到镜像仓库,要先登陆到镜像仓库

docker push [OPTIONS] NAME[:TAG]

忽略镜像的校验,默认开启
docker push --disable-content-trust

4.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 --format

Placeholder

Description

.Name

Image Name

.Description

Image description

.StarCount

Number of stars for the image

.IsOfficial

“OK” if image is official

.IsAutomated

“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' 7c

2.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
mynginx

4.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 nginx01

5.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 run

7.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.3

3. 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.tar

9.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 MB

2. 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