一、镜像操作
1. 查察现有镜像
首先,你可以使用 docker images
命令查察本地已有的镜像。
2. 导出镜像
使用 docker save 命令将镜像导出为一个 tar 文件。例如,将 ubuntu 镜像导出为 ubuntu_image.tar:
- docker save -o ubuntu_image.tar ubuntu:latest
复制代码 这里,-o 用来指定导出文件的名称,ubuntu 是镜像的名称。
3. 导出多个镜像
如果你须要导出多个镜像,可以在命令中指定多个镜像名。例如:
- docker save -o multi_images.tar ubuntu alpine nginx
复制代码 4. 导出镜像并压缩
如果想直接导出并压缩,可以通过管道将镜像保存到 gzip 文件中。例如:
- docker save ubuntu | gzip > ubuntu_image.tar.gz
复制代码 5. 导出的镜像加载
如果你想将导出的镜像加载到另一台呆板上,可以使用 docker load 命令:
- docker load -i ubuntu_image.tar
复制代码 6. 修改镜像名称和标签
使用 docker tag 命令可以修改镜像的标签(tag)或者名称。其语法为:
- docker tag <原镜像ID或原镜像名称>:<原标签> <新镜像名称>:<新标签>
复制代码 例如,如果加载后的镜像名称为 ubuntu,标签为 latest,并且你想把它的标签改为 v1.0,可以使用以下命令:
- docker tag ubuntu:latest my_ubuntu:v1.0
复制代码 如果你不再须要旧的镜像名称或标签,可以使用 docker rmi 命令删除旧的镜像。例如:
二、容器操作
1、导出容器
将容器 my_container 导出为 my_container.tar:
- docker export -o my_container.tar my_container
复制代码 2、通过导出的文件生成新镜像:
- 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:确认容器正在运行
查察正在运行的容器,确保你已经对目标容器做了须要的修改。
假设容器的名称是 my_container。
步骤 2:创建新的镜像
使用 docker commit 命令将容器的当前状态保存为一个新的镜像。
- docker commit my_container new_image_name:new_tag
复制代码
- my_container 是容器名称或 ID。
- new_image_name:new_tag 是你为新镜像指定的名称和标签。例如:
- docker commit my_container my_custom_image:latest
复制代码 步骤 3:验证新的镜像
运行以下命令查察新生成的镜像:
在输出中,你应该可以看到名称为 my_custom_image 的新镜像。
步骤 4:保存新镜像(可选)
如果须要导出新镜像为文件,可以使用 docker save 命令:
- docker save -o my_custom_image.tar my_custom_image:latest
复制代码 这个文件可以传输到其他呆板,并通过 docker load 恢复。
步骤 5:测试新镜像(可选)
为了确保新镜像正常运行,可以基于新镜像启动一个新的容器:
- docker run -it my_custom_image:latest
复制代码
五、向docker容器中复制文件
1. 使用 docker cp 命令
docker cp 命令可以将主机上的文件或目录复制到容器内部,或者从容器内部复制到主机。
命令语法
- docker cp <源路径> <容器名称或ID>:<目标路径>
复制代码
- <源路径>:主机上的文件或目录。
- <容器名称或ID>:目标容器的名称或 ID。
- <目标路径>:容器内部的目标路径。
示例
将主机上的 example.txt 文件复制到容器的 /app 目录:
- docker cp /path/to/example.txt <容器名称或ID>:/app
复制代码 2. 复制整个目录
如果要复制一个目录到容器内部,可以指定目录路径。
示例
将主机上的 /local/directory 复制到容器的 /container/directory:
- docker cp /local/directory <容器名称或ID>:/container/directory
复制代码
- 如果容器的目标路径不存在,Docker 会自动创建它。
- 如果目标路径已存在且是目录,文件将被复制到该目录下。
3. 从容器内部复制文件到主机
可以将容器内部的文件或目录复制到主机上。
命令示例
将容器中的 /app/example.txt 复制到主机的 /path/to/ 目录:
- docker cp <容器名称或ID>:/app/example.txt /path/to/
复制代码 4. 在容器内使用文件
如果文件已经复制到容器中,可以进入容器并查抄文件:
- docker exec -it <容器名称或ID> bash
复制代码 进入容器后,导航到目标目录并查抄文件:
5. 注意事项
- 容器状态:
- docker cp 不要求容器处于运行状态,纵然容器制止,也可以将文件复制进去或取出来。
- 权限问题:
- 如果复制到容器内部的文件须要特定权限,可以使用以下命令在容器内部调解权限:
- chmod 755 /app/example.txt
复制代码 6. 其他方法:通过 docker exec 和 curl/wget
如果文件较大,或者须要在容器内部直接下载文件,可以使用 docker exec 进入容器并下载文件。
进入容器后使用 wget 或 curl:
- docker exec -it <容器名称或ID> bash
- 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企服之家,中国第一个企服评测及商务社交产业平台。 |