显示版本信息 docker version
docker version :显示 Docker 版本信息。
语法
1 | docker version [OPTIONS] |
显示 Docker 系统信息 docker info
docker info : 显示 Docker 系统信息,包括镜像和容器数
语法
1 | docker info [OPTIONS] |
搜索镜像 docker search
docker search : 从 Docker Hub 查找镜像
语法
1 | docker search [OPTIONS] TERM |
OPTIONS 说明:
- –automated :只列出 automated build类型的镜像;
- –no-trunc :显示完整的镜像描述;
- –filter=stars=:列出收藏数不小于指定值的镜像。
实例
从 Docker Hub 查找所有镜像名包含 hello-world,并且收藏数大于 1000 的镜像
hello-world 是 Docker 官方提供的一个镜像,通常用来验证 Docker 是否安装成功。
1 | ➜ ~ docker search --filter=stars=1000 hello-world |
下载或更新镜像 docker pull
docker pull : 从镜像仓库中拉取或者更新指定镜像
语法
1 | docker pull [OPTIONS] NAME[:TAG|@DIGEST] |
OPTIONS 说明:
- -a :拉取所有 tagged 镜像
- –disable-content-trust :忽略镜像的校验,默认开启
实例
从 Docker Hub下载 hello-world 最新版镜像。
1 | ➜ ~ docker pull hello-world |
查看已下载的镜像 docker images
docker images : 列出本地镜像。
语法
1 | docker images [OPTIONS] [REPOSITORY[:TAG]] |
OPTIONS 说明:
- -a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
- –digests :显示镜像的摘要信息;
- -f :显示满足条件的镜像;
- –format :指定返回值的模板文件;
- –no-trunc :显示完整的镜像信息;
- -q :只显示镜像ID。
实例
查看本地镜像列表。
1 | ➜ ~ docker images |
列出本地镜像中 REPOSITORY 为 nginx 的镜像列表。
1 | ➜ ~ docker images nginx |
删除镜像 docker rmi
docker rmi : 删除本地一个或多少镜像。
语法
1 | docker rmi [OPTIONS] IMAGE [IMAGE...] |
OPTIONS说明:
- -f :强制删除;
- –no-prune :不移除该镜像的过程镜像,默认移除;
实例
强制删除本地镜像 hello-world。
1 | ➜ ~ docker rmi -f hello-world |
如果本地有多个 IMAGE ID 相同的镜像,可以通过 docker rmi [REPOSITORY]:[TAG] 来删除
如下
1 | ➜ ~ docker images |
删除容器 docker rm
docker rm :删除一个或多个容器
语法
1 | docker rm [OPTIONS] CONTAINER [CONTAINER...] |
OPTIONS说明:
- -f :通过SIGKILL信号强制删除一个运行中的容器
- -l :移除容器间的网络连接,而非容器本身
- -v :-v 删除与容器关联的卷
实例
强制删除容器 mynginx
1 | docker rm -f mynginx |
运行镜像 docker run
docker run :创建一个新的容器并运行一个命令
语法
1 | docker run [OPTIONS] IMAGE [COMMAND] [ARG...] |
OPTIONS说明:
- -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
- -d: 后台运行容器,并返回容器ID;
- -i: 以交互模式运行容器,通常与 -t 同时使用;
- -p: 端口映射,格式为:主机(宿主)端口:容器端口;
- -v: 挂载一个目录或者一个已存在的数据卷容器,可以直接使用 [HOST:CONTAINER] 格式,或者使用[HOST:CONTAINER:ro] 格式,后者对于容器来说,数据卷是只读的,可以有效保护宿主机的文件系统。
- -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
- –name=: 为容器指定一个名称;
- –dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
- –dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
- -h: 指定容器的 hostname;
- -e: 设置环境变量;
- –env: 设置环境变量;
- –env-file=[]: 从指定文件读入环境变量;
- –cpuset=”0-2” or –cpuset=”0,1,2”: 绑定容器到指定CPU运行;
- -m :设置容器使用内存最大值;
- –net=”bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
- –link=[]: 添加链接到另一个容器;
- –expose=[]: 开放一个端口或一组端口;
实例
使用 docker 镜像 nginx:latest 以后台模式启动一个容器,并将容器命名为 mynginx。
1 | docker run --name mynginx -d nginx:latest |
使用镜像 nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /Users/zhuo/logs 映射到容器的 /logs。
1 | ➜ ~ docker run -p 80:80 -v /Users/zhuo/logs:/logs -d nginx:latest |
使用镜像 nginx:latest 以交互模式启动一个容器,在容器内执行 /bin/bash 命令。
1 | ➜ ~ docker run -it nginx:latest /bin/bash |
使用远程 registry.cn-hangzhou.aliyuncs.com/log-service/logtail 镜像启动容器,挂载根目录到 /logtail_host(只读模式) 挂载 /var/run 目录到容器的 /var/run 目录,设置环境变量
1 | docker run -d -v /:/logtail_host:ro -v /var/run:/var/run --env ALIYUN_LOGTAIL_CONFIG=/etc/ilogtail/conf/demo/ilogtail_config.json registry.cn-hangzhou.aliyuncs.com/log-service/logtail |
创建镜像 docker build
docker build 命令用于使用 Dockerfile 创建镜像。
语法
1 | docker build [OPTIONS] PATH | URL | - |
OPTIONS说明:
- –build-arg=[] :设置镜像创建时的变量;
- –cpu-shares :设置 cpu 使用权重;
- –cpu-period :限制 CPU CFS周期;
- –cpu-quota :限制 CPU CFS配额;
- –cpuset-cpus :指定使用的CPU id;
- –cpuset-mems :指定使用的内存 id;
- –disable-content-trust :忽略校验,默认开启;
- -f :指定要使用的Dockerfile路径;
- –force-rm :设置镜像过程中删除中间容器;
- –isolation :使用容器隔离技术;
- –label=[] :设置镜像使用的元数据;
- -m :设置内存最大值;
- –memory-swap :设置Swap的最大值为内存+swap,”-1”表示不限swap;
- –no-cache :创建镜像的过程不使用缓存;
- –pull :尝试去更新镜像的新版本;
- –quiet, -q :安静模式,成功后只输出镜像 ID;
- –rm :设置镜像成功后删除中间容器;
- –shm-size :设置/dev/shm的大小,默认值是64M;
- –tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。
- –network: 默认 default。在构建期间设置RUN指令的网络模式
实例
使用当前目录的 Dockerfile 创建镜像,标签为 hello-world。
1 | ➜ ~ docker build -t hello-world . |
在 Docker 守护进程执行 Dockerfile 中的指令前,首先会对 Dockerfile 进行语法检查,有语法错误时会返回错误信息
列出容器 docker ps
docker ps : 列出容器
语法
1 | docker ps [OPTIONS] |
OPTIONS说明:
- -a :显示所有的容器,包括未运行的。
- -f :根据条件过滤显示的内容。
- –format :指定返回值的模板文件。
- -l :显示最近创建的容器。
- -n :列出最近创建的n个容器。
- –no-trunc :不截断输出。
- -q :静默模式,只显示容器编号。
- -s :显示总的文件大小。
实例
列出所有在运行的容器信息。
1 | ➜ ~ docker ps |
列出最近创建的5个容器信息。
1 | ➜ ~ docker ps -n 5 |
容器与主机之间的数据拷贝 复制 docker cp
docker cp :用于容器与主机之间的数据拷贝。
语法
1 | docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|- |
OPTIONS说明:
- -L :保持源目标中的链接
实例
将主机 /www/test 目录拷贝到容器 8cd821c0fac7 的 /www 目录下。
1 | docker cp /www/test 8cd821c0fac7:/www |
将容器 8cd821c0fac7 的 /www 目录拷贝到主机的 /tmp 目录中。
1 | docker cp 8cd821c0fac7:/www /tmp/ |
在运行的容器中执行命令 docker exec
docker exec :在运行的容器中执行命令
语法
1 | docker exec [OPTIONS] CONTAINER COMMAND [ARG...] |
OPTIONS说明:
- -d :分离模式: 在后台运行
- -i :即使没有附加也保持STDIN 打开
- -t :分配一个伪终端
实例
在容器 mynginx 中以交互模式执行容器内 /root/helloworld.sh 脚本
1 | ➜ ~ docker exec -it mynginx /bin/sh /root/helloworld.sh |
在容器 mynginx 中开启一个交互模式的终端
1 | ➜ ~ docker exec -it mynginx /bin/bash |
设置容器自动重启
reboot 后 Docker 服务及容器自动启动设置,已启动容器:
1 | docker update --restart=always 8c965ffd0761 |
获取容器/镜像的元数据 docker inspect
docker inspect : 获取容器/镜像的元数据。
语法
1 | docker inspect [OPTIONS] NAME|ID [NAME|ID...] |
OPTIONS说明:
- -f :指定返回值的模板文件。
- -s :显示总的文件大小。
- –type :为指定类型返回JSON。
实例
获取镜像 nginx 的元信息。
1 | ➜ ~ docker inspect nginx |
登陆/登出命令 docker login/logout
docker login : 登陆到一个 Docker 镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
docker logout : 登出一个 Docker 镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
语法
1 | docker login [OPTIONS] [SERVER] |
OPTIONS说明:
- -u :登陆的用户名
- -p :登陆的密码
实例
登陆到 Docker Hub
1 | docker login -u 用户名 -p 密码 |
登出 Docker Hub
1 | docker logout |
将本地的镜像上传到镜像仓库 docker push
docker push : 将本地的镜像上传到镜像仓库,要先登陆到镜像仓库
语法
1 | docker push [OPTIONS] NAME[:TAG] |
OPTIONS说明:
- –disable-content-trust :忽略镜像的校验,默认开启
实例
上传本地镜像 mynginx:v1 到镜像仓库中。
1 | docker push mynginx:v1 |
获取容器日志 docker logs
docker logs : 获取容器的日志
语法
1 | docker logs [OPTIONS] CONTAINER |
OPTIONS说明:
- -f : 跟踪日志输出
- –since :显示某个开始时间的所有日志
- -t : 显示时间戳
- –tail :仅列出最新N条容器日志
实例
跟踪查看容器 mynginx 的日志输出。
1 | ➜ ~ docker logs -f mynginx |
查看容器 mynginx 的最新 3 条日志。
1 | ➜ ~ docker logs --tail=3 mynginx |
列出指定的容器的端口映射 docker port
docker port :列出指定的容器的端口映射,或者查找将PRIVATE_PORT NAT到面向公众的端口。
语法
1 | docker port [OPTIONS] CONTAINER [PRIVATE_PORT[/PROTO]] |
实例
查看容器 mynginx 的端口映射情况。
1 | ➜ ~ docker port mynginx |
查看容器中运行的进程信息 docker top
docker top :查看容器中运行的进程信息,支持 ps 命令参数。
语法
1 | docker top [OPTIONS] CONTAINER [ps OPTIONS] |
容器运行时不一定有/bin/bash 终端来交互执行 top 命令,而且容器还不一定有 top 命令,可以使用 docker top 来实现查看 container 中正在运行的进程。
实例
查看容器 mynginx 的进程信息
1 | ➜ ~ docker top mynginx |