docker commit 将容器转换成镜像
- 可以把容器转换成镜像
- 镜像没有写入权限,但可以通过修改容器把容器制作成新镜像
- 启动容器后,就给容器提供了一个可写层,
- 在容器里,可安装软件,可创建文件 ...
- 转换成镜像,之后别人启动你的新制作镜像,就有了你操作的一切
- $
docker run -it --name myalpine alpine /bin/sh
- $
cd root/
- $
ls
- $
echo xxx > aaa.txt
- $
cat aaa.txt
- $
exit
- $
- 将 myalpine 容器制作成镜像
- $
docker commit myalpine myalpine
- 格式: $
docker commit 容器id/容器name 新镜像名称
- $
- 这样就实现了将容器转换成镜像 myalpine
导出导入镜像文件(压缩和解压)
-
导出:$
docker save 555553322xs > myalpine.tar
- 语法:$
docker save 镜像id > 压缩包名称
- 语法:$
-
导入,别人解压使用: $
docker load < myalpine.tar
- 这时候解压缩了,但是没有名称,没有tag,打tag和加名称处理
- $
docker tag imageId myalpine:v1.0.0
- 语法 $
docker tag imageId 名称:标签
- 继续使用 ...
docker cp 实现数据的拷贝
- 将主机 /www/xxx 目录拷贝到容器 myalpine 的 /root 目录下
- 先将容器运行起来
- $
docker run -it -d --name mycentos imageId /bin/bash
- 进入 mycentos容器中的 /root 目录 ls 以下
- $
- 开始复制,从物理机到容器
- 语法: $
docker cp 本地目录 容器id:目录
- $
docker cp /www/xxx 容器id:容器路径
- 容器id:容器路径 例如: c5ff8b002432:root
- 进入 docker 容器内部,查看
- $
docker exec -it mycentos /bin/bash
- $
cd /root
, 之后ls
- 发现多了 xxx 目录
- $
- 语法: $
- 拷贝文件到容器并且重命名
- $
docker cp /root/aaa 容器id:root/bbb
- 将 aaa 拷贝到容器中,并修改成 bbb
- $
- 同样,也可将容器中的目录拷贝到物理机上
- $
docker cp c5ff8b002432:root/a.txt /root
- 这里将容器内的 root/a.txt 文件拷贝到 物理机的 /root 目录
- $
- 将物理机当前目录中的所有文件复制到 容器目录内的aaa目录
- $
docker cp . c5ff8b002432:root/aaa
- $
查看 docker 操作日志
- 进入容器: $
docker run -it --name mycentos c5ff8b002432 /bin/bash
- $
touch aa.txt
执行命令
- $
- $
exit
会停止容器 - 退出不停止容器,ctrl + p + q
- $
docker ps
- 显示容器还在运行
- 查看容器中刚才运行的命令
- $
docker logs c5ff8b002432
可以看容器的操作日志
- $