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:返回指定类型的对象信息(可选类型:containerimagenetworkvolume)。
示例

2.9.3 查看容器内部进程

docker top 命令是一个有用的工具,帮助用户查看容器内正在运行的进程信息。通过该命令,用户可以监控、调试和管理容器内的活动,确保容器正常运行。
示例:

2.9.4 实时显示容器资源使用情况

docker stats 命令用于实时显示 Docker 容器的资源使用情况,包括 CPU、内存、网络 I/O 和块 I/O。
docker stats 似于 Linux 系统中的 top 命令,但它专门针对 Docker 容器。通过 docker stats,用户可以监控容器的资源使用情况,帮助优化性能和进行故障排除。
docker topdocker 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 上传镜像到远程仓库

Docker系列:Dockerfile Docker系列:什么是容器
mcbilla
mcbilla
一个普通的干饭人🍚
Announcement
type
status
date
slug
summary
tags
category
icon
password
🎉欢迎来到飙戈的博客🎉
-- 感谢您的支持 ---
👏欢迎学习交流👏