docker基本使用
本文最后更新于:2022-10-20 20:44
基础使用
参考链接:
- https://www.myfreax.com/how-to-remove-docker-images-containers-volumes-and-networks/
打包镜像至阿里云
参考链接:
- https://www.cnblogs.com/jackadam/p/9528448.html
有这么个需求,我想把一些工具打包至镜像中,不然每次用云主机的时候都得部署,太麻烦了。所以我下载了一个基础的 Ubuntu 镜像,里面放一点自己常用的工具。放上工具之后,我想将这个运行的容器打包成镜像,然后上传至阿里云镜像服务中,所以便有了这一节。
首先将运行的容器暂停并打包成镜像。
1 | |

选项说明:
- -a:提交镜像的作者
- -p:在commit时,将容器暂停
- -m:提交时的文字说明
在打包成镜像之后,接下来就是将镜像上传至阿里云镜像服务中。登录阿里云后,搜索容器,找到镜像服务,点击进入到容器镜像服务页面。
在实例列表中点击个人实例,进入到个人实例-概览页面。选择地域,这些东西一般是离你越近越好。然后选择镜像仓库,创建镜像仓库。在镜像仓库名称创建前,还要新建个命名空间。信息填写完成后,点击“下一步”,在代码源选项框中,选择本地仓库,点击创建镜像仓库。
创建完成后,会自动跳转到仓库基本信息页面,里面有操作指南,包括登录(密码是阿里云登录密码)、拉取和推送。

打完收工!

docker删除镜像
删除镜像前需要先将依赖于该镜像的容器删掉,而如果要删掉该容器,则需要先将该容器停止。
1 | |
容器停止后进行删除。
1 | |
删除容器后,进行镜像删除。
1 | |
文件挂载
参考链接:
- https://segmentfault.com/q/1010000020514283
docker文件挂载有两个参数,一个是-v,一个是--mount。(xxx
是省略内容)
1 | |
--mount的readonly是可选项,加了代表该文件是只读权限,挂载到容器内部后,即使容器内部是root权限也无法修改该文件内容。
从参考链接上看,docker没有提供给正在运行的容器挂载文件的选项。看文章貌似方式很多:
- 先把容器停掉,并将其commit 为一个新的 image,然后运行新的 image挂载
- sshfs
目前我用的是第一种方法。
错误处理
OCI runtime create failed
参考链接:
- https://www.jianshu.com/p/417044976e3e
- https://www.cnblogs.com/forward-wang/p/10937000.html
报错错误:
1 | |
这个错误是在复现docker脏牛漏洞逃逸时,执行docker-compose run dirtycow /bin/bash命令时候爆的错误。
报错原因:docker版本过高,内核版本过低造成。 解决办法:降低docker的版本或升级内核版本。
卸载docker
参考链接:
- https://cloud.tencent.com/developer/article/1541011
安装docker-compose
1 | |
也可以使用pip安装。