引言
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows机器上,也可以实现虚拟化。以下是一些常用的Docker命令及其详细解释:
Docker镜像操作命令
docker pull
从Docker Hub或其他Docker注册服务器下载镜像。
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
-
OPTIONS
:-
--all-tags
,-a
: 下载存储库的所有标签 -
--disable-content-trust
: 跳过镜像验证
-
-
NAME
: 镜像名称 -
TAG|@DIGEST
: 镜像标签或摘要
docker images
列出所有本地镜像。
docker images [OPTIONS] [REPOSITORY[:TAG]]
-
OPTIONS
:-
--all
,-a
: 显示所有镜像(默认隐藏中间层镜像) -
--digests
: 显示摘要 -
--filter
,-f
: 根据提供的条件过滤输出 -
--format
: 使用Go模板打印漂亮的输出 -
--no-trunc
: 不要截断输出 -
--quiet
,-q
: 只显示镜像ID
-
-
REPOSITORY[:TAG]
: 镜像名称和标签
docker rmi
删除一个或多个镜像。
docker rmi [OPTIONS] IMAGE [IMAGE...]
-
OPTIONS
:-
--force
,-f
: 强制删除镜像 -
--no-prune
: 不删除未标记的父镜像
-
-
IMAGE
: 镜像名称或ID
docker build
使用Dockerfile创建一个新的镜像。
docker build [OPTIONS] PATH | URL | -
-
OPTIONS
:-
--build-arg
: 设置构建时的变量 -
--cpu-shares
: CPU份额(相对权重) -
--cpu-period
: CPU CFS(完全公平调度器)周期 -
--cpu-quota
: CPU CFS配额 -
--cpuset-cpus
: 允许执行的CPU -
--cpuset-mems
: 允许执行的内存节点 -
--disable-content-trust
: 跳过镜像验证 -
--file
,-f
: 指定Dockerfile路径 -
--force-rm
: 总是删除中间容器 -
--isolation
: 容器隔离技术 -
--label
: 设置镜像使用的元数据 -
--memory
,-m
: 设置内存限制 -
--memory-swap
: 设置交换限制为内存+交换,-1
表示无限制 -
--no-cache
: 构建镜像过程中不使用缓存 -
--pull
: 总是尝试获取更新版本的镜像 -
--quiet
,-q
: 抑制构建输出 -
--rm
: 构建成功后删除中间容器 -
--shm-size
:/dev/shm
的大小 -
--tag
,-t
: 镜像的名字及标签 -
--ulimit
: Ulimit选项
-
-
PATH | URL | -
: Dockerfile的路径或URL,或使用-
从标准输入读取Dockerfile
docker tag
为镜像添加标签。
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
-
SOURCE_IMAGE[:TAG]
: 源镜像名称和标签 -
TARGET_IMAGE[:TAG]
: 目标镜像名称和标签
Docker容器操作命令
docker run
创建一个新的容器并运行一个命令。
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
-
OPTIONS
:-
--detach
,-d
: 在后台运行容器并打印容器ID -
--name
: 为容器指定一个名称 -
--publish
,-p
: 发布容器的端口到主机 -
--restart
: 容器退出时的重启策略 -
--rm
: 容器退出时自动删除 -
--volume
,-v
: 绑定一个卷 -
--env
,-e
: 设置环境变量 -
--link
: 添加链接到另一个容器 -
--expose
: 暴露一个端口或一组端口 -
--network
: 连接到网络 -
--ip
: 为容器指定IP地址 -
--dns
: 设置自定义DNS服务器 -
--entrypoint
: 覆盖默认的ENTRYPOINT -
--user
,-u
: 指定运行用户 -
--workdir
,-w
: 工作目录 -
--add-host
: 添加自定义主机到/etc/hosts
-
--hostname
,-h
: 容器的主机名 -
--read-only
: 将容器文件系统设置为只读 -
--pid
: 与主机上的另一个容器共享进程命名空间 -
--ipc
: 与主机上的另一个容器共享IPC命名空间 -
--uts
: 与主机上的另一个容器共享UTS命名空间 -
--security-opt
: 安全选项 -
--cap-add
: 添加Linux能力 -
--cap-drop
: 删除Linux能力 -
--privileged
: 给予扩展的权限 -
--device
: 添加主机设备给容器 -
--tmpfs
: 挂载一个tmpfs目录 -
--stop-signal
: 设置停止容器的信号 -
--stop-timeout
: 容器停止超时时间 -
--health-cmd
: 健康检查命令 -
--health-interval
: 健康检查间隔 -
--health-retries
: 健康检查重试次数 -
--health-timeout
: 健康检查超时时间 -
--health-start-period
: 应用健康检查前的初始延迟
-
-
IMAGE
: 使用的镜像 -
COMMAND
: 在容器中运行的命令 -
ARG...
: 传递给命令的参数
docker ps
列出所有正在运行的容器。
docker ps [OPTIONS]
-
OPTIONS
:-
--all
,-a
: 显示所有容器(默认只显示正在运行的) -
--filter
,-f
: 根据提供的条件过滤输出 -
--format
: 使用Go模板打印漂亮的输出 -
--last
,-n
: 显示最后创建的n个容器 -
--latest
,-l
: 显示最新创建的容器(包括所有状态) -
--no-trunc
: 不要截断输出 -
--quiet
,-q
: 只显示容器ID -
--size
,-s
: 显示总文件大小
-
docker stop
停止一个或多个正在运行的容器。
docker stop [OPTIONS] CONTAINER [CONTAINER...]
-
OPTIONS
:-
--time
,-t
: 在停止容器之前等待的秒数
-
-
CONTAINER
: 容器名称或ID
docker rm
删除一个或多个容器。
docker rm [OPTIONS] CONTAINER [CONTAINER...]
-
OPTIONS
:-
--force
,-f
: 强制删除正在运行的容器(使用SIGKILL) -
--link
,-l
: 删除指定的链接 -
--volumes
,-v
: 删除与容器关联的匿名卷
-
-
CONTAINER
: 容器名称或ID
docker exec
在运行的容器中执行命令。
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
-
OPTIONS
:-
--detach
,-d
: 在后台运行命令 -
--interactive
,-i
: 保持STDIN打开 -
--tty
,-t
: 分配一个伪终端 -
--user
,-u
: 以指定的用户身份运行命令 -
--workdir
,-w
: 在容器内的工作目录
-
-
CONTAINER
: 容器名称或ID -
COMMAND
: 要执行的命令 -
ARG...
: 传递给命令的参数
docker start
启动一个或多个已停止的容器。
docker start [OPTIONS] CONTAINER [CONTAINER...]
-
OPTIONS
:-
--attach
,-a
: 附加STDIN、STDOUT和STDERR -
--interactive
,-i
: 附加容器的STDIN
-
-
CONTAINER
: 容器名称或ID
docker restart
重启一个或多个正在运行的容器。
docker restart [OPTIONS] CONTAINER [CONTAINER...]
-
OPTIONS
:-
--time
,-t
: 在停止容器之前等待的秒数
-
-
CONTAINER
: 容器名称或ID
Docker网络操作命令
docker network
管理Docker网络。
docker network COMMAND
-
COMMAND
:-
connect
: 连接一个容器到一个网络 -
create
: 创建一个网络 -
disconnect
: 断开一个容器的网络 -
inspect
: 显示一个或多个网络的详细信息 -
ls
: 列出所有网络 -
prune
: 删除所有未使用的网络 -
rm
: 删除一个或多个网络
-
docker network create
创建一个网络。
docker network create [OPTIONS] NETWORK
-
OPTIONS
:-
--driver
,-d
: 指定网络驱动 -
--ip-range
: 为容器分配IP地址的范围 -
--subnet
: 子网在局域网中的IP段 -
--gateway
: 子网的IP地址 -
--ipv6
: 启用IPv6网络 -
--internal
: 限制外部访问 -
--label
: 设置网络使用的元数据
-
-
NETWORK
: 网络名称
docker network connect
连接一个容器到一个网络。
docker network connect [OPTIONS] NETWORK CONTAINER
-
OPTIONS
:-
--alias
: 为容器在网络上添加网络范围别名 -
--ip
: 为容器指定IP地址 -
--ip6
: 为容器指定IPv6地址 -
--link
: 添加链接到另一个容器 -
--link-local-ip
: 为容器添加一个链接范围IP地址
-
-
NETWORK
: 网络名称 -
CONTAINER
: 容器名称或ID
docker network disconnect
断开一个容器的网络。
docker network disconnect [OPTIONS] NETWORK CONTAINER
-
NETWORK
: 网络名称 -
CONTAINER
: 容器名称或ID
Docker数据管理命令
docker volume
管理Docker卷。
docker volume COMMAND
-
COMMAND
:-
create
: 创建一个卷 -
inspect
: 显示一个或多个卷的详细信息 -
ls
: 列出所有卷 -
prune
: 删除未使用的卷 -
rm
: 删除一个或多个卷
-
docker volume create
创建一个卷。
docker volume create [OPTIONS] [VOLUME]
-
OPTIONS
:-
--driver
,-d
: 指定卷驱动 -
--label
: 设置卷使用的元数据
-
-
VOLUME
: 卷名称
docker volume inspect
显示一个或多个卷的详细信息。
docker volume inspect [OPTIONS] VOLUME [VOLUME...]
-
VOLUME
: 卷名称
docker volume rm
删除一个或多个卷。
docker volume rm [OPTIONS] VOLUME [VOLUME...]
-
VOLUME
: 卷名称
Docker系统信息命令
docker info
显示Docker系统的信息。
docker info [OPTIONS]
-
OPTIONS
:-
--format
: 使用Go模板打印漂亮的输出
-
docker system df
显示Docker磁盘使用情况。
docker system df [OPTIONS]
-
OPTIONS
:-
--verbose
,-v
: 显示详细信息
-
Docker其他常用命令
docker logs
获取容器的日志。
docker logs [OPTIONS] CONTAINER
-
OPTIONS
:-
--details
: 显示额外的细节 -
--follow
,-f
: 跟踪日志输出 -
--since
: 显示自某个时间戳之后的日志 -
--tail
,-n
: 从日志末尾显示多少行 -
--timestamps
,-t
: 显示时间戳 -
--until
: 显示自某个时间戳之前的日志
-
-
CONTAINER
: 容器名称或ID
docker commit
从容器的更改创建一个新的镜像。
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
-
OPTIONS
:-
--author
: 作者信息 -
--change
,-c
: 应用Dockerfile指令来创建镜像 -
--message
,-m
: 提交消息 -
--pause
,-p
: 在提交期间暂停容器
-
-
CONTAINER
: 容器名称或ID -
REPOSITORY[:TAG]
: 新镜像的名称和标签
docker history
显示一个镜像的历史。
docker history [OPTIONS] IMAGE
-
OPTIONS
:-
--human
,-H
: 以可读的格式打印大小和日期 -
--no-trunc
: 不要截断输出 -
--quiet
,-q
: 只显示ID
-
-
IMAGE
: 镜像名称或ID
docker inspect
显示一个或多个容器或镜像的详细信息。
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
-
OPTIONS
:-
--format
,-f
: 使用Go模板打印漂亮的输出
-
docker cp
在本地文件系统和容器之间复制文件/文件夹。
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
-
OPTIONS
:-
--archive
,-a
: 复制并解压文件或目录 -
--follow-link
: 始终复制符号链接本身
-
-
CONTAINER:SRC_PATH
: 容器中的源路径 -
DEST_PATH|-
: 本地目标路径或-
表示将内容写入标准输出 -
SRC_PATH|-
: 本地源路径或-
表示从标准输入读取内容
docker diff
检查容器文件系统的更改。
docker diff CONTAINER
-
CONTAINER
: 容器名称或ID
Docker Compose命令
docker-compose up
启动并运行整个应用栈。
docker-compose up [options] [--scale SERVICE=NUM...] [SERVICE...]
-
options
:-
-d
: 在后台运行容器 -
--no-color
: 不使用颜色 -
--no-deps
: 不启动服务所依赖的服务 -
--force-recreate
: 重新创建容器 -
--build
: 在启动容器前构建镜像
-
-
SERVICE
: 服务名称
docker-compose down
停止并删除整个应用栈。
docker-compose down [options]
-
options
:-
-v
,--volumes
: 删除命名的卷 -
--rmi
: 删除所有服务的镜像
-
docker-compose ps
列出项目中所有容器。
docker-compose ps [options] [SERVICE...]
-
options
:-
-q
,--quiet
: 只显示ID
-
-
SERVICE
: 服务名称
docker-compose build
构建或重新构建服务。
docker-compose build [options] [--build-arg key=val...] [SERVICE...]
-
options
:-
--no-cache
: 构建镜像过程中不使用缓存 -
--force-rm
: 总是删除中间容器 -
--pull
: 总是尝试获取更新版本的镜像
-
-
SERVICE
: 服务名称
docker-compose config
验证和查看Compose文件。
docker-compose config [options]
-
options
:-
--resolve-image-digests
: 将镜像标签解析为摘要 -
--services
: 只打印服务名称 -
--volumes
: 只打印卷名称
-
总结
以上是Docker的一些常用命令,通过这些命令,你可以管理Docker镜像、容器、网络、数据卷等。熟练掌握这些命令可以极大地提高Docker的使用效率。