关于“有目录挂载/无目录挂载”容器保存为镜像

无容器目录挂载

1、也就是说宿主机未与容器进行路径映射,故我们可以直接使用指令:docker commit 容器名称/容器ID 镜像名:标签号,把容器保存为镜像;(其中镜像名和标签号是我们随机取的,新镜像名以及我们的标签号!)

2、我们在不能判断容器与宿主机存在目录挂载/路径映射之前,我们可以使用指令:docker inspect --format='{{.Mounts}}' 容器名(其中,这个容器名为我们要测试的容器名)

有容器目录挂载

1、首先,我们存在容器目录挂载的容器在保存为新镜像时,里面的数据全部会被抛弃,不会保存在新镜像中,故我们不能像上面那样直接使用指令进行保存为镜像;

2、解决方法:我们可以先把与容器A进行了目录挂载/路径映射的宿主机相应目录下的文件拷贝到另外的一个备份文件夹,然后再把容器A保存为新镜像后,使用新镜像创建容器B并进行目录挂载/路径映射时,映射路径改为宿主机上的备份文件夹,这样以来,我们使用新镜像创建的容器B中就能有原来宿主机原路径下的数据!

3、指令如下:cp -rf /usr/local/project/ /usr/local/baseproject(其中/usr/local/project为原目录,/usr/local/baseproject为备份目录);
然后容器A保存为镜像:docker commit 新镜像名:标签号 使用新镜像创建容器B并与备份目录进行映射:docker run -id --name=容器B -p 8081:8080 -v /usr/local/baseproject:/usr/local/tomcat/webapps --privileged=true 新镜像名:标签号

docker常用指令总结:

-id:创建并运行一个守护式容器;
-it:创建并启动容器进入到容器命令行;
-v:进行宿主机目录与容器目录挂载/路径映射;
-p:宿主机端口与容器端口映射;
–name:为容器取名;
ls:查看当前路径下的文件列表;
cd /:转到根目录下;
cat:打开/查看文件;
echo hello,world>hello.html:创建好hello.html文件并输入“helloworld”到其中;
docker exec:进入容器中,并打开命令行终端
rm:删除
mkdir:用于创建文件夹
docker ps:查看正在运行的容器
docker ps -a:查看所有的容器
docker run -it:创建交互式容器并进入命令行
docker run -id:创建守护式容器(退出后不会关闭后台)并进入命令行
ctrl+p+q:退出不停止当前容器
systemctl daemon-reload:重载该配置文件(通常是配置国内加速器后)
systemctl restart docker:重启docker
–privileged=true 以特权的方式启动容器

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值