Docker数据管理与搭建私有仓库

1 Docker数据卷

特点

  • 数据卷存在于宿主机的文件系统中,独立于容器,与容器的生命周期是分离的。
  • 数据卷可以是目录,也可以是文件,容器可以利用数据卷与宿主机进行数据共享,实现容器间的数据共享和交换。
  • 容器启动初始化时,如果容器使用的镜像包含了数据,这些数据会拷贝到数据卷中。
  • 容器对数据卷的修改是实时进行的。
  • 数据卷的变化不会影响镜像的更新。数据卷独立于联合文件系统,镜像基于联合文件系统。镜像与数据卷之间不会相互影响。

1.1 Docker挂载容器数据卷

  • bind mounts:将宿主机上的一个文件或目录挂载到容器上
  • volumes:由Docker创建管理
  • tmpfs mounts:

1.1.1 bind mounts

  • 方式一:-v 宿主机文件或目录路径:容器文件或目录路径
    • docker run -dti -v /root/host_dir:/root/c_dir REPOSITORY
  • 方式二:–mount type=bind, src=宿主机文件或目录路径, dst=容器文件或目录路径
    • docker run -dti --mount type=bind, src=/root/host_dir, dst=/root/c_dir REPOSITORY
    • src文件或目录必须存在

1.1.2 volumes

  • 方式一:-v VOLUME-NAME:容器文件或目录路径
  • 方式二:–mount type=volume, src=VOLUME-NAME, dst=容器文件或目录路径
  • volume对象管理:
    • 创建数据卷对象:docker volume create
    • 查看数据卷信息:docker volume inspect
    • 查看已创建的数据卷:docker volume ls
    • 删除未使用的数据卷:docker volume prune
    • 删除一个或多个数据卷:docker volume rm

1.1.3 tmpfs mounts

  • –mount type=tmpfs, dst=PATH

1.1.4 共享其他容器的数据卷

  • docker run -dti --volumes-from CONTAINER REPOSITORY

1.2 数据卷使用注意事项

  • 如果挂载一个空的数据卷到容器中的一个非空目录中,那么这个目录下的文件会被复制到数据卷中。(有助于初始化数据卷内容)
  • 如果挂载一个非空的数据卷到容器中的一个目录中,那么容器中的目录会显示数据卷中的数据。如果容器中的目录中有数据,那么这些原始数据会被隐藏。

2 Docker仓库

2.1 搭建无认证私有仓库

  • 第一步,在需要搭建仓库的服务器上安装docker
  • 第二部,在服务器上,从docker hub上系在registry仓库
    • dcoker pull registry
  • 第三步:在服务器上,启动仓库
    • docker run -dti --restart always \--name my-registry -p 8000:5000 -v /my-registry/registry:/var/lib/registry registry
    • 注意:registry内部对外开放的端口是5000。默认情况下,镜像会存放与容器内的/var/lib/registry目录下,如果容器被删除,则存放于容器中的镜像也会丢失。

2.1.1 上传镜像

  • 第一步,利用docker tag重命名需要上传的镜像
    • docker tag IMAGE 服务器IP:端口/IMAGE_NAME
  • 第二步,利用docker push上传重命名的镜像
    • docker push 服务器IP:端口/IMAGE_NAME
  • 注意:如果push出现https报错,需要配置/etc/docker/daemon.json文件,添加以下内容:“insecure-registries”:[“服务器IP:PORT”],然后重启docker

2.1.2 下载镜像

  • docker pull 服务器IP:端口/IMAGE_NAME

2.2 搭建带认证私有仓库

  • 第一步,删除无认证的仓库容器
    • docker rm -f my-registry
  • 第二步,创建存放用户名和密码的文件
    • mkdir /myregistry/auth -p
  • 第三步,创建密码验证文件。注意将USERNAME和PASSWORD替换为设置的用户名和密码。
    • docker run --entrypoint htpasswd registry -Bbn USERNAME PASSWORD > /my-registry/auth/htpasswd
  • 第四步,重启仓库镜像
docker run -d \
-p 8000:5000 \
--restart=always \
--name docker-registry \
-v /my-registry/registry:/var/lib/registry \
-v /my-registry/auth:/auth \
-e "REGISTRY_AUTH=htpasswd" \
-e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
-e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd"  \
registry

2.2.1 上传、下载镜像

  • 第一步,登陆到服务器
    • docker login -u USERNAME -p PASSWD 服务器IP:PORT
  • 第二步,执行pull或push命令
  • 第三步,退出登陆
    • docker logout 服务器IP:PORT
  • 查看仓库中已有镜像:
    • 访问:服务器IP:PORT/v2/_catalog
  • 16
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值