Docker常用命令

1.pull命令

docker pull:从公有仓库或私有仓库拉取镜像到本地宿主机

语法:

docker pull [OPTIONS] NAME[:TAG | @DIGEST] 
docker pull [OPTIONS] [公有仓库|私有仓库]/NAME:[TAG]

OPTIONS说明:

参数 说明
-a 摘取所有tagged镜像
--disable-content-trust 忽略镜像的校验,默认开启
#从Docker Hub下载nginx最新版镜像
[root@localhost ~]# docker pull nginx:latest       #如nginx前没有加上仓库的名字,默认从Docker Hub拉取

Docker常用命令

2.images命令

docker images:查看宿主机上的所有镜像

语法:

docker images [options] [REPOSITORY[:TAG]]

OPTIONS说明:

参数 说明
-a 列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层)
--digests 显示镜像的摘要信息
-f 显示满足条件的镜像
--format 指定返回值的模板文件
--no-trunc 显示完整的镜像信息
-q 只显示镜像ID

实例:

#查看本地镜像列表,列出本地的所有镜像
[root@localhost ~]# docker images

#列出本地镜像中REPOSITORY为nginx的镜像列表
[root@localhost ~]# docker images nginx

Docker常用命令

3.rmi命令

docker rmi:删除本地一个或多个镜像

语法:

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

OPTIONS说明:

参数 说明
-f 强制删除
--no-prune 不移除该镜像的过程镜像,默认移除

实体:

#强制删除本地镜像redis
[root@localhost ~]# docker rmi redis

Docker常用命令

4.run命令

docker run:创建一个新的容器并运行

语法:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

OPTIONS说明:

参数 说明
-a stdin 指定标准输入输出内容类型,可选STDIN/STDOUT/STDERR三项
-d 后台运行容器,并返回容器ID
-i
-t
以交互模式运行容器,通常与-t同时使用
为容器重新分配一个伪输入终端,通常与-i同时使用
-p
-P
端口映射,格式为:主机(宿主机)指定端口:容器端口
端口映射,格式为:主机(宿主机)随机端口:容器端口(容器设定的)
-v 将宿主机的本地目录映射容器的指定目录
--name="****" 为容器指定一个名称
--dns 8.8.8.8 指定容器使用的DNS服务器,默认和宿主的一致
--dns-search example.com 指定容器DNS搜索域名,默认和宿主一致
-h "mars" 指定容器的hostname
-e username="***" 设置环境变量
--env-file=[] 从指定文件读入环境变量
--cpuset="0-2" or --cpuset="0,1,2" 绑定容器到指定CPU运行
-m 设置容器使用内存最大值
--net="bridge" 指定容器的网络连接类型,支持bridge/host/none/container:<name|id>四种类型
--link=[] 添加链接到另一个容器
--expost=[] 开放一个端口或一组端口

实例:

#使用docker镜像nginx:latest以后台模式启动一个容器,并将容器命令为maplenginx
[root@localhost ~]# docker run --name maplenginx -d nginx:latest

#使用镜像nginx:latet以后台模式启动一个容器,并将容器的80端口映射到主机随机端口
[root@localhost ~]# docker run --name m1nginx -P -d nginx:latest

#使用镜像nginx:latest,以后台模式启动一个容器,将容器的80端口映射到主机的2888端口,主机的目录/data映射到容器的/data
[root@localhost ~]# docker run --name m2nginx -p 2888:80 -v /data:/data -d nginx:latest

#绑定容器的8080端口,并将其映射到本地主机127.0.0.1的3888端口上
[root@localhosta ~]# docker run --name m3nginx -p 127.0.0.1:3888:8080 -d ubuntu

#使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令
[root@localhost ~]# docker run --name m4nginx /bin/bash

Docker常用命令

5.ps命令

docker ps :列出正在运行的容器

语法:

docker ps [OPTIONS]

OPTIONS说明:

参数 说明
-a 显示所有的容器,包括未运行的
-f 根据条件过滤显示的内容
--format 指定返回值的模板文件
-l 显示最近创建的容器
-n 列出最近创建的n个容器
--no-trunc 不截断输出
-q 静默模式,只显示容器编号
-s 显示总的文件大小

实例:

#列出所有在宿主机中运行的容器
[root@localhost ~]# docker ps

#列出最新创建的2个容器信息:
[root@localhost ~]# docker ps -n 2

#列出所有创建的容器的ID
[root@localhost ~]# docker ps -a -q

Docker常用命令

标题含义:

名称 说明
CONTAINER ID 容器的唯一ID
IMAGE 创建容器时使用的镜像
COMMAND 容器最后运行的命令
CREATED 创建容器的时间
STATUS 容器状态
PORTS 对外开放的端口
NAMES 容器名。可以和容器ID一样唯一标识容器,同一台宿主机上不允许有同名容器存在,否则会冲突

6.start/stop/restart命令

docker start|stop|restart:启动容器,停止一个正在运行的容器,重新启动正在运行的容器

语法:

docker start|stop|restart [OPTIONS] CONTAINER [CONTAINER...]

docker start:启动一个或多个已经被停止的容器

docker stop:停止一个或多个正在运行中的容器

docker restart:重启一个或多个正在运行中的容器

实例:

#停止运行中的容器m1nginx
[root@localhost ~]# docker stop m1nginx
[root@localhost ~]# docker ps -a | grep m1nginx

#启动已被停止的容器m1nginx
[root@localhost ~]# docker start m1nginx
[root@localhost ~]# docker ps -a | grep m1nginx

#重启容器m1nginx
[root@localhost ~]# docker restart m1nginx
[root@localhost ~]# docker ps -a | grep m1nginx

Docker常用命令

7.search命令

docker search:从Docker Hub查找镜像

语法:

docker search [OPTIONS] TERM
参数 说明
--automated 只列出automated build类型的镜像
--no-trunc 显示完整的镜像描述
-s 列出收藏不小于指定值的镜像

实例:

#从Docker Hub仓库中查找所有镜像名包含nginx,并且收藏数大于100的镜像
[root@localhost ~]# docker search  -s 100 nginx

Docker常用命令

8.top命令

docker top:查看容器中运行的进程信息,支持ps命令参数

语法:

docker top [OPTIONS] CONTAINER [ps OPTIONS]

容器运行时不一定有/bin/bash终端来交互执行top命令,而且容器还不一定有top命令,可以通过使用docker top来实现查看container中正在运行的进程

实例:

#查看容器m1nginx的进程信息
[root@localhost ~]# docker top m1nginx

Docker常用命令

9.inspect命令

docker inspect:获取容器或镜像的元数据信息

语法:

docker inspect [OPTIONS] NAME|ID [NAME|ID...]

OPTIONS说明:

参数 说明
-f 指定返回值的模板文件
-s 显示总的文件大小
--type 为指定类型返回JSON

实例:

#获取镜像nginx的元数据信息
[root@localhost ~]# docker inspect nginx:latest
[
    {
        "Id": "sha256:ed21b7a8aee9cc677df6d7f38a641fa0e3c05f65592c592c9f28c42b3dd89291",
        "RepoTags": [
            "nginx:latest"
        ],
        "RepoDigests": [
            "nginx@sha256:282530fcb7cd19f3848c7b611043f82ae4be3781cb00105a1d593d7e6286b596"
        ],
        "Parent": "",
        "Comment": "",
        "Created": "2020-03-31T03:19:30.487069362Z",
        "Container": "5c86b143cf5caec0aed5c331922c243f00600152ec0e9ecbe8531771562e72b8",
        "ContainerConfig": {
            "Hostname": "5c86b143cf5c",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "80/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "NGINX_VERSION=1.17.9",
                "NJS_VERSION=0.3.9",
                "PKG_RELEASE=1~buster"
            ],
            "Cmd": [
                "/bin/sh",
                "-c",
                "#(nop) ",
                "CMD ["nginx" "-g" "daemon off;"]"
            ],
            "ArgsEscaped": true,
            "Image": "sha256:9be1fc3b00d81a66f4de11f5f5bf176e0748434be056cf3152386cc917307e7f",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"
            },
            "StopSignal": "SIGTERM"
        },
        "DockerVersion": "18.09.7",
        "Author": "",
        "Config": {
            "Hostname": "",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "80/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "NGINX_VERSION=1.17.9",
                "NJS_VERSION=0.3.9",
                "PKG_RELEASE=1~buster"
            ],
            "Cmd": [
                "nginx",
                "-g",
                "daemon off;"
            ],
            "ArgsEscaped": true,
            "Image": "sha256:9be1fc3b00d81a66f4de11f5f5bf176e0748434be056cf3152386cc917307e7f",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"
            },
            "StopSignal": "SIGTERM"
        },
        "Architecture": "amd64",
        "Os": "linux",
        "Size": 126769107,
        "VirtualSize": 126769107,
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/3032185da3147f04ada2fd6c2fa6fcba05d1cf0937f22f9da0a86a8ea789e5c2/diff:/var/lib/docker/overlay2/85f73e89a9d2769c608f228f8d7c8a7ed4df2d91b69482d408bccef10248ac2e/diff",
                "MergedDir": "/var/lib/docker/overlay2/c6e1e55d501a7f0306194590f3ba9ed2ba46a8dc3be71579913eb2dc842c1678/merged",
                "UpperDir": "/var/lib/docker/overlay2/c6e1e55d501a7f0306194590f3ba9ed2ba46a8dc3be71579913eb2dc842c1678/diff",
                "WorkDir": "/var/lib/docker/overlay2/c6e1e55d501a7f0306194590f3ba9ed2ba46a8dc3be71579913eb2dc842c1678/work"
            },
            "Name": "overlay2"
        },
        "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:c3a984abe8a88059915bb6c7a1d249fd1ccc16d931334ac8816540b0eb686b45",
                "sha256:99134ec7f247e5a211c7205fec587bf72a6d4aac339b21858b892e9c04f78920",
                "sha256:d37eecb5b7691ec21bd19989e37f8bb4d20b340a775591d0f3db5897d606b0e4"
            ]
        },
        "Metadata": {
            "LastTagTime": "0001-01-01T00:00:00Z"
        }
    }
]

10.exec命令

docker exec:进入运行的容器中执行命令

语法:

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

OPTIONS说明:

参数 说明
-d 分离模式,在后台运行
-i 即使没有附加也保持STDIN打开
-t 分配一个伪终端

实例:

#以一个交互模式的终端方式进入到容器m2nginx中
[root@localhost ~]# docker exec -it m2nginx /bin/bash

Docker常用命令

11.login命令

docker login:用于登陆到一个Docker镜像仓库,如果未指定镜像仓库的地址,则默认使用官方仓库docker.hub

docker logout:用于登出一个Docker镜像仓库,如果未指定镜像仓库的地址,则默认登出官方仓库docker.hub

语法:

docker login  [OPTIONS] [SERVER]
docker logout  [OPTIONS] [SERVER]

OPTIONS说明:

参数 说明
-u 登录的用户名
-p 登录的密码

实例:

#登录到Docker hub镜像仓库
[root@localhost ~]# docker login -u <用户名> -p <密码>

#登录到私人仓库或其它第三方镜像仓库
[root@localhost ~]# docker login harbor.od.com -u <用户名> -p <密码>

#登出Docker Hub镜像仓库
[root@localhost ~]# docker logout

#登出私人仓库或第三方镜像仓库
[root@localhost ~]# docker logout harbor.od.com

12.push命令

docker push:将本地的镜像上传到镜像仓库,要先登录到镜像仓库

语法:

docker push [OPTIONS] NAME[:TAG]

OPTIONS说明:

参数 说明
--disable-content-trust 忽略镜像的检验,默认开启

实例:

#将本地镜像m2nginx上传到私人仓库harbor.od.com上
[root@localhost ~]# docker tag m1nginx harbor.od.com/public/m1nginx:v1
[root@localhost ~]# docker login harbor -u <用户名> -p <密码>
[root@localhost ~]# docker push harbor.od.com/public/m1nginx:v1

温馨提示:不管是上传到官方镜像仓库或私人镜像仓库,都需要先对本地的镜像进行打标签(标签是如何请参照相对应的镜像仓库的信息来修改)

13.build命令

docker build:命令用于使用Dockerfile文件创建镜像

语法:

docker build [OPTIONS] PATH|URL|-

OPTIONS说明:

参数 说明
--build-arg=[] 设置镜像创建时的变量
--cpu-shares 设置CPU使用权重
--cpu-period 限制CPU CFS周期
--cpu-quota 限制CPU CFS配额
--cpuset-mems
--disable-content-trust
-f
--force-rm
--isolation
--cpuset-mems 指定使用的内存id
--disable-content-trust 忽略校验,默认开启
-f 指定要使用的Dockerfile路径
--force-rm 设置镜像过程中删除中间容器
--isolation 使用容器隔离技术
--label=[] 设置镜像使用的元数据
-m 设置内存最大值
--memory-swap 设置swap的最大值为内存+swap,“-1”表示不限swap
--network 默认default,在构建期间设置RUN指令的网络模式
--quiet,-q 安静模式,成功后只输出镜像ID
--tag,-t 镜像的名字及标签,通过name:tag或name格式,可以在一次构建中为一个镜像设置多个标签。
--shm-size 设置/dev/shm的大小,默认值是64M

实例:

#使用URL github.com/maple/docker-firefox的Dockerfile创建镜像
[root@localhost ~]# docker build github.com/maple/docker-firefox

#使用Dockerfile文件创建镜像
#[root@localhost ~]# docker build -f /path/to/a/Dockerfile .