docker

基础使用

参考链接:

打包镜像至阿里云

参考链接:

有这么个需求,我想把一些工具打包至镜像中,不然每次用云主机的时候都得部署,太麻烦了。所以我下载了一个基础的 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

--mountreadonly是可选项,加了代表该文件是只读权限,挂载到容器内部后,即使容器内部是root权限也无法修改该文件内容。

从参考链接上看,docker没有提供给正在运行的容器挂载文件的选项。看文章貌似方式很多:

  1. 先把容器停掉,并将其commit 为一个新的 image,然后运行新的 image挂载
  2. sshfs

目前我用的是第一种方法。

本博客虽然很垃圾,但所有内容严禁转载
原文地址:https://www.cnblogs.com/ahtoh/p/15670601.html