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

news/2025/2/21 19:37:07/

项目场景及问题描述

本文做一个简单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等信息。
dockerimages
以上图为例,最新构建的镜像 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 可查看历史所有容器

dockerps

通常第一次用 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 镜像和容器的导入导出


http://www.ppmy.cn/news/652206.html

相关文章

CSS知识点汇总(七)

文章目录 1. 什么是响应式设计&#xff1f;响应式设计的基本原理是什么&#xff1f;如何进行实现&#xff1f;1、什么是响应式设计2、实现方式3、响应式布局优缺点 1. 什么是响应式设计&#xff1f;响应式设计的基本原理是什么&#xff1f;如何进行实现&#xff1f; 1、什么是…

凯立德升级教程

凯立德升级教程 第一步&#xff1a;鼠标点击此链接&#xff1a;https://down.360safe.com/360eyun/360eyun_setup.exe 必须下载安装好360安全云盘客户端。 第二步&#xff1a;安装好360安全云盘客户端之后&#xff0c;用我们提供的帐号密码登录进去&#xff0c;如下图&#…

凯立德导航 版本号意义解读

凯立德导航 版本号意义解读 J和W的区别 例如J09和W09&#xff0c;J09一般用于手持机和普清机器&#xff0c;W09是车机专用的&#xff0c;可以配合车机版实现一些车机专有的功能 凯立德导航系统各版本号是怎样编码、分类的&#xff1b;各字符和数字是什么含义。 新版凯立德主程…

【地图知识】城际通+凯立德+高德 各地图的介绍和比较.让你更清楚的了解地图

http://www.xici.net/#u16193481/d88258571.htm 当前,中国取得导航电子地图资质的有:四维图新,高德,灵图,畅想,瑞图万方,武汉吉奥,凯立德,易图通,这八家企业.这其中,凯产德,武汉吉奥不产生图,灵图,畅想,易图通不以生产国内数据为主,而真正的从事地图及数据采集生产的是四维,高德…

凯立德2011夏季版地图2521J/W08--瘦身

附&#xff1a;凯立德新地图文件瘦身减肥方法 &#xff08;从全国地图瘦身为只含江浙沪两省一市&#xff0c;可减掉约500M空间。小卡需酌量&#xff0c;大卡不计较。&#xff09; 可根据自己的需要&#xff0c;删减自己不用的地图文件&#xff0c;可节省占用空间。 地图文…

C系新版凯立德推荐版本G1036

最近T系、C系的凯立德出了N多个版本&#xff0c;加上新版地图&#xff0c;杂交版本多得很&#xff0c;其实用来用去&#xff0c;稳定的版本就那么一两个。听俺粗粗地道来&#xff1a; 说明&#xff1a;这个版本比较稳定&#xff0c;但地图是2007年的&#xff0c;解决了G11745的…

MyBatis 插入和查询动态表名中的数据

一、背景说明 有些业务场景&#xff0c;需要对表进行了分表操作&#xff08;如&#xff1a;按天分表&#xff0c;test_20220123&#xff0c;test_20220124&#xff09;。 分表后&#xff0c;如何对分表进行动态传入表名&#xff0c;进行插入和查询数据呢&#xff1f; 二、解决…

2022冬季版凯立德完整版

这2022冬季版凯立德完整版 2022年凯立德移动导航系统C-Car版 2022年凯立德移动导航系统C-Car版 2022冬季版凯立德完整版 链接&#xff1a;https://pan.baidu.com/s/1Xwl9S25qCL4ag71b-_BZrw 提取码&#xff1a;1111* 凯立德C3261-C7P16-3N21J28冬季版 2020年12月29日最新更新…