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

 

原文地址:https://www.cnblogs.com/linuxboke/p/5674732.html