type
status
date
slug
summary
tags
category
icon
password
1、系统概况
1.1 docker服务启动/停止/重启
可以使用 systemctl 命令来操作 docker 服务
1.2 查看docker信息
1.3 查看docker事件
OPTIONS说明:
- f :根据条件过滤事件
- –since :从指定的时间戳后显示所有事件
- –until :流水时间显示到指定的时间为止
2、容器
2.1 创建并启动容器
OPTIONS说明:
- -d:后台运行容器,并返回容器ID;
- -i:保证容器的STDIN是开启的,-t为容器创建一个伪tty终端,两者结合使用创建一个交互式容器
- -p:指定端口映射,格式为:主机(宿主)端口:容器端口
- –-name:为容器指定一个名称
- -e:设置环境变量
- –-net:指定容器的网络连接类型,支持bridge/host/none/container四种类型,例如 –net=bridge
- —link=[]:添加链接到另一个容器;
- –-expose=[]:开放一个端口或一组端口
- -v,–volume:绑定一个卷
- –rm:容器退出后会自动清理,–rm 不能与 -d 同时使用(或者说同时使用没有意义)
- -c:容器运行起来后要执行的命令
- -m:指定容器的最大内存,例如 -m 256m 指定容器的最大内存为256m
- --privileged=true:赋予容器内的 root 用户几乎与宿主机 root 用户相同的权限,我们可以做很多平时不能做的事情,例如加载内核模块、直接操作硬件设备;否则容器内的 root 用户只是宿主机上的一个普通用户。
示例
docker run = docker create + docker start
2.2 创建容器
docker create
命令会根据指定的镜像和参数创建一个容器实例,但容器只会在创建时进行初始化,并不会执行任何进程。用法同
docker run
2.3 启动容器
2.4 重启容器
2.5 暂停/恢复容器中的进程
2.6 停止容器
2.7 删除容器
删除一个或多个容器,在删除需要先停止容器
OPTIONS说明:
- f:通过 SIGKILL 信号强制删除一个运行中的容器。
- l:移除容器间的网络连接,而非容器本身。
- v:删除与容器关联的卷。
2.8 进入容器
1、第一种方式,使用
docker attach
。直接进入当前容器正在执行的终端里进行操作。退出的时候先按Ctrl+p
键,然后再按Ctrl+q
键。千万不要直接按Ctrl+c
,这样会直接杀死容器。
2、第二种方式,使用
docker exec
。OPTIONS 说明:
- -d:分离模式,在后台运行
- -i:即使没有附加也保持STDIN 打开
- -t:分配一个伪终端
示例
attach 和 exec 的区别:
- attach 直接进入容器启动命令的终端,不会启动新的进程。如果有多个窗口同时进入,其中有一个窗口阻塞了,那么其他窗口也无法再进行操作;使用
Ctrl+c
退出终端时,容器也会被关闭。所以 attach 不适合于生产环境。
- exec则是在容器中打开新的终端,并且可以启动新的进程。使用
Ctrl+c
退出终端时,容器不会被关闭。如果想直接在终端中查看启动命令的输出,用 attach;其他情况使用 exec。
2.9 查看容器信息
2.9.1 查看当前运行的所有容器
options说明:
- -a:显示所有的容器,包括未运行的。
- -f:根据条件过滤显示的内容。
- –-format:指定返回值的模板文件。
- -l:显示最近创建的容器。
- -n:列出最近创建的n个容器。
- –-no-trunc:不截断输出。
- -q:静默模式,只显示容器编号。
- -s:显示总的文件大小。
示例
2.9.2 查看容器的元数据
以 JSON 格式输出容器的元数据
OPTIONS 说明:
- —f, --format:使用 Go 模板语法格式化输出。
- —type:返回指定类型的对象信息(可选类型:
container
、image
、network
、volume
)。
示例
2.9.3 查看容器内部进程
docker top
命令是一个有用的工具,帮助用户查看容器内正在运行的进程信息。通过该命令,用户可以监控、调试和管理容器内的活动,确保容器正常运行。示例:
2.9.4 实时显示容器资源使用情况
docker stats
命令用于实时显示 Docker 容器的资源使用情况,包括 CPU、内存、网络 I/O 和块 I/O。docker stats
似于 Linux 系统中的 top
命令,但它专门针对 Docker 容器。通过 docker stats
,用户可以监控容器的资源使用情况,帮助优化性能和进行故障排除。docker top
和docker stats
的区别:docker top
需要指定容器,且不是动态显示容器资源使用情况docker stats
可以不指定容器,动态打印所有容器资源使用情况
OPTIONS 说明:
- —all , -a:显示所有的容器,包括未运行的。
- —format:指定返回值的模板文件。
- —no-stream:展示当前状态就直接退出了,不再实时更新。
- —no-trunc:不截断输出。
示例:
2.9.5 查看容器日志
options说明:
- -f:跟踪日志输出
- —since:显示某个开始时间的所有日志
- —until:显示在指定时间点之前生成的日志
- -t:显示时间戳
- —tail/-n:仅列出最新N条容器日志
示例
2.10 容器和宿主机间传递文件
参考官方文档 docker cp,SRC_PATH 和 DEST_PATH 的关系如下:SRC_PATH specifies a file
- DEST_PATH does not exist
- the file is saved to a file created at DEST_PATH
- DEST_PATH does not exist and ends with /
- Error condition: the destination directory must exist.
- DEST_PATH exists and is a file
- the destination is overwritten with the source file’s contents
- DEST_PATH exists and is a directory
- the file is copied into this directory using the basename from SRC_PATH
SRC_PATH specifies a directory
- DEST_PATH does not exist
- DEST_PATH is created as a directory and the contents of the source directory are copied into this directory
- DEST_PATH exists and is a file
- Error condition: cannot copy a directory to a file
- DEST_PATH exists and is a directory
- SRC_PATH does not end with /. (that is: slash followed by dot)
- the source directory is copied into this directory
- SRC_PATH does end with /. (that is: slash followed by dot)
- the content of the source directory is copied into this directory
示例:
3、镜像
3.1 查看镜像列表
options说明:
- a:列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
- –digests:显示镜像的摘要信息;
- f:显示满足条件的镜像;
- –format:指定返回值的模板文件;
- –no-trunc:显示完整的镜像信息;
- q:只显示镜像ID。
3.2 创建镜像
1、第一种方式,使用
docker commit
。这种方式是基于运行的容器来创建镜像。options说明:
- -a:提交的镜像作者
- -c:使用Dockerfile指令来创建镜像
- -m:提交时的说明文字
- -p:在commit时,将容器暂停
示例
2、第二种方式,使用 Dockerfile,需要配合
docker build
使用。从 Dockerfile 来创建镜像。使用当前目录作为上下文,使用本地或者远程 Dockerfile 文件来创建镜像:
- PATH:从本地路径读取 Dockerfile,其中
.
表示从当前目录读取 Dockerfile。
- URL:指向包含 Dockerfile 的远程存储库地址(如 Git 仓库)。
- -:从标准输入读取 Dockerfile。
OPTIONS说明,常用:
- -t, --tag: 为构建的镜像指定名称和标签。
- -f, --file: 指定 Dockerfile 的路径(默认是 PATH 下的 Dockerfile)。
- --build-arg: 设置构建参数。
- --no-cache: 不使用缓存层构建镜像。
- --rm: 构建成功后删除中间容器(默认开启)。
- --force-rm: 无论构建成功与否,一律删除中间容器。
- --pull: 始终尝试从注册表拉取最新的基础镜像。
其他:
- -cpu-shares: 设置 CPU 使用权重。
- --cpu-period: 限制 CPU CFS 周期。
- --cpu-quota: 限制 CPU CFS 配额。
- --cpuset-cpus: 指定可使用的 CPU ID。
- --cpuset-mems: 指定可使用的内存节点 ID。
- --disable-content-trust: 忽略内容信任验证(默认启用)。
- --isolation: 使用指定的容器隔离技术。
- --label=[]: 设置镜像的元数据。
- -m: 设置内存的最大值。
- --memory-swap: 设置交换空间的最大值(内存 + 交换空间),-1 表示不限制交换空间。
- --quiet, -q: 安静模式,构建成功后只输出镜像 ID。
- --shm-size: 设置 /dev/shm 的大小,默认值为 64M。
- --ulimit: 设置 Ulimit 配置。
- --squash: 将 Dockerfile 中所有步骤压缩为一层。
- --network: 在构建期间设置 RUN 指令的网络模式,默认值为 default。
注意:
- 官方建议:将一个空目录作为上下文起点,并将 Dockerfile 保存在该目录中,仅添加构建 Dockerfile 所需的文件。
- 不要使用根目录
/
作为构建上下文的 PATH,因为会导致构建时,将硬盘驱动器的全部内容发送到 Docker Daemon 程序。
示例
3.3 重命名镜像
示例
3.4 查看镜像信息
1、第一种方式,使用
docker history
。可以查看镜像的构建历史。OPTIONS说明:
- -H:以可读的格式打印镜像大小和日期,默认为true;
- –-no-trunc:显示完整的提交记录;
- -q:仅列出提交记录ID。
2、第二种方式,使用
docker inspect
。可以查看镜像的元数据,可以配合docker images --no-trunc
获取各层镜像。3.5 删除镜像
options说明:
- f:强制删除
- –no-prune:不移除该镜像的过程镜像,默认移除
示例
4、仓库
4.1 登陆/登出远程仓库
登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
OPTIONS说明:
- -u:登陆的用户名
- -p:登陆的密码
登出远程仓库
4.2 在远程仓库中查找镜像
默认从Docker Hub查找镜像
- –automated:只列出 automated build类型的镜像;
- –no-trunc:显示完整的镜像描述;
- f <过滤条件>:列出收藏数不小于指定值的镜像。
4.3 从远程仓库拉取镜像
从镜像仓库拉取镜像,如果不加 tag 默认拉取 latest 镜像。
options说明:
- a:拉取所有 tagged 镜像
- –disable-content-trust:忽略镜像的校验,默认开启
4.4 上传镜像到远程仓库
- Author:mcbilla
- URL:http://mcbilla.com/article/757f1b3f-167f-413c-83b0-1dfe8eb244f2
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts