要查看所有可用操作,直接输入dockerdocker help 即可;要查看某个子命令的详细用法,输入docker help COMMMANDdocker COMMMAND --help

1 容器相关操作

运行一个容器

用法: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

常用参数:

run子命令是一个非常重要及常用的命令,它有非常多的选项参数,以下列出一些最常使用的:

-d, --detach 后台模式运行一个容器,并打印出容器的ID。
-i, --interactive 交互模式,保持标准输出为打开,即使没有被附加。
--link value 添加指向其他容器的链接,默认为[]。
--name string 给容器分配一个自定义名称(必须唯一)。如果不指定,Docker将随机分配一个名称。
--network string 连接到指定的网络(默认”default”)
-p, --publish value 将容器中的指定端口映射到主机。
-P, --publish-all 将容器中所有暴露的端口随机映射到主机。
--rm 容器运行结束后自动删除容器。
-t, --tty 分配一个伪终端
-v, --volume value 挂载一个卷,(默认 [])。

示例:

交互模式运行一个容器:

$ docker run -it ubuntu:14.04 /bin/bash 
 
  • 1

启动容器

用法: docker start [OPTIONS] CONTAINER [CONTAINER...]

示例:

$ docker start myfirstcontainer
 
  • 1

停止容器

用法: docker stop [OPTIONS] CONTAINER [CONTAINER...]

示例:

$ docker stop myfirstcontainer
 
  • 1

重启容器

用法: docker restart [OPTIONS] CONTAINER [CONTAINER...]

示例:

$ docker restart myfirstcontainer
 
  • 1

与运行中的容器进行交互

用法: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

常用参数:

-i, --interactive 交互模式,保持标准输出为打开,即使没有被附加。
-t, --tty 分配一个伪终端

示例:

$ docker exec -it myfirstcontainer /bin/bash
 
  • 1

查看容器IP

$ docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name
 
  • 1

查看容器日志

用法: docker logs [OPTIONS] CONTAINER

常用参数:

-f, --follow 实时查看容器的日志输出,类似于Linux下的tail -f命令

查看容器端口映射情况

显示容器中所有或指定端口的映射。

用法: docker port CONTAINER [PRIVATE_PORT[/PROTO]]

示例:

# 所有端口
$ docker port mynginx
80/tcp -> 0.0.0.0:8088
 
  • 1
  • 2
  • 3
# 指定端口
$ docker port mynginx 80
0.0.0.0:8088
 
  • 1
  • 2
  • 3

查看容器进程

用法: docker top CONTAINER [ps OPTIONS]

示例:

$ docker top mynginx
PID                 USER                TIME                COMMAND
2034                root                0:00                nginx: master process nginx -g daemon off;
2049                104                 0:00                nginx: worker process
 
  • 1
  • 2
  • 3
  • 4

容器重命名

用法: docker rename OLD_NAME NEW_NAME

列出容器

用法: docker ps [OPTIONS]

常用参数:

-a, --all 显示所有容器(默认只显示运行中的容器)
-n, --last int 显示最后运行的n个容器(包括所有状态,默认-1)
-l, --latest 显示最新创建的一个容器,包括所有状态

示例:

# 显示所有容器
$ docker ps -a 
 
  • 1
  • 2

删除容器

容器在删除前一般要先停止,否则需要指定-f参数。

用法: docker rm [OPTIONS] CONTAINER [CONTAINER...]

常用参数:

-f, --force 强制删除运行中的容器
-l, --link 删除指定的链接
-v, --volumes 删除容器关联的卷

示例:

$ docker rm myfirstcontainer
 
  • 1

2 镜像相关操作

从Docker Hub查找镜像

用法: docker search [OPTIONS] TERM

常用参数:

--limit int 搜索结果最大数,默认25个。

示例:

# 查找mysql镜像
$ docker search mysql
NAME                       DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mysql                      MySQL is a widely used, open-source relati...   2858      [OK]
mysql/mysql-server         Optimized MySQL Server Docker images. Crea...   188                  [OK]
centurylink/mysql          Image containing mysql. Optimized to be li...   46                   [OK]
sameersbn/mysql                                                            36                   [OK]
...
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

拉取镜像(或仓库):

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

示例:

$ docker pull ubuntu:16.04
 
  • 1

如果不指定镜像的版本(tag或digest),默认拉取的是最新的(latest)。

注:在拉取一个镜像时,请总是指定一个明确的版本,这样能确保在接下来的使用中,明确知道使用的是哪个版本。因为latest版本总是指向最新的版本,这将造成不确定性。

列出镜像:

用法: docker images [OPTIONS] [REPOSITORY[:TAG]]

示例:

# 列出所有镜像
$ docker images
 
  • 1
  • 2

构建一个镜像(Dockerfile)

构建镜像需要创建Dockerfile文件。

用法: docker build [OPTIONS] PATH | URL | -

常用参数:

-t, --tag valuename:tag格式命名并指定标签,默认 [].
-f, --file string Dockerfile的路径(全名,绝对路径或相对路径)

示例:

在当前目录下构建一个tomcat7镜像,注意结尾处的点号不要省略(.):

$ docker build -t org/tomcat:7 .
 
  • 1

构建一个镜像(commit)

从现有容器构建一个新镜像。

用法: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

常用参数:

-a, --author string 指定镜像作者
-m, --message string 提交信息(说明)

示例:

$ docker commit -m "modified timezone" -a "iquelea001" 09e03d3d42ad iquelea001/ubuntu:16.04
 
  • 1

给镜像打标签

用法: docker tag IMAGE[:TAG] IMAGE[:TAG]

示例:

$ docker tag ubuntu:16.04 example.com/ubuntu:16.04
 
  • 1

推送镜像

推送镜像或仓库到仓库服务器。

用法: docker push [OPTIONS] NAME[:TAG]

示例:

$ docker push example.com/ubuntu:16.04
 
  • 1

保存镜像到tar归档(默认到STDOUT)

用法: docker save [OPTIONS] IMAGE [IMAGE...]

常用参数:

-o, --output string 保存到一个归档文件,而不是标准输出(STDOUT)

示例:

$ docker save ubuntu:16.04 > /tmp/ubuntu_16.04_img.tar.gz
 
  • 1

从tar归档或STDIN加载镜像

用法:docker load [OPTIONS]

常用参数:

-i, --input string 从归档文件加载,而不是标准输入(STDIN)

示例:

$ docker load < /tmp/ubuntu_16.04_img.tar.gz
 
  • 1

删除镜像

用法: docker rmi [OPTIONS] IMAGE [IMAGE...]

常用参数:

-f, --force 强制删除镜像

示例:

$ docker rmi org/tomcat:6
 
  • 1

导出镜像

用法: docker export [OPTIONS] CONTAINER

常用参数:

-o, --output string 导出到一个归档文件,而不是标准输出(STDOUT)

注:exportsave的区别:

  • export: 操作对象为容器,意指将当前容器导出为镜像保存。
  • save : 操作对象为镜像,意指将指定的镜像保存到另一个文件。如从台机器导出镜像,然后在另一台机器(网络较慢等)加载该镜像,这时应该使用saveload来迁移。

示例:

$ docker export 09e03d3d42ad > /tmp/ubuntu_16.04_expimg.tar.gz
 
  • 1

导入镜像

用法: docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

常用参数:

-m, --message string 提交信息(说明)

示例:

$ docker import -m "myfirstimg" < /tmp/ubuntu_16.04_expimg.tar.gz
 
  • 1

3 系统相关操作

显示系统范围的信息

用法: docker info

示例:

$ docker info

Containers: 1
 Running: 0
 Paused: 0
 Stopped: 1
Images: 3
Server Version: 1.12.0
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 15
 Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: null bridge host overlay
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options: seccomp
Kernel Version: 4.4.15-moby
Operating System: Alpine Linux v3.4
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 1.954 GiB
Name: moby
ID: WNLK:ZI7D:TVSE:LPIN:YR23:LD6M:G2XC:63QQ:4WLX:HIIP:CUZ5:RKU4
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
 File Descriptors: 18
 Goroutines: 29
 System Time: 2016-08-15T04:53:02.555086576Z
 EventsListeners: 1
No Proxy: *.local, 169.254/16
Registry: https://index.docker.io/v1/
Insecure Registries:
 127.0.0.0/8
 
  • 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

查看docker组件底层信息

可以查看容器,镜像,任务等的底层信息。

用法: docker inspect [OPTIONS] CONTAINER|IMAGE|TASK [CONTAINER|IMAGE|TASK...]

示例:

docker inspect ubuntu:16.04
[
    {
        "Id": "sha256:42118e3df429f09ca581a9deb3df274601930e428e452f7e4e9f1833c56a100a",
        "RepoTags": [
            "ubuntu:16.04"
        ],
        "RepoDigests": [
            "ubuntu@sha256:c6674c44c6439673bf56536c1a15916639c47ea04c3d6296c5df938add67b54b"
        ],
        "Parent": "",
        "Comment": "",
        "Created": "2016-07-22T15:19:31.961254889Z",
        "Container": "18623e507b31713ccb54bb249bd40a3a9f0acfe50ca1a6615729ea983b6a8011",
        "ContainerConfig": {
            "Hostname": "827f45722fd6",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            ...
 
  • 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

卷管理

用法:docker volume COMMAND

子命令:

  • create 创建一个卷
    常用参数:

--name string 指定卷的名称
-d, --driver string 指定卷的驱动名称 (默认 “local”)

  • inspect 显示一个或多个卷的详细信息
  • ls 显示卷(别名:ls,list)
  • rm 删除卷(别名:rm, remove)

    网络管理

    用法:docker network COMMAND

    子命令:

    • connect 将容器连接到指定的网络

    用法: docker network connect [OPTIONS] NETWORK CONTAINER

    常用参数:

    --alias value 该网络范围内的容器别名(默认 [])
    --ip string IP地址
    --ip6 string IPv6地址
    --link value 连接到其他容器(默认 [])

  • create 创建一个网络

    用法: docker network create [OPTIONS] NETWORK

    常用参数:

    -d, --driver string 网络驱动,可选值:“bridge”,“overlay”,mac下还有“macvlan”,默认“bridge”.

  • disconnect 将容器从指定网络断开
    用法: docker network disconnect [OPTIONS] NETWORK CONTAINER

    常用参数:

    -f, --force 强制容器从一个网络断开

  • inspect 显示一个或多个网络的详细信息
    用法: docker network inspect [OPTIONS] NETWORK [NETWORK...]
  • ls 显示所有网络(别名:ls,list)
  • rm 删除一个网络(别名:rm, remove)