docker根本操作:【查察镜像、导出/加载(save/load)镜像、修改镜像名称】 ...

打印 上一主题 下一主题

主题 881|帖子 881|积分 2643

一、镜像操作

1. 查察现有镜像

首先,你可以使用 docker images

 命令查察本地已有的镜像。
  1. docker images
复制代码
2. 导出镜像

使用 docker save 命令将镜像导出为一个 tar 文件。例如,将 ubuntu 镜像导出为 ubuntu_image.tar:
  1. docker save -o ubuntu_image.tar ubuntu:latest
复制代码
这里,-o 用来指定导出文件的名称,ubuntu 是镜像的名称。
3. 导出多个镜像

如果你须要导出多个镜像,可以在命令中指定多个镜像名。例如:
  1. docker save -o multi_images.tar ubuntu alpine nginx
复制代码
4. 导出镜像并压缩

如果想直接导出并压缩,可以通过管道将镜像保存到 gzip 文件中。例如:
  1. docker save ubuntu | gzip > ubuntu_image.tar.gz
复制代码
5. 导出的镜像加载

如果你想将导出的镜像加载到另一台呆板上,可以使用 docker load 命令:
  1. docker load -i ubuntu_image.tar
复制代码
6. 修改镜像名称和标签

使用 docker tag 命令可以修改镜像的标签(tag)或者名称。其语法为:
  1. docker tag <原镜像ID或原镜像名称>:<原标签> <新镜像名称>:<新标签>
复制代码
例如,如果加载后的镜像名称为 ubuntu,标签为 latest,并且你想把它的标签改为 v1.0,可以使用以下命令:
  1. docker tag ubuntu:latest my_ubuntu:v1.0
复制代码
如果你不再须要旧的镜像名称或标签,可以使用 docker rmi 命令删除旧的镜像。例如:
  1. docker rmi ubuntu:latest
复制代码
二、容器操作

1、导出容器

将容器 my_container 导出为 my_container.tar:
  1. docker export -o my_container.tar my_container
复制代码
2、通过导出的文件生成新镜像:

  1. docker import my_container.tar new_image:latest
复制代码

三、区别

在 Docker 中,docker save 和 docker export 是两个用于导出数据的命令,但它们有不同的用途和特点。以下是两者的区别:

1. 用途不同



  • docker save
    用于导出 镜像(image),包罗该镜像的全部层(layers)和元数据(metadata)。可以将镜像移动到其他呆板上,再通过 docker load 恢复使用。
  • docker export
    用于导出 容器(container) 的文件体系。不会包含镜像的层信息或元数据,导出后得到的只是一个容器的文件体系快照。
2. 导出内容不同



  • docker save

    • 包含镜像的全部层(Layers)。
    • 包含镜像的元数据,例如标签(tags)和历史信息。
    • 是镜像的完整打包,可以通过 docker load 恢复成一个镜像。

  • docker export

    • 只包含容器运行时的文件体系快照。
    • 不包含镜像的元数据。
    • 导出的内容无法直接恢复成镜像,只能解压使用或通过 docker import 重新生成镜像。

3. 使用场景不同



  • docker save

    • 用于迁徙镜像。
    • 通常用来分享镜像或将镜像备份后传输到其他 Docker 主机。

  • docker export

    • 用于备份或提取容器的文件体系。
    • 可以在容器中运行一些配置后,导出容器的文件体系用于进一步的定制或摆设。

4. 配套命令不同



  • docker save

    • 导出的文件可以通过 docker load 恢复。

  • docker export

    • 导出的文件可以通过 docker import 转换为镜像,或者直接解压使用。

5. 关键区别总结表格

特性docker savedocker export作用对象镜像(Image)容器(Container)包含内容镜像的全部层和元数据容器的文件体系恢复方式使用 docker load使用 docker import常见用途镜像备份、迁徙容器文件体系快照是否包含元数据是否
四、从容器生成新的镜像文件

步骤 1:确认容器正在运行

查察正在运行的容器,确保你已经对目标容器做了须要的修改。
  1. docker ps
复制代码
假设容器的名称是 my_container。
步骤 2:创建新的镜像

使用 docker commit 命令将容器的当前状态保存为一个新的镜像。
  1. docker commit my_container new_image_name:new_tag
复制代码


  • my_container 是容器名称或 ID。
  • new_image_name:new_tag 是你为新镜像指定的名称和标签。例如:
  1. docker commit my_container my_custom_image:latest
复制代码
步骤 3:验证新的镜像

运行以下命令查察新生成的镜像:
  1. docker images
复制代码

在输出中,你应该可以看到名称为 my_custom_image 的新镜像。
步骤 4:保存新镜像(可选)

如果须要导出新镜像为文件,可以使用 docker save 命令:
  1. docker save -o my_custom_image.tar my_custom_image:latest
复制代码
这个文件可以传输到其他呆板,并通过 docker load 恢复。

步骤 5:测试新镜像(可选)

为了确保新镜像正常运行,可以基于新镜像启动一个新的容器:
  1. docker run -it my_custom_image:latest
复制代码


五、向docker容器中复制文件

1. 使用 docker cp 命令

docker cp 命令可以将主机上的文件或目录复制到容器内部,或者从容器内部复制到主机。
命令语法

  1. docker cp <源路径> <容器名称或ID>:<目标路径>
复制代码


  • <源路径>:主机上的文件或目录。
  • <容器名称或ID>:目标容器的名称或 ID。
  • <目标路径>:容器内部的目标路径。
示例

将主机上的 example.txt 文件复制到容器的 /app 目录:
  1. docker cp /path/to/example.txt <容器名称或ID>:/app
复制代码
2. 复制整个目录

如果要复制一个目录到容器内部,可以指定目录路径。
示例

将主机上的 /local/directory 复制到容器的 /container/directory:
  1. docker cp /local/directory <容器名称或ID>:/container/directory
复制代码


  • 如果容器的目标路径不存在,Docker 会自动创建它。
  • 如果目标路径已存在且是目录,文件将被复制到该目录下。
3. 从容器内部复制文件到主机

可以将容器内部的文件或目录复制到主机上。
命令示例

将容器中的 /app/example.txt 复制到主机的 /path/to/ 目录:
  1. docker cp <容器名称或ID>:/app/example.txt /path/to/
复制代码
4. 在容器内使用文件

如果文件已经复制到容器中,可以进入容器并查抄文件:
  1. docker exec -it <容器名称或ID> bash
复制代码
进入容器后,导航到目标目录并查抄文件:
  1. cd /app
  2. ls
复制代码
5. 注意事项


  • 容器状态:

    • docker cp 不要求容器处于运行状态,纵然容器制止,也可以将文件复制进去或取出来。

  • 权限问题:

    • 如果复制到容器内部的文件须要特定权限,可以使用以下命令在容器内部调解权限:

  1. chmod 755 /app/example.txt
复制代码
6. 其他方法:通过 docker exec 和 curl/wget

如果文件较大,或者须要在容器内部直接下载文件,可以使用 docker exec 进入容器并下载文件。
进入容器后使用 wget 或 curl:

  1. docker exec -it <容器名称或ID> bash
  2. wget http://example.com/file.txt -O /app/file.txt
复制代码

六、docker run参数

基础选项

参数作用--name为容器指定一个名称,便于管理和辨认。--rm容器退出后自动删除,适合短期任务的容器。-d后台运行容器(即守护模式)。-it交互式模式启动容器,并附加一个伪终端(适合运行须要交互的步伐)。-a指定容器的尺度输入输出内容,选项有 stdin、stdout、stderr。--restart设置容器的重启策略(如 no、always、on-failure、unless-stopped)。
网络相干选项

参数作用--network指定容器使用的网络模式(如 bridge、host、none 或自界说网络)。-p将容器端口映射到主机端口,格式为 主机端口:容器端口。-P自动将容器的全部暴露端口映射到主机的随机端口。--ip为容器分配指定的 IP 地点(适用于自界说网络)。--dns设置容器的 DNS 服务器。--mac-address为容器指定 MAC 地点。--hostname设置容器的主机名(Hostname)。--add-host添加自界说主机到容器的 /etc/hosts 文件,例如 myhost:127.0.0.1。
存储相干选项

参数作用-v 或 --volume挂载主机目录或数据卷到容器中,格式为 主机目录:容器目录。--mount更高级的挂载选项,支持多种存储后端和权限设置。--tmpfs将目录挂载为临时文件体系(仅在容器内存中存在)。--read-only以只读模式运行容器。--volume-driver指定容器使用的卷驱动步伐。
资源限定选项

参数作用--cpu-shares为容器分配相对 CPU 份额(权重值)。--cpus限定容器使用的 CPU 数量(如 1.5 表现 1.5 个焦点)。--memory限定容器的内存使用量(如 512m 或 1g)。--memory-swap限定内存和交换空间总和的最大值。--oom-kill-disable克制在内存不足时杀死容器进程。--shm-size设置 /dev/shm 的大小(默认 64MB)。--cpuset-cpus指定容器运行在哪些 CPU 焦点上(如 0,1 表现焦点 0 和 1)。
环境变量相干选项

参数作用-e 或 --env设置容器内的环境变量,格式为 KEY=VALUE。--env-file从文件中读取环境变量(每行一个 KEY=VALUE)。--label为容器添加标签(可用于管理和筛选容器)。
文件体系相干选项

参数作用--workdir指定容器的工作目录(类似 Linux 的 cd)。--entrypoint覆盖镜像的默认 ENTRYPOINT。
装备与权限相干选项

参数作用--privileged以特权模式运行容器,允许访问主机的全部装备。--device将主机装备挂载到容器中,例如 GPU 或 USB。--cap-add添加容器的特定能力(Capabilities)。--cap-drop删除容器的特定能力(Capabilities)。--security-opt配置容器的安全选项。
日志相干选项

参数作用--log-driver设置容器的日志驱动步伐(如 json-file、syslog)。--log-opt配置日志驱动的选项,例如日志大小限定等。
调试与诊断选项

参数作用--detach-keys设置退出容器时的键组合(默认是 Ctrl+P Ctrl+Q)。--init在容器中使用一个初始化步伐(如 tini)来处置惩罚子进程。--tty 或 -t为容器分配一个伪终端(TTY)。
其他选项

参数作用--help显示 docker run 的帮助信息。--user 或 -u以指定的用户或 UID 运行容器。--pid设置容器的 PID 隔离模式(如 host)。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

河曲智叟

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表