Docker中常用命令介绍
前言对于初学docker的同学,docker命令可能只使用过一部分,今天我们仔细看看docker中一些常用的命令的用法和功能。说明docker命令直接执行`docker`命令,你可以看到docker所支持的所有命令列表Commands:attachAttach local standard input, output, and error streams to a r...
前言
对于初学docker的同学,docker命令可能只使用过一部分,今天我们仔细看看docker中一些常用的命令的用法和功能。
说明
docker命令
直接执行`docker`命令,你可以看到docker所支持的所有命令列表
Commands:
attach Attach local standard input, output, and error streams to a running container
build Build an image from a Dockerfile
commit Create a new image from a container's changes
cp Copy files/folders between a container and the local filesystem
create Create a new container
diff Inspect changes to files or directories on a container's filesystem
events Get real time events from the server
exec Run a command in a running container
export Export a container's filesystem as a tar archive
history Show the history of an image
images List images
import Import the contents from a tarball to create a filesystem image
info Display system-wide information
inspect Return low-level information on Docker objects
kill Kill one or more running containers
load Load an image from a tar archive or STDIN
login Log in to a Docker registry
logout Log out from a Docker registry
logs Fetch the logs of a container
pause Pause all processes within one or more containers
port List port mappings or a specific mapping for the container
ps List containers
pull Pull an image or a repository
..................................
- -help
Run 'docker COMMAND --help' for more information on a command.
如果你对某一条命令不太了解,执行docker COMMAND --help 可以看到详细的用法和介绍
比如说docker images --help
[root@localhost ~]# docker images --help
Usage: docker images [OPTIONS] [REPOSITORY[:TAG]]
List images
Options:
-a, --all Show all images (default hides intermediate images)
--digests Show digests
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print images using a Go template
--no-trunc Don't truncate output
-q, --quiet Only show numeric IDs
下面我们看看docekr中一些常用的命令
基本信息查看
docker version
显示 Docker 版本信息 :docker version [OPTIONS]
参数说明:
OPTIONS | 用途 | 示例 |
---|---|---|
查看版本信息 | docker version | |
–format(-f) | 指定docker version的返回值模板 | docker version --format ‘{{.Server.Version}}’ |
docker info
显示 Docker 基本信息、镜像数、容器数、占用空间等等 : docker info [OPTIONS]
参数说明:
OPTIONS | 用途 | 示例 |
---|---|---|
查看默认的docker信息 | docker info | |
–format(-f) | 指定docker info的返回值模板 | docker info --format '{{json .}}' 以json形式返回结果 |
镜像操作
docker images
查看Docker镜像信息 :docker images [OPTIONS] [REPOSITORY[:TAG]]
参数说明:
OPTIONS | 用途 | 示例 |
---|---|---|
查看本地所有镜像(但不包括 悬空镜像) | docker images | |
–all(-a) | 查看本地所有镜像(包括 悬空镜像) | docker images -a |
–quiet(-q) | 查看本地镜像的镜像ID信息 | docker images -q |
–digests | 显示镜像的摘要写信息 | |
–no-trunc | 查看完整的镜像信息 | |
–format | 指定返回值的模板文件 | docker images -format “{{.ID}}” |
–filter(-f) | 显示满足条件的镜像信息 | docker images -f dangling=true |
指定仓库名、标签查询镜像信息 : docker images ubuntu:16.04
docker tag
标记本地镜像,将其归入某一仓库。 : docker tag [SOURCE_IMAGE[:TAG]/IMAGE_ID] TARGET_IMAGE[:TAG]
用法示例:
命令 | 用途 |
---|---|
docker tag busybox:test zhengql/busybox:v1.0.1 | 将镜像busybox:test标记为一个新的镜像zhengql/busybox:v1.0.1 |
docker tag busybox zhengql/busybox:v1.0.1 | 将镜像busybox(默认tag为latest)标记为一个新的镜像zhengql/busybox:v1.0.1 |
docker tag 0e5574283393 zhengql/httpd:v1.0.2 | 将ID为0e5574283393的镜像标记为一个新的镜像zhengql/busybox:v1.0.2 |
docker rmi
删除本地一个或多个镜像 :docker rmi [OPTIONS] IMAGE [IMAGE...]
用法示例:
命令 | 用途 |
---|---|
docker rmi fd484f19954f | 删除指定ID的某个镜像 |
docker rmi zhengql/busybox:v1.0.1 | 删除指定名称和标签的某个镜像 |
docker rmi 0e5574283393 f753707788c5 1e0c3dd64ccd | 删除指定ID的多个镜像 |
docker rmi zhengql/busybox:v1.0.1 hello-world:latest httpd:latest | 删除指定名称和标签的多个镜像 |
docker rmi -f fd484f19954f | 强制删除镜像 |
docker build
用于使用 Dockerfile 构建镜像 : docker build [OPTIONS] PATH|URL|-
docker build的可选参数有很多,此处介绍一些常用的,详细介绍可以参考这里
参数说明:
OPTIONS | 用途 |
---|---|
–file(-f) | 指定要使用的Dockerfile文件路径 |
-m | 设置内存最大值 |
–no-cache | 创建镜像的过程不使用缓存 |
–quiet(-q) | 安静模式,成功后只输出镜像 ID |
–force-rm | 构建镜像过程中删除中间容器 |
–tag(-t) | 镜像的名字及标签,通常 name:tag 或者 name 格式 |
用法示例:
命令 | 用途 |
---|---|
docker build . | 通过当前目录的DockerFile构建镜像(path为".") |
docker build github.com/creack/docker-firefox | 通过url地址所在目录下DockerFile构建镜像 |
docker build -t zhengql/myDemo:1.0 . | 通过当前目录的DockerFile构建镜像并指定镜像的名称和tag (path为".") |
docker build -f Dockerfile.debug . | 通过当前目录下的DockerFile.debug构建镜像(path为".") |
docker save
指定镜像保存成 tar 归档文件 : docker save [OPTIONS] IMAGE [IMAGE...]
参数说明:
OPTIONS | 用途 | 示例 |
---|---|---|
–output(-o) | 输出到的文件 | docker save -o my_demo_v1.tar zhengql/myDemo:v1 |
docker load
基于tar文件创建镜像:docker load [OPTIONS]
参数说明:
OPTIONS | 用途 | 示例 |
---|---|---|
–input(-i) | 指定要读取的tar文件 | docker save -i my_demo_v1.tar |
这样看来 docker load
与docker save
的功能区别就很明显,tar文件由 docker save
命令创建,同时docker load
命令可以读取tar文件来构建镜像
仓库类操作
docker login/logout
登录/登出某Docker镜像仓库:docker login/logout [OPTIONS] [SERVER]
此处介绍 docker login基本用法
参数说明:
OPTIONS | 用途 | 示例 |
---|---|---|
默认登录官方仓库 | docker login | |
登录指定私有仓库 | docker login localhost:5000 | |
–username(-u) | 指定登录用户名 | |
–password(-p) | 指定登录密码 | docker login -u zhengql -p 6666666 |
docker search
从Docker Hub查找镜像 : docker search [OPTIONS] TERM
参数说明:
OPTIONS | 用途 | 示例 |
---|---|---|
查看官方仓库中名称包含busybox 的镜像 | docker search busybox | |
–filter(-f) | 设置搜索条件 | docker search --filter stars=3 busybox |
–format | 设置返回结果的模板 | docker search --format “{{.Name}}: {{.StarCount}}” busybox |
–limit | 最大搜索结果数量,默认25 | docker search --limit=10 busybox |
–no-trunc | 显示完整的镜像描述 | docker search --no-trunc busybox |
–stars(-s) | 列出starts数不小于指定值的镜像(已废弃,可使用-f) | docker search --stars=3 busybox |
–automated | 列出 automated build类型的镜像(已废弃,可使用-f) | docker search --filter is-automated busybox |
docker pull
从镜像仓库中拉取或者更新指定镜像 : docker pull [OPTIONS] NAME[:TAG|@DIGEST]
参数说明:
OPTIONS | 用途 | 示例 |
---|---|---|
从Docker Hub下载java最新版镜像 | docker pull java | |
从私有仓库下载hello-world镜像 | docker pull 10.200.0.204:5000/hello-world:v1 | |
通过摘要(digest )从仓库下载hello-world镜像 | docker pull busybox@sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2 | |
–all-tags(-a) | 拉取所有 tagged 镜像 | docker pull -a java |
–disable-content-trust | 忽略镜像的校验,默认开启 |
docker push
将本地的镜像上传到镜像仓库 : docker push [OPTIONS] NAME[:TAG]
用法示例:
命令 | 用途 |
---|---|
docker push myDemo:v1 | 上传本地镜像myDemo:v1到镜像仓库中 |
docker push 10.200.0.204:5000/myDemo:v1 | 上传本地镜像10.200.0.204:5000/myDemo:v1到私有仓库(10.200.0.204:5000)中 |
容器生命周期管理
docker run
创建一个新的容器并运行 : docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
docker run的可选参数有很多,此处介绍一些常用的,详细介绍可以参考这里
参数说明:
OPTIONS | 用途 |
---|---|
–detach(-d) | 在后台运行容器并打印容器ID |
–name | 为容器指定名称 |
–interactive(-i) | 以交互模式运行容器,通常与 -t 同时使用 |
–tty(-t) | 为容器重新分配一个伪输入终端,通常与 -i 同时使用 |
–publish(-p) | 将容器的端口发布到主机 |
–publish-all(-P) | 将所有公开的端口发布到随机端口 |
–cpu-shares(-c) | CPU份额(相对权重) |
–hostname(-h) | 设置容器主机名 |
–env(-e) | 设置环境变量 |
–memory(-m) | 拉取所有 tagged 镜像 |
–user(-u) | 用户名或UID(格式:<name |
–rm | 退出时自动删除容器 |
–privileged | 为此容器提供扩展权限 |
–workdir(-w) | 容器内的工作目录 |
–workdir(-w) | 容器内的工作目录 |
–workdir(-w) | 容器内的工作目录 |
–volume(-v) | 绑定一个卷 |
–volume-driver | 容器的可选卷驱动程序 |
–volumes-from | 从指定容器装载卷 |
–workdir(-w) | 容器内的工作目录 |
–read-only | 将容器的根文件系统挂载为只读 |
用法示例:
命令 | 用途 |
---|---|
docker run --name mydemo -d mydemo:latest | 使用docker镜像mydemo:latest以后台模式启动一个容器,并将容器命名为mydemo。 |
docker run -P -d nginx:latest | 使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口 。 |
docker run -p 8088:8011 -d mydemo:latest | 使用镜像mydemo:latest以后台模式启动一个容器,将容器的 8011 端口映射到主机的 8088 端口, |
docker run -v /data:/data -d mydemo:latest | 使用镜像mydemo:latest以后台模式启动一个容器,并将主机的目录 /data 映射到容器的 /data。 |
docker run -it nginx:latest /bin/bash | 使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令 |
docker create
创建一个新的容器但不启动它 :docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
该命令的用法与docker run相同,两者唯一的区别在于:
- docker run:创建并启动容器
- docker create:仅仅创建而不启动,需要手动docker start启动
docker create 适用于当需要提前设置容器配置,等在需要时直接启动的场景
docker start/stop/restart
启动/停止/重启一个或多个容器 : docker start/stop/restart [OPTIONS] CONTAINER [CONTAINER...]
用法示例,此处以docker start为例:
通过容器名称操作:
docker start mydemo1 mydemo2 mydemo3
通过容器id操作
docker start b58b3ad0e9a5 f7076bf32313 fce289e99eb9
docker pause/unpause
暂停/恢复一个或多个容器中所有的进程 : docker pause/unpause [OPTIONS] CONTAINER [CONTAINER...]
用法示例,此处以docker pause为例:
通过容器名称操作:
docker pause mydemo1 mydemo2 mydemo3
通过容器id操作
docker pause b58b3ad0e9a5 f7076bf32313 fce289e99eb9
docker kill
杀掉一个或多个正在运行的容器 : docker kill [OPTIONS] CONTAINER [CONTAINER...]
参数说明:
OPTIONS | 用途 |
---|---|
–signal(-s) | 发送信号到容器,默认发送KILL,也可通过 -s指定要发送的信号 |
用法示例:
将默认KILL信号发送到名为myDemo1,myDemo2(也可以使用容器ID)的容器:
docker kill myDemo1 myDemo2
将SIGHUP
信号发送到名为ID为b58b3ad0e9a5的容器:
docker kill --signal=SIGHUP b58b3ad0e9a5
注:关于Linux系统中信号的列表,可以参考这里
docker rm
删除一个或多个容器 : docker rm [OPTIONS] CONTAINER [CONTAINER...]
参数说明:
OPTIONS | 用途 | 示例 | 说明 |
---|---|---|---|
–force(-f) | 强制删除正在运行的容器 | docker rm -f myDemo1 myDemo2 | 强制删除容器myDemo1 myDemo2 |
–link(-l) | 移除容器间的网络连接,而非容器本身 | docker rm -l aaa | 删除连接名aaa下引用的容器 |
–volumes(-v) | 删除容器的同时删除与容器关联的卷 | docker rm -v mydemo1 | 删除容器mydemo1,并删除容器挂载的数据卷 |
docker exec
在运行的容器中执行命令 : docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
参数说明:
OPTIONS | 用途 |
---|---|
–detach(-d) | 分离模式: 在后台运行 |
–interactive(-i) | 开启标准输入,即使未与容器连接,也维持标准输入,通常与 -t 同时使用 |
–tty(-t) | 分配一个伪终端,通常与 -i 同时使用 |
–privileged | 为命令提供扩展权限 |
–evn(-e) | 设置环境变量 |
–user(-u) | 用户名或UID(格式:<name |
–workdir(-w) | 容器内的工作目录 |
用法示例:
命令 | 用途 |
---|---|
docker exec -d myDemo touch /tmp/execWorks | 在后台运行的容器内 创建一个新文件/tmp/execWorks |
docker exec -it -w /root myDemo | 设置要执行的命令的工作目录 |
docker exec -i -t myDemo /bin/bash | 在容器 myDemo 中开启一个交互模式的终端 |
容器操作
docker ps
查询当前容器列表 : docker ps [OPTIONS]
参数说明:
OPTIONS | 用途 |
---|---|
–all(-a) | 显示所有容器 |
–filter(-f) | 条件筛选容器 |
–format | 设置查询结果的显示模板 |
–last(-n) | 显示最后创建的容器(包括所有状态) |
–latest(-l) | 显示最新创建的容器(包括所有状态) |
–no-trunc | 不截断输出 |
–quiet(-q) | 仅显示容器ID |
–size(-s) | 显示总文件大小 |
用法示例:
命令 | 用途 |
---|---|
docker ps | 查询所有在运行中 的容器信息 |
docker ps -a | 查询所有状态全部的容器信息 |
docker ps -n 5 | 查询最近创建的5个容器信息 |
docker ps -q -a | 查询所有的容器ID |
docker ps --filter “name=abc” | 查询名字包含abc的容器信息 |
docker ps --filter status=running | 查询运行状态下的所有容器信息 |
docker ps --format “{{.ID}}: {{.Command}}” | 查询容器信息并以ID : Command形式显示结果 |
docker logs
获取容器的日志 :docker logs [OPTIONS] CONTAINER
参数说明:
OPTIONS | 用途 |
---|---|
–follow(-f) | 跟踪日志输出 |
–tail | 仅列出最新N条容器日志 |
–details | 显示提供给日志的额外细节 |
–since | 显示某个开始时间之后的所有日志 |
–until | 显示某个截止时间之前的所有日志 |
–timestamps(-t) | 日志头部显示时间戳 |
用法示例:
命令 | 用途 |
---|---|
docker logs -f mydemo | 跟踪查看容器mydemo的日志输出 |
docker logs -f --tail=200 mydemo | 查看容器mydemo最新200条日志并跟踪查看日志输出 |
docker logs -f -t --tail=200 mydemo | 查看容器mydemo最新200条日志并跟踪查看日志输出,每条日志头部填充时间信息 |
docker logs -t --since=“2019-01-01T12:23:37” --until “2019-04-09T12:23:37” mydemo | 查询指定时间段内的myDemo容器的日志 |
docker port
查看容器的端口映射情况:docker port [OPTIONS] CONTAINER [PRIVATE_PORT[/PROTO]]
查看myDemo容器的端口映射情况:
docker port myDemo
5000/tcp -> 0.0.0.0:5000
docker top
查看容器中运行的进程信息:docker top [OPTIONS] CONTAINER [ps OPTIONS]
查看容器myDemo的进程信息:docker top myDemo
UID PID PPID C STIME TTY TIME CMD
root 20195 20181 0 14:15 ? 00:00:00 registry serve /etc/docker/registry/config.yml
docker inspect
获取容器/镜像的元数据 : docker inspect [OPTIONS] NAME|ID [NAME|ID...]
参数说明:
OPTIONS | 用途 | 示例 | 说明 |
---|---|---|---|
–format(-f) | 指定返回值的模板文件 | docker inspect -f “{{.NetworkSettings.IPAddress}}” myDemo | 显示容器的IP地址 |
–size(-s) | 显示总的文件大小 | ||
–type | 为指定类型返回JSON |
docker wait
阻塞运行一个或多个容器,直到容器停止,然后打印出它的退出代码 :docker wait [OPTIONS] CONTAINER [CONTAINER...]
docker wait myDemo1 myDemo2
docker export
将容器的文件系统导出为tar文件包 : docker export [OPTIONS] CONTAINER
参数说明:
OPTIONS | 用途 | 示例 | 说明 |
---|---|---|---|
–output(-o) | 将输入内容写到文件 | docker export --output=“myDemo.tar” myDemo | 将myDemo容器保存为tar归档文件 |
docker attach
连接到正在运行中的容器 : docker attach [OPTIONS] CONTAINER
使用docker attach进入myDemo容器
docker attach myDemo
其他命令
docker events
用于实时输出Docker服务器中发生的事件 :docker events [OPTIONS]
参数说明:
OPTIONS | 用途 | 示例 | 说明 |
---|---|---|---|
听取事件 | docker events | ||
–filter(-f) | 根据提供的条件过滤输出 | docker events --filter ‘container=myDemo’ | 过滤出指定容器的事件 |
–format(-f) | 指定返回值的模板文件 | docker events --format ‘{{json .}}’ | 事件以json格式输出 |
–since(-f) | 显示自时间戳以来创建的所有事件 | docker events --since 1483283804 | 输出指定时间之后的事件 |
–until(-f) | 显示自时间戳之前创建的所有事件 | docker events --until 1483283804 | 输出指定时间之前的事件 |
说明:docker events从服务器获取实时事件。这些事件因Docker对象类型而异。
具体的事件类型,可以参考这里。
总结
docker中的常用命令就介绍到这里啦,相信通过本文,可以对docker中常用的命令有一定的了解,当然了命令这么多,还是需要我们在使用过程中慢慢的融会贯通,熟能生巧。
参考
更多推荐
所有评论(0)