Docker 命令
基础操作
1. 查看 Docker 版本
# 简单输出版本号
docker -v
docker --version
# 详细输出版本信息
docker version2. 查看 Docker 信息
docker infoClient:docker 客户端信息
Server:docker 服务端信息
Containers:容器数量
Images:镜像数量
Server Version:docker 版本
Docker Root Dir:docker 根目录
Registry Mirrors:当前使用的镜像源
把用户加入 Docker 用户组
Docker 需要用户具有 sudo 权限,为了避免每次命令都输入 sudo,可以把用户加入 Docker 用户组,使其具有 Docker 权限。
3. 启动 Docker
Docker 是服务器——客户端架构,命令行操作 Docker 时,需要先启动 Docker 服务。
4. 停止 Docker
5. 重启 Docker
Dcoker 仓库
Docker Hub 官网:https://hub.docker.com/
docker login
需要先在 Docker Hub 中注册一个账号才能在 Linux 登录
docker logout
docker pull
从镜像仓库中拉取或更新镜像
语法格式:docker pull [OPTIONS] NAME[:TAG|@DIGEST]
TAG:标签,不写的话默认是 latest 最新版
options 说明
-a, --all-tags : 拉取所有 tagged 镜像
--disable-content-trust : 忽略镜像的校验,默认开启
-q, --quiet : 概要输出
--platform string : 若服务支持多平台,这里可以设置平台
示例
docker push
将本地的镜像上传到镜像仓库,要先登录到镜像仓库
上传本地镜像的前置操作:
注册 Docker Hub 账号
Linux 登录 Docker Hub 账号
给镜像设置 TAG
语法格式:docker push [OPTIONS] NAME[:TAG]
options 说明
--disable-content-trust : 忽略镜像的校验,默认开启
docker search
从 Docker Hub 上查找镜像
语法格式 docker search [OPTIONS] NAME
options 说明
-f, --filter : 根据提供的 filter 过滤输出
--limit N : 搜索结果条数最大为 N(默认 25)
--no-trunc : 显示完整的镜像 description
--format : 使用 Go 模板进行美观打印
本地镜像管理
docker images
列出本地所有的镜像
语法: docker images [OPTIONS] [REPOSITORY[:TAG]]
options 说明
-a, --all 列出本地所有的镜像(含中间镜像层,默认情况下,过滤掉中间映像层)
--digests 显示镜像的摘要信息
-f, --filter filter 显示满足条件(filter)的镜像
--format string 使用模板格式化输出
--no-trunc 显示完整的镜像信息
-q, --quiet 只显示镜像 ID
docker rmi
删除一个或多个镜像
语法格式:docker rmi [OPTIONS] IMAGE [IMAGE...]
options 说明
-f 强制删除
--no-prune 不移除该镜像的过程镜像,默认移除
docker tag
给本地镜像打一个标记(tag),可将其归入某一仓库,有点像 Git 里面给不同时段写的代码打不同的 tag 一样
语法格式:docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
docker import
从 tar 归档文件中创建镜像
语法格式:docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
ptions 说明
-m 提交时的说明文字
-c 将 Dockerfile 指令应用于创建的映像
容器操作
docker create
创建一个新的容器但不启动它。
这类似于 docker run -d,但容器从未启动过。 然后,您可以使用 docker start <container_id> 命令在任何位置启动容器。
语法格式:docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
options 说明
--name 指定容器的名字
docker create --name tomcat7 tomcat:7
-e 或 --env 设置环境变量
docker create -e "MY_VAR=value" ubuntu:latest
-v 或 --volume 挂载卷
docker create -v /host/path:/container/path ubuntu:latest
-p 或 --publish 指定端口映射
docker create -p 8080:80 ubuntu:latest
--restart 设置重启策略
docker create --restart always ubuntu:latest
--network 指定网络
docker create --network my_network ubuntu:latest
--cpus 和 --memory 指定 CPU 和内存限制
docker create --cpus="1.5" --memory="512m" ubuntu:latest
-w 或 --workdir 设置容器工作目录
docker create -w /app ubuntu:latest
指定运行的命令:如果你想指定容器启动时的默认命令,可以直接在命令的末尾添加。
docker create ubuntu:latest echo "Hello World"
docker start/stop/restart
docker start:启动一个或多个已经被停止的容器
docker stop:停止一个或多个运行中的容器
docker restart:重启一个或多个容器
语法
stop/restart 命令的 options
-t, --time 杀死容器之前等待停止的秒数(默认为 10)
示例
假设有一个容器 name 是 tomcat3 ,id 是 7759aec97ebf
启动、关闭、重启所有容器
docker ps 列出容器
options 说明
-a, --all 显示全部容器(默认只显示运行中的容器)
-f, --filter filter 根据提供的 filter 过滤输出
-n, --last int 列出最近创建的 n 个容器(默认-1,代表全部)
-l, --latest 显示最近创建的容器(包括所有状态的容器)
-s, --size 显示总的文件大小
--no-trunc 显示完整的镜像 ID
-q, --quiet 静默模式,只显示容器 ID
实际例子
列表字段介绍
CONTAINER ID:容器 ID
IMAGE:使用的镜像
COMMAND:启动容器时后,容器运行的命令
CREATED:容器的创建时间
STATUS:容器状态
PORTS:实际运行端口,若有指定运行端口则会显示指定的端口和默认运行端口,以及连接类型( tcp / udp )
NAMES:容器名字
SIZE:容器全部文件的总大小,也会显示容器大小
容器状态介绍
created:已创建
restarting:重启中
running:运行中
removing:迁移中
paused:暂停
exited:停止
dead:死亡
docker run
创建一个新的容器并运行一个命令
语法格式:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
COMMAND :需要在容器内执行的命令
其实跟 docker create 一样的语法格式和几乎一样的参数,只不过可以运行容器甚至进入容器内部。因为它在后台会先调用 docker create,然后再执行 docker start
docker run 执行流程
首先在指定镜像上创建一个可写的容器层(docker create)
然后使用指定的命令(COMMAND)启动它(docker start)
docker run 相当于执行了两个 API:/containers/create、/containers/(id)/start
options 说明
-i 以交互模式运行容器,通常与 -t 同时使用
-t 启动容器后,为容器分配一个伪输入终端(pseudo-TTY),通常与 -i 同时使用
-v,--volume 目录映射,容器目录挂载到宿主机目录,格式: <host 目录>:<容器目录>
-d 或 --detach 守护进程,后台运行该容器
-p 指定端口映射,格式:主机(宿主)端口:容器端口
-P 随机端口映射,容器内部端口随机映射到主机的端口
-u 以什么用户身份创建容器
--name "nginx-lb" 容器名字
-m, --memory bytes 设置容器使用内存最大值
-h, --hostname string 指定容器的 host name
--dns 8.8.8.8 指定容器 dns 服务器
-e username="ritchie" 设置环境变量
--restart Docker 重启后,容器是否自动重启
--privileged 容器内是否使用真正的 root 权限
docker exec
在正在运行的容器中运行命令
语法格式:docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
options 说明
-d 在后台运行命令
-i 即使没有附加也保持 STDIN 打开,和 -t 配合
-t 进入容器的 CLI 模式
-e 设置环境变量
--env-file 读入环境变量文件
-w 需要执行命令的目录
-u 指定访问容器的用户名
docker attach
进入容器正在执行的终端。和 docker exec 的区别是:
docker exec 进入当前容器后开启一个新的终端,可以在里面操作。(常用)
docker attach 进入容器正在执行某个命令的终端,不能在里面操作
docker pause/unpause
docker pause:暂停一个或多个容器中的所有进程
docker unpause:恢复一个或多个容器中的所有进程
docker kill
杀死一个或多个正在运行的容器
重点
docker kill 子命令可杀死一个或多个容器
向容器内部的主进程发送 SIGKILL 信号(默认),或使用 --signal 选项指定的信号
options 说明
-s 发送什么信号到容器,默认 KILL
docker rm
删除一个或多个容器
options 说明
-f 通过 SIGKILL 信号删除一个正在运行的容器
-l 移除容器间的网络,而非容器本身
-v 删除与容器映射的目录
示例
docker top
显示容器正在运行的进程
docker logs
提取容器的日志
options 说明
--details 显示提供给日志的其他详细信息
-f, --follow 跟踪日志输出
--tail 仅列出最新 N 条容器日志
-t, --timestamps 显示时间戳-
docker port
列出指定的容器的端口映射
语法格式: docker port CONTAINER [PRIVATE_PORT[/PROTO]]
PRIVATE_PORT 指定查询的端口
PROTO 协议类型(tcp、udp)
docker export
将容器的文件系统导出为 tar 文件
语法规则: docker export [OPTIONS] CONTAINER
options 说明
-o 将输入内容写到文件
docker cp
在容器和主机之间复制文件/文件夹
语法格式
重点
容器 container 可以是正在运行或已停止的容器
SRC_PATH 或 DEST_PATH 可以是文件或目录
该命令会假定容器路径相对于容器的 /(根)目录
而主机路径则是相对于执行 docker cp 命令的当前目录-
SRC_PATH 和 DEST_PATH 的讲解
SRC_PATH 指定一个文件
若 DEST_PATH 不存在
创建 DEST_PATH 所需的文件夹,文件正常保存到 DEST_PATH 中
若 DEST_PATH 不存在,并以 / 结尾
错误:目标目录必须存在
若 DEST_PATH 存在并且是一个文件
目标被源文件的内容覆盖
若 DEST_PATH 存在并且是目录
使用 SRC_PATH 中的基本名称将文件复制到此目录中
SRC_PATH 指定目录
若 DEST_PATH 不存在
将 DEST_PATH 创建为目录,并将源目录的内容复制到该目录中
若 DEST_PATH 存在并且是一个文件
错误:无法将目录复制到文件
若 DEST_PATH 存在并且是目录
SRC_PATH 不以 /. 结尾,源目录复制到此目录
SRC_PATH 以 /. 结尾,源目录的内容被复制到该目录中
从容器复制文件到主机
从主机复制文件到容器
从主机复制目录到容器
从容器复制目录到主机
docker diff
检查容器文件系统上文件或目录的更改情况
结果字段说明
A 添加了文件或目录
D 删除了文件或目录
C 修改了文件或目录
docker commit
用于将一个运行中的容器的当前状态保存为一个新的 Docker 镜像。这在你想要基于现有容器创建新的镜像时非常有用,尤其是当你在容器中进行了手动更改而想要保存这些更改时。
语法格式:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
options 说明
-a 提交镜像的作者
-c,--change 更改 Dockerfile 指令来创建镜像
-m 提交时的说明文字
-p commit 时,将容器暂停
资料
Last updated