基础使用
参考链接:
打包镜像至阿里云
参考链接:
有这么个需求,我想把一些工具打包至镜像中,不然每次用云主机的时候都得部署,太麻烦了。所以我下载了一个基础的 Ubuntu 镜像,里面放一点自己常用的工具。放上工具之后,我想将这个运行的容器打包成镜像,然后上传至阿里云镜像服务中,所以便有了这一节。
首先将运行的容器暂停并打包成镜像。
docker commit -a "ahtoh" -p -m "nothing v0.1" 容器名称或id 打包的镜像名称:标签
选项说明:
- -a:提交镜像的作者
- -p:在commit时,将容器暂停
- -m:提交时的文字说明
在打包成镜像之后,接下来就是将镜像上传至阿里云镜像服务中。登录阿里云后,搜索容器
,找到镜像服务,点击进入到容器镜像服务
页面。
在实例列表
中点击个人实例
,进入到个人实例-概览
页面。选择地域
,这些东西一般是离你越近越好。然后选择镜像仓库
,创建镜像仓库。在镜像仓库名称创建前,还要新建个命名空间
。信息填写完成后,点击“下一步”,在代码源
选项框中,选择本地仓库
,点击创建镜像仓库
。
创建完成后,会自动跳转到仓库基本信息
页面,里面有操作指南,包括登录(密码是阿里云登录密码)、拉取和推送。
打完收工!
docker删除镜像
删除镜像前需要先将依赖于该镜像的容器删掉,而如果要删掉该容器,则需要先将该容器停止。
docker stop 容器id
docker stop $(docker ps -a -q) // 停止所有容器
容器停止后进行删除。
docker rm -f 容器id
docker rm -f $(docker ps -a -q) // 删除所有容器
删除容器后,进行镜像删除。
docker rmi 镜像id
文件挂载
参考链接:
docker文件挂载有两个参数,一个是-v
,一个是--mount
。(xxx 是省略内容)
docker run -xxx -v [宿主机绝对路径]:[容器内部绝对路径] xxxx
docker run -xxx --mount type=bind,source=[宿主机绝对路径],target=[要挂载到容器内部的绝对路径],[readonly] xxxx
--mount
的readonly
是可选项,加了代表该文件是只读权限,挂载到容器内部后,即使容器内部是root
权限也无法修改该文件内容。
从参考链接上看,docker没有提供给正在运行的容器挂载文件的选项。看文章貌似方式很多:
- 先把容器停掉,并将其commit 为一个新的 image,然后运行新的 image挂载
- sshfs
目前我用的是第一种方法。