zoukankan      html  css  js  c++  java
  • docker仓库及数据卷

    docker help rmi, 删除本地镜像

    docker run -it --name=centos centos:latest /bin/sh  --name的选项可以方便我们以后引用此image,直接使用此处定义的名字

    就可以了

    docker stop 停止一个容器,建议用此方法而不用docker kill

    docker logs centos centos是给image起起的名字,能够输出过去image中的输出信息

    docker start 启动一个已经停止的容器

    docker help attach, Attach to a running container

    创建一个本地仓库:yum install docker-registry

    service docker-registry start  启动服务,ss -tnl查看5000端口是否启动

    docker tag 2b8fd9751c4c 192.168.204.135:5000/busybox:1  tag命令可以使用docker help tag获取使用帮助,2b8fd9751c4c

    image ID192.168.204.135:5000/busybox指定仓库和连接端口,1指定TAG

    docker push 192.168.204.135:5000/busybox:1上传image到仓库

    此时会报错:unable to ping registry endpoint https://192.168.204.135:5000/v0/

    vim /etc/sysconfig/docker 修改docker配置文件:

    ADD_REGISTRY='--add-registry 192.168.204.135:5000'

    INSECURE_REGISTRY='--insecure-registry 192.168.204.135:5000'

    此时就可以上传成功了

    Docker的数据卷:Data Volume

    数据卷是供一个或多个容器使用的文件或目录,有多种特性:

    可以共享于多个容器之间

    对数据卷的修改会立即生效

    对数据卷的更新与镜像无关

    数据卷会一直存在

    使用数据卷的方式:

    (1) -v  /MOUNT_POINT

     默认映射的宿主机路径: /var/lib/docker/volumes/

     使用-v标记来创建一个数据卷并挂载到容器里

    (2) -v  /HOST/DIR:/CONTAINER/DIR

    /HOST/DIR: 宿主机路径

    /CONTAINER/DIR :容器上的路径

    加载主机的目录到容器的目录,主机的目录必须是绝对路径,如果目录不存在,docker会自动为你创建它

    例如:docker run -it -v ~/datavolume:/data centos /bin/bash

    此后你在容器/data目录下的修改会保存到宿主机的/datavolume目录下

    docker run -it --rm -v ~/datavolume:/data:ro centos:latest /bin/bash

    :ro的作用为创建的数据卷在容器中只读

    (3) 在Dockerfile中使用VOLUME指令定义

    数据卷容器:命名的容器挂载数据卷,其它容器通过挂载这个容器实现数据共享,挂载数据卷的容器就叫做数据卷容器

    使用方法

    (1):docker run -it --name centos1 -v ~/datavolume:/data centos:latest /bin/bash 创建一个命名的容器,在/data下创建一些文件,退出容器

    (2)docker run -it --volumes-from centos1 centos /bin/bash 查看/data目录,还可以启动多个容器,来共享卷,即使删除了数据

    卷容器,关在数据卷的其他容器仍然可以访问挂载数据卷的目录,并修改

    在容器之间共享卷:

    --volumes-from=[]      Mount volumes from the specified container(s)

    后跟容器名

    删除卷:docker rm -v container_name 删除容器的同时删除其卷(如果还有其他容器在使用此卷,这卷不会被删除)

    数据卷的备份:

    docker run --volumes-from centos -v /tmp:/tmp --name centos1 centos tar cvf /tmp/centos.tar /data

    第一个centos是一个正在运行的容器的名字,第一个/tmp表示将centos中的数据卷备份到宿主机的/tmp目录下,第二个/tmp表示同时将数

    据卷备份到centos1这个容器的/tmp目录下,tar cvf /tmp/centos.tar 表示备份到宿主机下的/tmp并以centos.tar这个格式存放,/data指定

    centos中存放数据卷的目录,可以同时指定多个目录

    数据卷的恢复:

    先创建一个带有数据卷的容器:docker run -it --name centos1 -v /tmp:/tmp centos /bin/bash

    启动另一个容器并恢复docker run -it --volumes-from centos1 -v /data/volume:/data centos tar xvf /tmp/centos.tar;/bin/bash

    /data/volume指的是恢复到宿主机的目录,/data是容器的目录,tar xvf /tmp/centos.tar指的是centos1上备份数据卷的目录

    注意docker数据卷本质上是存在于宿主机的文件系统中,可以是目录也可以使文件

    使用brctl show 命令可以看见docker创建的桥,一般叫docker0

     

  • 相关阅读:
    Dockerize a .NET Core application
    Images之管理image
    Images之Dockerfile中的命令2
    Images之Dockerfile中的命令1
    Docker Builders:Builder pattern vs. Multi-stage builds in Docker
    Images之multi-stage builds
    Images之base image
    Images之Dockerfiles
    Docker 开发最佳实践
    Docker 开发概述
  • 原文地址:https://www.cnblogs.com/linuxboke/p/5674732.html
Copyright © 2011-2022 走看看