docker下载镜像&新建容器&打包容器&打包tar&加载tar

it2024-04-11  46

首先查看下现有的容器和image

docker ps #已启动的所有容器 docker ps -a #所有容器,包括未启动的 docker images #当前已有的镜像

一、查找images

例:查找nvidia相关的image 

[root@localhost ~]# docker search -s 10 nvidia Flag --stars has been deprecated, use --filter=stars=3 instead NAME DESCRIPTION STARS OFFICIAL AUTOMATED nvidia/cuda CUDA and cuDNN images from gitlab.com/nvidia… 699 nvidia/digits DEPRECATED 70 nvidia/caffe DEPRECATED 39 nvidia/cudagl CUDA + OpenGL images from gitlab.com/nvidia/… 24 nvidia/opengl OpenGL images with libglvnd from Nvidia 24 nvidia/k8s-device-plugin Images for github.com/NVIDIA/k8s-device-plug… 22 nvidia/cuda-ppc64le CUDA and cuDNN images from gitlab.com/nvidi… 14 nvidia/opencl OpenCL images from gitlab.com/nvidia/opencl 14 nvidia/driver Driver images from https://gitlab.com/nvidia… 12

参数说明:

NAME: 镜像仓库源的名称

DESCRIPTION: 镜像的描述

OFFICIAL: 是否 docker 官方发布

stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。

AUTOMATED: 自动构建。

二、下载images

docker pull [OPTIONS] NAME[:TAG|@DIGEST] //拉取一个或多个镜像使用docker pull,如果没有指定镜像标签,docker默认使用:latest //下面的示例命令就会拉取最新的镜像文件,等同于:docker pull debian:latest

参数说明:

-a :拉取所有 tagged 镜像--disable-content-trust :忽略镜像的校验,默认开启

例子:pull 一个nvidia/drive的镜像

[root@localhost data]# docker pull nvidia/drive Using default tag: latest latest: Pulling from nvidia/dcgm-exporter a1125296b23d: Pull complete 3c742a4a0f38: Pull complete 4c5ea3b32996: Pull complete 1b4be91ead68: Pull complete e93a0823362a: Pull complete a7548f29ba00: Pull complete a4a3c4393c19: Pull complete f6d9edaa5238: Pull complete Digest: sha256:69403133a54b9600337cb052cc2aafd38192f3a644a79542e4fa92a487cd3ccf Status: Downloaded newer image for nvidia/drive:latest docker.io/nvidia/nvidia/drive:latest [root@localhost data]#

三、利用images新建容器

docker run -itd --name face001 -p 3306:3306 --cap-add SYS_ADMIN --privileged face:V1 /usr/sbin/init #run -itd 创建容器并运行于后台,进入容器控制台 #--name face001 将容器命名为face001 #-p 3306:3306 容器映射端口(【端口映射】-p 3306:3306 宿主机端口:容器端口) #--cap-add SYS_ADMIN 添加系统权限SYS_ADMIN #-privileged 特权容器(特权容器拥有所有的capabilities) #face:V1 创建容器的镜像image #执行/usr/sbin/init

参数说明:

-d, --detach=false 指定容器运行于前台还是后台,默认为false -i, --interactive=false 打开STDIN,用于控制台交互 -t, --tty=false 分配tty设备,该可以支持终端登录,默认为false

-p, --publish=[] 指定容器暴露的端口(【端口映射】-p 3306:3306 宿主端口:容器端口)

-w, --workdir="" 指定容器的工作目录 -c, --cpu-shares=0 设置容器CPU权重,在CPU共享场景使用

-m, --memory="" 指定容器的内存上限

--cap-add=[] 添加权限,权限清单详见:http://linux.die.net/man/7/capabilities

--privileged=false 指定容器是否为特权容器,特权容器拥有所有的capabilities

--name="" 指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字

创建完成后可以输入docker ps查看是否已经运行

[root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4dfd419d3adc face "/usr/sbin/init" 20 hours ago Up 20 hours 0.0.0.0:3306->3306/tcp face001

此步骤完成后便可进入容器进行需求环境部署,部署完成后则可以继续下面的步骤

进入容器命令:docker exec -it 4dfd419d3adc bash  

四、打包容器为image

完成创建容器和环境部署工作后就可以将当前容器打包成新的image以方便移植部署

docker commit -a "luck-lyj" -m "commit-test" 7740db56288a face:v1 #打包命令

参数说明:

格式如:docker  commit  -a  -m  现有容器ID   

commit参数进行保存镜像,

-a 提交人的姓名  

-m “提交内容”,

保存后的 名称:版本号(自定义)

查看生成后的image

docker images

五、打包成tar

docker save -o face_v1.tar face:v1

参数说明:

save 保存到当前路径

-o 打包后的tart包名称

对应打包的image 名字:TAG

备注:建议打包成tar后再次使用压缩工具打包成 /.tar.gz/zip/rar 包,可以压缩较大程度上减少文件大小

六、加载tar

docker load -i  face_v1.tar

然后查看是否存在该镜像

docker images

七、给自己鼓掌

恭喜恭喜!!!

 

最新回复(0)