2015-02-05

容器仓库

  • 仓库集中存放镜像的地方
  • 存放仓库的服务器叫做注册服务器,一个注册服务器可以存放多个仓库

利用registry镜像创建私有仓库

$docker pull registry

[root@king ~]# docker run -d -p 5000:5000 registry
0840ebd20aeab96c0569ff9082324b608efd4d431d0452396dc0e00e87194006
[root@king ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
0840ebd20aea        registry            "/entrypoint.sh /etc/"   4 seconds ago       Up 3 seconds        0.0.0.0:5000->5000/tcp   clever_shockley

#通过-v将镜像文件存放指定本地路径  -v  LOCAL_PATH:PATH_IN_CONTAINER
#Registry V2 默认路径为/var/lib/registry
$docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry  registry

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
registry            latest              0bb8b1006103        2 days ago          33.27 MB
ubuntu              latest              bd3d4369aebc        2 weeks ago         126.6 MB
#上传镜像
$docker tag ubuntu  king:5000/ubuntu
registry            latest              0bb8b1006103        2 days ago          33.27 MB
king:5000/ubuntu    latest              bd3d4369aebc        2 weeks ago         126.6 MB
ubuntu              latest              bd3d4369aebc        2 weeks ago         126.6 MB

#目前已经是V2版本
[root@king docker]# curl http://king:5000/v2/ubuntu/tags/list
{"name":"ubuntu","tags":["latest"]}

#列出所有库
curl king:5000/v2/_catalog
{"repositories":["ubuntu"]}

Docker数据管理

  • 容器管理数据方式:1.数据卷Data Volumes;2.数据卷容器Data Volumes Dontainers
  • 数据卷可以共享重用,修改立即生效,对镜像无影响,始终存在。
#以下创建了数据卷 /webapp
$docker run -d -P --name web -v /webapp training/webapp python app.py

#将宿主机/src/webapp 目录挂在到容器的/webapp,/src/webapp目录在命令执行时会自动创建
docker run -d -P --name web -v /src/webapp:/webapp training/webapp python app.py

#只读挂在
docker run -d -P --name webs2 -v /src/webapp:/webapp:ro training/webapp python app.py

#挂在单独文件读写
$docker run --rm -it -v ~/test.file:/test.file ubuntu /bin/bash

通过数据卷容器共享

#创建数据卷容器
$docker run -it -v /opt/data --name dbdata ubuntu

#使用数据卷容器
$docker run -it --volumes-from dbdata --name db1 ubuntu
$docker run -it --volumes-from dbdata --name db2 ubuntu

#--volumes-from 可以多次使用,或者传递性挂载
$docker run -it --volumes-from db2 --name db3 ubuntu

#--volumes-from 后面作为数据卷使用的容器,本身不需要处于运行状态即可使用

小结

  • Registry V2 HTTP API查询仓库清单 http://RegistryServerIP:5000/v2/_catalog
  • docker run -P 随机选取宿主机IP映射到容器IP
  • docker run -it -v HOST_PATH:CONTAINER_PATH ubuntu 挂载数据卷
  • 通过多个容器使用–volumes-from 同一个数据卷容器达到数据共享同步