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拉取
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
3.rmi命令
docker rmi:删除本地一个或多个镜像
语法:
docker rmi [OPTIONS] IMAGE [IMAGE...]
OPTIONS说明:
参数 | 说明 |
---|---|
-f | 强制删除 |
--no-prune | 不移除该镜像的过程镜像,默认移除 |
实体:
#强制删除本地镜像redis
[root@localhost ~]# docker rmi redis
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
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
标题含义:
名称 | 说明 |
---|---|
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
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
8.top命令
docker top:查看容器中运行的进程信息,支持ps命令参数
语法:
docker top [OPTIONS] CONTAINER [ps OPTIONS]
容器运行时不一定有/bin/bash终端来交互执行top命令,而且容器还不一定有top命令,可以通过使用docker top来实现查看container中正在运行的进程
实例:
#查看容器m1nginx的进程信息
[root@localhost ~]# docker top m1nginx
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
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 .