Docker容器技术--基础篇02

本文介绍了Docker容器中的数据卷概念,如何实现数据的持久化和共享,以及如何将本地镜像发布到阿里云和私有库,包括DockerRegistry的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Docker容器技术–基础篇02

Docker容器数据卷

什么是数据卷

卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System提供一些用于持续存储或共享数据的特性

容器与宿主机是隔离状态,在容器删除时其内部的所有数据都会删除,如果想要将容器内的数据导出到宿主机上,使用复制命令可以做到,但会非常麻烦。

卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷

数据卷的特点

  • 数据卷可在容器之间共享或重用数据
  • 卷中的更改可以直接实时生效
  • 数据卷中的更改不会包含在镜像的更新中
  • 数据卷的生命周期一直持续到没有容器使用它为止

数据卷的使用

  • 直接命令添加
    docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名
    	-v:挂载数据卷
    	--privileged=true:扩大容器的权限,以解决挂载目录没有权限的问题,使用该参数后,容器内的root拥有真正的root权限
    
  • 读写规则映射添加说明
    • 默认为读写:rw
    docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:rw 镜像名
    
    • 只读:ro
    docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:ro 镜像名
    
  • 卷的继承和共享
    • 首先容器1完成和宿主机的映射
    docker run -it  --privileged=true -v /mydocker/u:/tmp --name u1 ubuntu
    
    • 然后容器2继承容器1的卷规则
    docker run -it --privileged=true --volumes-from u1 --name u2 ubuntu
    

本地镜像发布

Docker支持将本地镜像发布到公有库或私有库,常见的公有库有阿里云等,私有库用于使用公有库不方便、涉及机密信息的场景。

本地镜像发布到阿里云

  1. 首先通过commit命令或者Dockerfile方法创建新的镜像
    docker commit [options] 容器名 [REPOSITORY:[:TAG]]
    
  2. 将本地镜像推送到阿里云
    • 选择控制台,进入容器镜像服务
    • 选择个人实例
      个人实例
    • 命名空间
      命名空间
    • 仓库名称
      仓库名称
    • 进入管理界面获得脚本
      管理界面
      脚本
    • 根据以上脚本将镜像推送到阿里云
  3. 将阿里云上的镜像下载到本地
    docker pull registry.cn-hangzhou.aliyuncs.com/xxx/myubuntu:1.1
    

本地镜像发布到私有库

有些情况下,使用Dockerhub、阿里云这样的公共镜像仓库可能不太方便,涉及机密的公司不可能提供镜像给公网,因此需要创建一个本地私人仓库供给团队使用,基于公司内部项目构建镜像。
Docker Registry是官方提供的工具,可以用于构建私有镜像仓库

  1. 下载镜像Docker Registry
    docker pull registry
    
  2. 运行私有库
    docker run -d -p 5000:5000  -v /dockerregistry/myregistry/:/tmp/registry --privileged=true registry
    默认情况,仓库被创建在容器的/var/lib/registry目录下,建议自行用容器卷映射,方便于宿主机联调
    
  3. 验证私有库上有哪些镜像
    curl -XGET http://192.168.1.3:5000/v2/_catalog
    
  4. 修改配置文件以支持http
    docker默认不允许http方式推送镜像,因此我们通过配置选项来取消该限制,修改后可重启docker
    vim命令新增如下内容:vim /etc/docker/daemon.json
    {
      "registry-mirrors": ["https://xxx.mirror.aliyuncs.com"],
      "insecure-registries": ["192.168.111.162:5000"]
    }
    注意:两个配置中间有个逗号!!!
    
  5. 将镜像推送到私有库
    docker push 192.168.1.3:5000/ubuntu:1.2
    
  6. 再次验证私有库上有哪些镜像
    curl -XGET http://192.168.1.3:5000/v2/_catalog
    
  7. pull到本地运行
    docker pull 192.168.1.3:5000/ubuntu:1.2
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值