简单指令实现Docker构建镜像启动运行保存导出后再导入新环境完整全流程

这篇具有很好参考价值的文章主要介绍了简单指令实现Docker构建镜像启动运行保存导出后再导入新环境完整全流程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

项目场景及问题描述

本文做一个简单Docker使用指令指南,可快速实现Docker构建镜像、启动、运行、保存、导出后再导入新环境完整全流程。具体每一个指令又有很多参数和学问,大家可自行查询更详细的解释,本文可用于小白快速构建镜像并使用。


使用Dockerfile自动构建镜像

首先,准备一个Dockerfile,包含你要使用的基础镜像信息。以下面的Dockerfile为例,基础镜像是基于ubuntu20.04操作系统,安装cuda版本为11.2.0,nvidia驱动版本是450.80.02,并安装wget、git、vim、python3、python3-pip、ffmpeg等常用工具,并创建一个工作目录/app。更多参考见本文最后的参考链接,通常GitHub的一些工程也会提供作者使用环境的Dockerfile。

Dockerfile

FROM nvidia/cuda:11.2.0-devel-ubuntu20.04
RUN export DEBIAN_FRONTEND=noninteractive;apt-get update && \
apt-get install -y --no-install-recommends wget git vim python3 python3-pip ffmpeg 
WORKDIR /app

Dockerfile准备好之后,在Dockerfile所在目录执行以下指令构建镜像。

docker build -t MyUbuntu .

(不要漏掉最后的 “.”哦~)
其中参数 -t 后跟的是镜像的标签名(tag)。docker默认会从build context中查找到 Dockerfile文件,也可通过 -f 参数指定Dockerfile的位置。

镜像创建成功后,可以用 docker images 指令查看创建好的镜像,有REPOSITORY, TAG, IMAGE ID等信息。
简单指令实现Docker构建镜像启动运行保存导出后再导入新环境完整全流程
以上图为例,最新构建的镜像 REPOSITORY 是 ebxxx06,TAG 是 latest,IMAGE ID 是 4baxxxe34(xxx为马赛克)。


docker run 启动镜像

简单启动指令:

docker run -it <镜像的REPOSITORY:TAG>

如:

docker run -it MyUbuntu:latest

复杂一些的启动指令:

docker run -it -v /home/app/VeraCode:/app/VeraCode/ -p 8060:8060 --entrypoint="/bin/bash" --gpus all --name MyUbuntu2023 MyUbuntu:latest

其中,
参数 -v 后跟的是本地目录:docker内的目录,两个目录共享
参数 -p 后是端口映射
参数 --gpus all 是启用GPU
参数 --name 后面跟的是容器名称,自取
最后 MyUbuntu:latest 是你要启动的镜像的REPOSITORY:TAG

容器启动后会直接进入容器,指令 exit 可退出容器。


docker exec 运行容器

启动过的容器再次进入运行指令比较简单,不过需要确认容器是否在运行。
指令 docker ps 可查看正在运行的容器
指令 docker ps -a 可查看历史所有容器

简单指令实现Docker构建镜像启动运行保存导出后再导入新环境完整全流程

通常第一次用 run 指令启动容器退出后,容器的状态会是 Exited
通过指令 docker ps -a 查看要启动的容器的 CONTAINER ID,通常只需要用到前三位,首先,确保容器的状态 STATUS 为 Up,如果不是,可通过指令 docker start <CONTAINER ID> 或 <CONTAINER ID的前三位> 来使容器处于运行状态,再用如下指令运行容器:

docker exec -it <CONTAINER ID><CONTAINER ID的前三位> /bin/bash

以上图为例,指令就是:

docker exec -it 074 /bin/bash

docker commit 保存容器

将容器打包成镜像可以用 docker commit 指令,这样你运行容器时已经装好的环境,比如pip安装的Python库等等,都可以保留下来,不过这样导出的镜像大小会比最初始基础镜像大很多。指令如下:

docker commit <CONTAINER ID> <镜像的REPOSITORY:TAG>

如:

docker commit 074 MyUbuntu:latest

docker save 镜像导出

本地镜像导出可用以下两种指令:

docker save -o MyUbuntu.tar <IMAGE ID>

docker save <IMAGE ID> > MyUbuntu.tar

如:

docker save -o MyUbuntu.tar 4baxxxe34
或
docker save 4baxxxe34 > MyUbuntu.tar

以上 IMAGE_ID 也可以用 <镜像的REPOSITORY:TAG>替换
如:

docker save -o MyUbuntu.tar MyUbuntu:latest
或
docker save MyUbuntu:latest > MyUbuntu.tar

docker load 镜像导入

可以将导出的镜像 MyUbuntu.tar 包传到需要使用该镜像包的docker主机上,导入镜像可用以下两种指令:

docker load -i MyUbuntu.tar

docker load < MyUbuntu.tar

导入后通过 docker images 指令查看导入新环境的镜像。启动、运行用上面介绍过的指令即可。


说明:
1、docker save 和 docker export区别:
docker save 保存镜像所有的信息-包含历史信息,配合docker load 使用
docker export 只导出当前的信息,配合 docker import 使用
2、如果导出镜像时用的IMAGE ID,再导入新环境时,镜像的 REPOSITORY 和TAG 可能为 none,重命名镜像可用如下指令:

docker tag <IMAGE ID> <新镜像名称>:<新镜像标签>

参考引用、补充资料

Docker Dockerfile
创建Docker镜像有几种方式
docker镜像构建,Docker 镜像和容器的导入导出文章来源地址https://www.toymoban.com/news/detail-512166.html

到了这里,关于简单指令实现Docker构建镜像启动运行保存导出后再导入新环境完整全流程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • libreOffice构建docker镜像,并基于此运行项目

    一、libreOffice构建docker镜像,并启动项目 安装包准备 LibreOffice(v7.4.2): LibreOffice_7.4.2_Linux_x86-64_rpm.tar.gz LibreOffice-langpack:(v7.4.2): LibreOffice_7.4.2_Linux_x86-64_rpm_langpack_zh-CN.tar.gz jdk-8u202-linux-x64.tar.gz 打包windows字体包(C:WindowsFonts,搜索中文):fonts.tar.gz Dockerfile编写 构建镜像 启动项

    2024年02月16日
    浏览(37)
  • Docker编译多平台文件、构建多平台镜像并运行

    参考官方文档: Multi-stage Multi-platform Multi-platform images   如果在 x86_64/amd64 的平台上,想构建适用于多个平台的镜像,例如 linux/amd64 、 linux/arm64 ,根据官方文档,有三种方法可以使用: QEMU   使用 QEMU 模拟构建多平台映像是最简单的入门方法,但可能比本机构建慢得多,

    2024年01月20日
    浏览(41)
  • Docker技术入门| Part03:Dockerfile详解(Dockerfile概念、Dockerfile 指令、使用Dockerfile构建镜像)

    Docker镜像原理 Docker镜像是由特殊的文件系统叠加而成 最底端是bootfs,并使用宿主机的bootfs 第二层是root文件系统rootfs,称为base image 然后再往上可以叠加其他的镜像文件 统文件系统(UnionFile System)技术能够将不同的层整合成一个文件系统,为这些层提供了一个统的视角,这样就隐

    2024年02月09日
    浏览(58)
  • 如何在 Linux 命令行下玩转 Docker——如何使用 Dockerfile 来构建和运行容器镜像

    作者:禅与计算机程序设计艺术 Docker 是一款开源的容器化技术,它利用 Linux 内核的容器特性,将应用部署到独立的进程环境中。基于容器技术可以极大地提高开发者和运维人员的效率,降低部署、测试和生产环节中的成本,有效地实现云计算资源的弹性伸缩。 本文主要介绍

    2024年02月07日
    浏览(53)
  • Docker(镜像、容器、仓库)工具安装使用命令行选项及构建、共享和运行容器化应用程序

    👧个人主页:@小沈YO. 😚小编介绍:欢迎来到我的乱七八糟小星球🌝 🔑本章内容:Docker工具安装使用、命令行选项及构建、共享和运行容器化应用程序时的主要步骤 记得 评论📝 +点赞👍 +收藏😽 +关注💞哦~ 提示:以下是本篇文章正文内容,下面案例可供参考 以下是在常

    2024年02月05日
    浏览(62)
  • windows部署python项目(以Flask为例)到docker,通过脚本一键生成dockerfile并构建镜像启动容器

    这里使用 pipreqs 进行依赖库的识别。使用 pipreqs 可以自动检索到当前项目下的所有组件及其版本,并生成 requirements.txt 文件。相比直接用pip freeze 命令,避免将整个python环境的依赖包写入。 在项目的当前目录中执行 pipreqs ./ --encoding=utf8 --force 这里使用的是一个基于flask项目,

    2023年04月08日
    浏览(50)
  • Idea使用Docker插件实现maven打包自动构建镜像

    Docker 开启TCP 服务 改写以下内容 重启服务 此时docker已经开放了2375端口,使用外部主机访问 http://docker:2375/info IDEA 集成Docker 安装Docker 插件 配置docker服务地址 点击view-services,打开docker的操作面板 双击docker01可以看到此docker服务下镜像和容器 右击docker镜像,可以创建新的容器,

    2024年02月10日
    浏览(49)
  • SpringBoot + Docker 实现一次构建到处运行~

    图片 Docker 作为一种新兴的虚拟化方式,它可以更高效的利用系统资源,不需要进行硬件虚拟以及运行完整操作系统等额外开销。 传统的虚拟机技术启动应用服务往往需要数分钟,而 Docker 容器应用,由于直接运行宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚

    2024年02月14日
    浏览(29)
  • SpringBoot + Docker 实现一次构建到处运行

    一、容器化部署的好处   Docker 作为一种新兴的虚拟化方式,它可以更高效的利用系统资源,不需要进行硬件虚拟以及运行完整操作系统等额外开销。 传统的虚拟机技术启动应用服务往往需要数分钟,而 Docker 容器应用,由于直接运行宿主内核,无需启动完整的操作系统,因

    2024年02月06日
    浏览(32)
  • Docker 如何实现非root用户构建httpd镜像以及遇到的问题有哪些

    由于公司云平台,一般的web组件。不允许用root用户来部署相关应用程序。所以只能编写dockerfile先构建镜像,然后再部署到云平台(kubenetes集群),主要从安全问题来考虑的。还有本来我这个职位职责是管理租户应用问题,但是测试机器没部署。只能自己找镜像,写file部署。

    2023年04月09日
    浏览(76)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包